-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathREFERENCIAS CAPITULO II (3 A 22)
41 lines (20 loc) · 12.6 KB
/
REFERENCIAS CAPITULO II (3 A 22)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
NOTA 3: Uno de los puntos que sobresalieron durante el trámite del pleito fue si la librería de software estándar de Java, que es uno de los componentes de la plataforma Java (más específicamente de lo que se conoce como ambiente de ejecución o en inglés “run-time environment”) formaba parte o no del lenguaje de programación Java, y a su vez, si la implementación de un lenguaje de programación debía ser protegido como un programa de computación bajo las leyes de derechos de autor de EE.UU. Las partes no estuvieron de acuerdo al respecto.
NOTA 4: Podría decirse que cada lenguaje de programación posee su propia sintaxis. Así, el lenguaje de programación Java posee su propia sintaxis. La sintaxis constituye las “reglas” establecidas que deben seguirse, ya que de cualquier otra forma se producirían errores o simplemente lo escrito en código fuente en dicho lenguaje no produciría ningún resultado. Podría asimilárselo a reglas gramaticales. La diferencia radica en que un compilador (que es otro programa de computación) sólo podría entender una sintaxis correcta del código escrito, por ello si la sintaxis no es correcta el compilador -o el intérprete dependiendo del tipo de lenguaje implementado- no sería capaz de entender lo escrito, y, por tanto, o produciría un error o no arrojaría resultado alguno. Entonces, la sintaxis de Java posee varios elementos como ser (i) separadores (por ejemplo {;}, ;) (ii) palabras claves (por ejemplo: if, else, while, return), (iii) valores literales (por ejemplo, ´x¨, Foo), (iv) operadores (por ejemplo *, /, +, -) etc. Entonces cuando se vean “estos símbolos” en el presente trabajo se trata de la sintaxis del lenguaje de programación Java.
NOTA 5: Código fuente constituye la versión del programa de computación que es legible para un ser humano.
NOTA 6: Véase en “Brief of former Sun Microsystems executive Scott McNealy as amicus curiae in support of Oracle. How Java Works. https://www.supremecourt.gov/DocketPDF/18/18956/133505/20200219153012820_Brief.pdf
NOTA 7: The Java® Virtual Machine Specification Java SE 14 Edition. February 2020. https://docs.oracle.com/javase/specs/jvms/se14/jvms14.pdf
NOTA 8: Sun Microsystems, Inc. fue adquirida por Oracle Corporation en el mes de enero del año 2010, y por ende Oracle adquirió todos los derechos que su antecesor Sun Microsystems poseía sobre Java.
NOTA 9: Por su parte, cada una de estas ediciones de la plataforma Java contiene su ambiente de desarrollo JDK, su compilador Java, su máquina virtual Java, su set de librerías de software estándar de Java, y la documentación describiendo las funcionalidades y operación específica de cada una de las ediciones de la plataforma Java. Si bien existen similitudes en cada una de estas ediciones de Java, una de las diferencias entre ellas es que cada edición de la plataforma Java posee una librería de software estándar diferente, y ello responde al tipo de aplicaciones y de ambientes por el cual cada edición es enfocada.
NOTA 10: Ver referencia nro. 4
NOTA 11: Véase Real Academia Española: 1. tr. Volver a escribir lo ya escrito introduciendo cambios. 2. tr. Volver a escribir sobre algo dándole una nueva interpretación. https://dle.rae.es/reescribir
NOTA 12: De todos los elementos que conforman la plataforma Java, el juicio entre las partes se refiere únicamente a aspectos de la librería de software estándar de Java o librería de clases.
NOTA 13: Véase por ejemplo la versión 7 en https://docs.oracle.com/javase/7/docs/api/
NOTA 14: El concepto de “pre-escritos” cuando se refiere a programas de computación implica que la funcionalidad ya fue desarrollada o escrita, en este caso lo fue por Sun Microsystems, y que dicha funcionalidad se encuentra disponible para su utilización, como parte de una librería de software, en el caso Java. Normalmente una librería de software contiene una serie de rutinas y subrutinas pre-compiladas disponibles para que los programadores pueden reutilizar mediante técnicas, dependiendo el lenguaje, de vínculos dinámicos o estáticos, para así de ésta forma incorporarlas o importarlas a su programa en construcción.
NOTA 15: Existen dos tipos de paquetes en Java: Los llamados a) built-in packages que son los paquetes pre-escritos que vienen incluidos en la librería de clases de Java y, los conocidos como b) user-defined packages que son los paquetes que pueden ser creados o escritos por los propios programadores.
NOTA 16: Conforme a las constancias del juicio, Google argumentó durante el trámite del pleito que ciertos paquetes de Java eran necesarios para utilizar el lenguaje de programación Java, y que sin ellos el lenguaje Java fallaría. Esto fue usado por Google para reforzar su teoría de que los paquetes de Java eran parte del lenguaje de programación Java. Oracle lo negó, y conforme palabras del Juez William Alsup, Oracle reconoció que sólo ciertos paquetes de Java eran necesarios para el correcto funcionamiento del lenguaje Java. Los paquetes reconocidos en el juicio por Oracle como necesarios son tres (3), los cuales incluyen unas 62 clases aproximadamente. Estos son: java.lang, java.io, y java.util. Así se dijo por el juez de la Corte del Distrito de California, William Alsup que “The original Java Standard Edition Platform (“Java SE”) included “eight packages of pre-written programs.” The district court found, and Oracle concedes to some extent, that three of those packages—java.lang, java.io, and java.util—were “core” packages, meaning that programmers using the Java language had to use them “in order to make any worthwhile use of the language.” Véase que en la versión inicial de Java SE (1996) existían 8 paquetes de Java, y en el año 2008 dos años antes de iniciarse el litigio había 166 paquetes, con más de 600 clases agrupadas, y más de 6000 métodos. Esto muestra de alguna forma la evolución de Java SE. De estos 166 paquetes de Java sólo 37 paquetes (de la edición de Java2SE 5.0) son sobre los que Oracle expresa que Google habría infringido sus derechos. Estos paquetes son: java.awt.font, java.beans, java.io, java.lang, java.lang.annotation, java.lang.ref, java.lang.reflect, java.net, java.nio, java.nio.channels, java.nio.channels.spi, java.nio.charset, java.nio.charset.spi, java.security, java.security.acl, java.security.cert, java.security.interfaces, java.security.spec, java.sql, java.text, java.util, java.util.jar, java.util.logging, java.util.prefs, java.util.regex, java.util.zip, javax.crypto, javax.crypto.interfaces, javax.crypto.spec, javax.net, javax.net.ssl, javax.security.auth, javax. security.auth.callback, javax.security.auth.login, javax.security.auth.x500, javax.security.cert, and javax.sql. Como se verá oportunamente, en el “segundo juicio” que se refiere al análisis de uso justo o legítimo que mando a llevar adelante el Tribunal de Apelaciones del Circuito Federal, en su sentencia del 27 de marzo de 2018 se dictaminó basado en las prueba producida que sólo 170 líneas de código de dichos tres paquetes de Java (java.lang, java.io y java.util) eran obligatorias de ser usadas en el uso del lenguaje de programación Java. Al mes de mayo del 2021 la última versión es la Java SE 16 véase en https://www.oracle.com/java/technologies/javase-downloads.html.
NOTA 17: Véase en https://docs.oracle.com/javase/8/docs/api/ que contiene la Especificación de la API para la Plataforma Java Standard Edition 8 (SE) donde se listan los paquetes de Java, todas las clases y sus métodos. Como ejemplo entre los paquetes se encuentran: java.applet; java.awt, java.awt.color; java.awt.datatransfer; java.awt.dnd; java.awt.event, java.awt.font, java.awt.geom, java.awt.im, java.awt.im.spi, java.awt.image, java.awt.image.renderable java.awt.print, java.beans, java.beans.beancontext, java.io, java.lang, java.lang.annotation, java.lang.instrument, java.lang.invoke, java.lang.management, java.lang.ref, java.lang.reflect, java.math, java.net, java.nio, java.util, java.util.concurrent, java.util.concurrent.atomic. A su vez, dentro del paquete java.lang se encuentran las siguientes clases: Boolean, Byte, Character, Character.Subset, Character.UnicodeBlock, Class, ClassLoader, ClassValue, Compiler, Double, Enum, Float, InheritableThreadLocal, Integer,Long, Math, Number, Object, Package,Process, ProcessBuilder, ProcessBuilder.Redirect, Runtime, RuntimePermission, SecurityManager, Short, StackTraceElement, StrictMath, String, StringBuffer, StringBuilder, System, Thread, ThreadGroup, ThreadLocal, Throwable, Void. A su vez, los métodos incorporados y declarados dentro de la clase Math son entre ellos: abs(double a), cbrt(double a), cos(double a) y max(int a, int b). Así el método cos devuelve el valor trigonométrico de un ángulo y el método max devuelve el mayor valor de dos números. Así los parámetros del método max son: “Parameters: a - an argument. b - another argument. Returns: the larger of a and b”. El paquete de Java Java.lang, la clase de Java Math y el método de Java max incluídos en la versión de la Plafaforma Java SE en el pleito ha sido citado como ejemplo para ilustrarse lo que constituiría la declaración e implementación del método de Java java.lang.Math.max y la invocación o llamada a este método declarado, por parte del Juez de la Corte de Distrito de California, por del Tribunal de Apelaciones del Circuito Federal, por el Abogado General de EE.UU. y por la Corte Suprema de Justicia de los EE.UU.
NOTA 18: Esta es la razón por la cual a la librería de software de Java también se la denomina librería de clases.
NOTA 19: Oracle America, Inc., (Plaintiff) v. Google Inc. (Defendant). May, 31, 2012. No. C 10-03561 WHA, US District Court for The Northern District of California. Order RE Copyrightability of Certain Replicated Elements of the Java Application Programming Interface. “The Java language itself is composed of keywords and other symbols and a set of pre-written programs to carry out various commands such as printing something on the screen or retrieving the cosine of an angle. The set of pre-written programs is called the application programming interface or simply API (also known as class libraries)” Véase en https://cases.justia.com/federal/district-courts/california/candce/3:2010cv03561/231846/1202/0.pdf?ts=1376380463
NOTA 20: Véase en el escrito Brief of Amici presentado ante la Tribunal de Apelación del Circuito Federal (al respecto de la sentencia dictada por el Juez de Distrito del Norte de California) por Microsoft Corporation, EMC Corporation y NetAPP, INC a favor de la parte apelante (Oracle) con fecha 19 de febrero de 2013 “BRIEF FOR AMICI CURIAE MICROSOFT CORPORATION, EMC CORPORATION, AND NET APP, INC. IN SUPPORT O F APPELLANT, en la página 7 nota 3 se expresa textualmente lo siguiente: “As Oracle´s opening brief explains (at 21), the terminology used in the case is confusing. The Java software packages at issue here are called “Application Programming Interfaces”, or “API”. The term API is used in the software industry to describe a wide range of things, some of which are very simple and some of which are very complex, and each of which has different purposes and context. To provide clarity, amici refer to the computer programs here as “software packages” or “platforms”. Amici do not address APIs beyond the computer programs at issue here”. http://www.groklaw.net/pdf4/13-1021-70.pdf
NOTA 21: Véase la presentación realizada “Brief amici curiae of Eighty-Three Computer Scientists” de enero de 2020 https://www.supremecourt.gov/DocketPDF/18/18-956/128391/20200113145027664_18-956%20Google%20v%20Oracle%20Computer%20Scientists%20Merits%20Amicus%20FOR%20FILING.pdf
NOTA 22: Este procedimiento de reutilización de código es muy común en la construcción de programas, y cada lenguaje de programación implementado suele poseer una librería estándar. Esta posibilidad, de poder utilizar subprogramas pre-escritos para poder desarrollar o construir otros programas no es sólo una característica del lenguaje de programación Java, sino también de cualquier lenguaje de programación. Así en el lenguaje de programación C tenemos la librería estándar de C .libc que constituye la implementación de referencia de la especificación del lenguaje C conforme a la ISO C estándar https://en.wikipedia.org/wiki/C_standard_library, como también la implementación de software libre y de código abierto (FOSS) llamada glibc de GNU C Library (https://es.wikipedia.org/wiki/Glibc) En términos prácticos no haría sentido escribir código que esté disponible por la propia librería estándar del propio lenguaje de programación.