-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCAPITULO II LA TECNOLOGIA JAVA
148 lines (82 loc) · 11.7 KB
/
CAPITULO II LA TECNOLOGIA JAVA
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
CAPITULO II
LA TECNOLOGÍA JAVA
Temario. La plataforma Java y el lenguaje de programación Java. La librería de software estándar de Java. Los paquetes, clases y métodos de Java. Diagrama de una API de JAVA de Sun Microsystems (según la Corte Suprema de EE.UU. en su sentencia de abril 5 de 2021)
LA PLATAFORMA JAVA Y EL LENGUAJE DE PROGRAMACIÓN JAVA
Java, por un lado, constituye una plataforma de software que permite ejecutar programas de software escritos en el lenguaje de programación Java .
Y, por otro lado, Java es el lenguaje de programación mediante el cual un programador escribe código fuente en lenguaje Java.
La plataforma Java posee varios componentes, que son los siguientes:
(i) herramientas para asistir en el desarrollo de código fuente escrito en el lenguaje de programación Java (en inglés “Java development kit” o “JDK”),
(ii) el compilador de Java (en inglés “javac compiler”) que convierte declaraciones en lenguaje de programación Java en declaraciones de código byte de Java,
(iii) el ambiente de ejecución de Java (en inglés “runtime environment”) que consiste en:
(a) la máquina virtual de Java (en inglés “Java virtual machine” o “JVM ) diseñada para operar en distinto tipo de computadoras y sistemas operativos, y
(b) la librería de software estándar de Java o librería de clases de Java (Java standard library o class library o también denominada como “Java packages” o “API packages” en los escritos de las partes y resoluciones judiciales), y, por último
(iv) la documentación para cada una de las ediciones de la plataforma Java.
EL PRINCIPIO “WRITE ONCE, RUN ANYWHERE” (WORA)
Sun Microsystems, Inc desarrolló la plataforma Java Standard Edition (“Java SE”) juntamente con otras ediciones de la plataforma Java .
Su primera edición se publicó en el año 1996.
El objetivo de Sun Microsystems era que Java debía ser agnóstico a la tecnología sobre la cual se ejecutara el programa de computación escrito en Java, de manera tal que los programadores no tendrían que escribir diferentes versiones de programas de computación para diferentes sistemas operativos o hardware.
La máquina virtual de Java posee un rol principal en la plataforma Java.
Como se expuso anteriormente el lenguaje de programación Java -posee palabras, símbolos, más ciertas reglas sintácticas y semánticas que deben respetarse para crear instrucciones- es el lenguaje mediante el cual los programadores escriben código fuente, que es la versión de un programa de computación comprensible a los seres humanos.
Ahora bien, para que tales instrucciones creadas puedan ser ejecutadas o llevarse a cabo, deben convertirse (o compilarse) en código objeto, que consisten en 0 y 1 entendibles para una computadora en particular.
En Java, conforme a sus reglas, el código fuente primero se convierte en lo que se denomina código de bytes (o en inglés “bytecode”) que es un estadio intermedio antes de que se convierta en código objeto por la máquina virtual de Java.
Entonces, la plataforma Java a través de la utilización de la máquina virtual de Java permite a los desarrolladores escribir programas que son capaces de ejecutarse en diferentes computadoras o hardware sin tener que reescribir sus programas para cada tipo diferente de computadora.
Esto se conoció como el “write once, run anywhere” (WORA).
En definitiva, un programa escrito en Java podría correr o ejecutarse en cualquier sistema operativo o hardware, siempre que tuviese instalado la máquina virtual de Java.
LA LIBRERÍA DE SOFTWARE ESTÁNDAR DE JAVA . LOS PAQUETES, CLASES Y MÉTODOS DE JAVA
La librería de software estándar de Java contiene programas de computación “pre-escritos ” (denominados o conocidos en inglés como “buit in packages” ) los cuales pueden ser utilizados o no por los programadores para escribir sus propios programas de computación.
A su vez, la librería de software estándar de Java posee una estructura de organización que es la siguiente:
i) paquetes (en inglés “packages”) ;
ii) clases (en inglés “classes”); y
iii) métodos (en inglés “methods”).
Así, los paquetes están conformados por clases, y las clases se conforman por métodos.
Dicho de otra forma, los paquetes agrupan a las clases, y las clases agrupan a los métodos.
Este conjunto organizado de programas de computación pre-escritos (en inglés “pre-written programs” una forma habitual de denominar a los programas o subrutinas que constituyen o conforman las librerías de software en general) se lo ha denominado en el juicio , individualmente como aplicación de programación de interface o API, o colectivamente, como paquetes de API de Java.
Ahora bien, durante el litigio el significado de la terminología API no ha sido precisa, y esto ha sido reconocido por el Juez de la Corte de Distrito.
Así, una de las partes (Oracle) ha mencionado que el término API es un camaleón, ya que puede significar varias cosas, algunas simples y otras muy complejas .
Más allá de ello, en el juicio, las partes litigantes, los amicis curiae, y los magistrados intervinientes en las distintas instancias del proceso se han referido a API como:
(i) al conjunto de los 37 paquetes de Java;
(ii) a un paquete de Java en particular;
(iii) a las “declaraciones de las API de Java” por cuanto las API sólo estarían conformadas por las declaraciones de código (y no así por el código implementado), y
(iv) interfaces de software (Google y sus amicis curiae).
Para Google, y para varios de los Amici Curiae que han presentado opinión en el juicio a su favor, las API constituyen sólo el código fuente declarado (o en inglés “method headers”) , por ende, conforme su postura, sería redundante afirmar API y código declarado o declaraciones de las API de Java, ya que constituye lo mismo.
Véase en la referencia de más abajo el código fuente declarado y el código implementado.
En definitiva, la disputa judicial entre las partes se centra en:
(i) el “código fuente declarado” (en inglés “declaring code”) o “declaraciones” (en inglés “declarations”) o “métodos de encabezados” (en inglés “method headers”),
Y no en:
(ii) el “código fuente implementado” de las API de Java (por Sun Microsystems, el cual no fue copiado por Google, habiendo realizado Google su propia implementación para Android).
Continuando, los “métodos de Java” permiten a los desarrolladores construir otros programas de computación .
Los métodos de Java son una suerte de bloques de software que sólo pueden ejecutarse cuando son “llamados o invocados”.
Estas llamadas o invocación a los métodos de Java se efectúa bajo un “formato de comando” determinado (lo que significa que si no se utiliza dicho formato dado la invocación al código declarado no se puede producir).
La utilización de los “métodos de Java” tiene por finalidad la “reutilización de código” pre-escrito y disponible para ser utilizado por los programadores en la construcción de sus programas o aplicaciones con el lenguaje de programación Java.
Es decir que una vez declarado el método de Java puede ser utilizado infinidad de veces.
Para ilustrar el código fuente (el declarado y el implementado) de un método, clases, paquete de Java (esquema 1) y su invocación -a través de un comando con su respectivo formato (esquema 2)- se hace referencia al mismo ejemplo citado por el Juez de la Corte de Distrito del Norte de California, como sigue:
ESQUEMA 1 CÓDIGO FUENTE (ESCRITO EN LENGUAJE JAVA) DECLARADO E IMPLEMENTADO DE UN “MÉTODO DE JAVA”
package java.lang; (declaración del paquete java.lang)
public class Math { (declaración de la clase Math)
public static int max (int x, int y) { (declaración del método max)
if (x > y) return y; (implementación, devuelve x, o)
else return y; (implementación, devuelve y)
} (cierra el método)
} (cierra la clase)
En la declaración del método de Java max se puede ver que se comienza con la palabra public que significa que otros programas o métodos de Java fuera de la clase pueden llamar a ese método, ya que si en su lugar figurase private significaría que el método sólo estaría disponible para otros métodos agrupados dentro de la misma clase (pero no fuera de ella).
La palabra static significa que el método puede ser invocado sin la necesidad de tener que crearse una instancia de clase.
La palabra int significa que un número entero es devuelto por el método.
Por su parte max es el nombre del método.
Y finalmente (int x, int y) son los argumentos que necesariamente deben pasar por el método, estableciéndose que será en forma de número entero.
Por último, el marcador { es obligatorio.
La descripción del ejemplo obedece a las reglas propias del lenguaje de programación Java.
Por otra parte, para poder usarse dicho método de Java (max) por un programador en el desarrollo de su propio programa o aplicación, el programador debe invocar o llamar este método de Java (max) desde su programa en construcción.
Así, el programa del desarrollador deberá incluir mediante una llamada o invocación al método de Java bajo el formato de comando ya determinado.
ESQUEMA 2. LLAMADA O INVOCACIÓN DEL MÉTODO JAVA BAJO EL FORMATO DE COMANDO DETERMINADO.
int a = java.lang.Math.max (2,3)
El programador al escribir el código fuente de la invocación o llamada al método de Java debe hacerlo mediante un formato de comando determinado, como sigue java.lang.Math.max () el cual respeta además un determinado orden de posición, a saber: paquete java.lang, clase Math, método max.
Con lo cual, para poder reutilizar el método de Java Max (el cual constituye la rutina o funcionalidad de la cual necesita y se quiere servir), el programador debe invocar o hacer un llamamiento al código fuente declarado del método de Java Max (ver Esquema 1) a través del formato comando determinado (ver Esquema 2).
Entonces estos símbolos y nombres, que conforman el formato de comando java.lang.Math.max(), “por sí solos” no hacen o pueden ejecutar ninguna acción.
Para ello, es necesario que, mediante dicho formato de comando determinado se produzca la llamada o invocación al código fuente declarado del método de Java max, para que éste, a su vez, luego invoque el código fuente implementado del método de Java Max (de esta forma el programador tendría la funcionalidad deseada -sin necesidad de tener que reescribir desde cero- incluida en su propio desarrollo o app).
Así, entonces mediante la llamada del código fuente declarado a través del formato de comando determinado se invoca al código fuente implementado del método de Java
COMANDO----CODIGO FUENTE DECLARADO----CODIGO FUENTE IMPLEMENTADO
Sin el código fuente declarado del método de Java, la llamada al método de Java a través del correspondiente formato determinado, no podría producir la invocación al código fuente implementado, y por ende no podría llevarse a cabo ninguna actividad (es decir no se ejecutaría ninguna función).
DIAGRAMA DE UNA API DE JAVA DE SUN MICROSYSTEMS (SEGÚN LA CORTE SUPREMA DE EE.UU. EN SU SENTENCIA DE ABRIL 5 DE 2021)
[IMAGEN ver en ISSUE]
Habiéndose realizado estas menciones veremos los dichos expresados por cada una de las partes.
Se comenzará con los expuestos por la parte demandante, Oracle America, INC, para seguir con los de la demandada Google, LLC.