El primer lugar y el más frecuente, donde
encontramos al lenguaje
Java, es en
los exploradores o navegadores de
Internet. Veamos
cómo llega hasta ahí.
La World Wide
Web:
Llamada así por sus siglas WWW, es la
aplicación que ha popularizado a Internet, y ha sido la
causante de la explosión de la red de redes.
Hablando sencillamente, la WWW basa su existencia en dos
aplicaciones: los servidores de
Web y los
clientes. Los
primeros son programas
dedicados, instalados en las máquinas
nodos de la red, que atienden a todos los pedidos de los
clientes. Estos solicitan archivos,
recursos de la
Web , en general, archivos HTML y gráficos. Los archivos HTML son archivos de
texto, que
contienen una descripción de lo que vemos como
página en nuestro browser. La sigla HTML significa
Hypertext Markup Languaje (lenguaje de marcación de
hipertexto), y es el lenguaje
que describe las páginas
Web.
En esas páginas se colocan textos,
gráficos y otros recursos. Es trabajo del
cliente, nuestro
browser, interpretar esa página, mostrarla en pantalla, y
reclamar todo lo que se necesite para armarla, como los
gráficos y archivos de sonido que la
pueden acompañar.
Java en la Web:
Los programas Java son, al fin, otro recurso más,
como pueden serlo una página HTML o un archivo
gráfico. Al igual que estos últimos viajan desde el
servidor a la
máquina cliente, y se ejecutan en ésta.
Verá, cuando arme alguna applet, que existe una
construcción, la marca HTML
<APPLET…>, que especifica un determinado lugar en una
página
Web, para que el browser posicione y ejecute una
aplicación Java. Los archivos Java que viajan son de un
tipo: se trata de archivos con extensión .class y
contienen las instrucciones Java ya compiladas, no viajan en
código
fuente. Una applet se compone, como mínimo, de un archivo
.class, pero puede requerir más archivos .class (con
más código para ejecutar), que el browser recupera,
o archivos gráficos, de sonido u otros, que la propia
applet se encarga de recuperar.
Máquinas Virtuales:
Se ha mencionado que el lenguaje Java se compila, no
pensando en una plataforma o procesador en
particular, sino produciendo código (que se denomina
bytecodes), destinado a ser interpretado por la llamada
máquina virtual Java. Esta máquina no es una
única, sino que hay una por cada plataforma y, en
realidad, cada browser que implementa Java tiene la suya.
Así, el Microsoft
Explorer usará su máquina en Windows,
mientras que el Netscape Navigator usará la suya, que
variará de Windows a UNIX.
Pero todas tienen la misma funcionalidad (o
debería esperarse eso). Tanto el usuario como los
programadores no deberíamos preocuparnos por las distintas
implementaciones. Sin embargo, se escuchan quejas de los
desarrolladores, originadas en la pequeñas diferencias que
se encuentran tanto entre una implementación y otra, como
en el aspecto de la interface gráfica.
Además de la máquina virtual, cada browser
instala una serie de clases, ya listas para usar, que Java espera
tener disponibles en cualquier plataforma. Esas clases tienen una
funcionalidad definida, que no debería sufrir
modificaciones.
Netscape y Microsoft:
La empresa Netscape,
creadora del Netscape Navigator, soporta Java desde la
versión 2 de su browser. Microsoft no se ha quedado
atrás y soporta Java desde la versión 2.0 de su
browser. Microsoft no se ha quedado atrás (pues no le
convenía, dado la mayoría de las páginas
contiene – aunque sea – un poquito de Java) y soporta Java desde
la versión 3.0 de su Internet
Explorer. Ambos browsers instalan y usan su propia
máquina virtual Java. No hay diferencias apreciables en
las prestaciones
de estos dos browsers, respecto de Java.
Hay que hacer algunas aclaraciones: en general, los
browsers, de cualquier origen, soportan Java en ambientes que
permiten la multitarea y los llamados múltiples hilos de
ejecución (multihttrading).
Seguridad:
Debido a la naturaleza de
Internet, traer programas desde un lugar lejano y no controlado a
nuestra computadora,
para ejecutarlo, puede ser riesgoso.
Con respecto a las applets Java debemos quedarnos
tranquilos: Sun y los constructores de browsers han implementado
una política
de seguridad, que
impide a una applet, por ejemplo, leer o escribir en nuestro
disco, o interferir con otras aplicaciones en ejecución.
Es tan grande la seguridad que, como programadores, nos puede
llegar a molestar: en una applet nunca podremos grabar un archivo
local, con datos
transitorios o de configuración.
Nuevos browsers:
Entre Netscape (en múltiples plataformas) y
Microsoft (en plataformas Windows) acaparan el mercado de los
browsers.
Java sin browsers:
Pero no todo es Internet en Java. Este es un lenguaje de
uso general, que sólo incidentalmente cobró
popularidad en Internet. Podemos desarrollar aplicaciones Java
que se ejecuten en nuestra máquina, sin necesidad de estar
conectados a la red, y sin el auxilio de browsers. Mientras los
programas Java para Internet y páginas HTML se llaman
applets, los que pueden ejecutarse fuera de la red se llaman
genéricamente aplicaciones.
Creando el programa:
/*
Primera aplicación Java
Compilar con:
javac HolaMundo.java (y se creará un archivo
llamado HolaMundo.class)
Ejecutar con:
java HolaMundo
*/
public class HolaMundo {
public static void main(String[ ] args) {
System.out.print ln("Hola Mundo, mundo");
}
}
Compilando el programa:
javac HolaMundo.java
Ejecutando el programa:
java HolaMundo
Analizando el Código:
Nuestra primera clase:
/* y */: es para hacer comentarios. También se
pueden usar dos barras //.
Luego de los comentarios, nos encontramos con la
declaración:
public class HolaMundo
{
Explicación:
La palabra public es para aclarar que la clase HolaMundo
será publica, es decir se podrá
acceder a ella desde otra clase. La palabra class se
escribe solamente para darle un nombre
a la clase.
El primer método:
public static void main(String[] args) {
Explicación:
Esto declara nuestra primer rutina. Las funciones y
rutinas en Java siempre corresponde a una
clase, y se denominan métodos.
El código de arriba define el método main
(principal). Al método
anterior se lo declara de tipo void, para indicar que no
es una función
sino un procedimiento
y
se lo define como static (estático). Este
calificador indica que no es un método que vaya
a
actuar sobre un objeto de la clase HolaMundo, sino que
será ejecutado sin necesidad de crear
ningún objeto: es un método de clase (esto
queda más claro cuando se estudian clases y
objetos
en Java).
El método main recibe un arreglo de Strings como
único argumento. Este es un vector de cadenas
de caracteres representa que los parámetros
opcionales que le podemos pasar por la línea de
comando. En el ejemplo de arriba no se usaron
argumentos.
Escribiendo en pantalla:
Ahora nos encontramos con la sentencia:
System.out.println("Hola, mundo");
< objeto
>.<método>(<argumentos>)
Explicación:
Esto mostrará un texto en pantalla (Hola, mundo).
El texto System.out hace referencia a un
objeto: el out del paquete System. Este es un objeto que
ya está disponible para nuestro uso,
es decir Java nos brinda un serie de clases y objetos ya
definidas. Por otro lado la invocación
a un objeto es – como ya se mostró con
anterioridad -:
<objeto>.<método>(<argumentos>)
Aquí nos encontramos con el método println
("print line"), que toma los parámetros y los
imprime
en pantalla.
El método main:
Si volvemos a las instrucciones de ejecución de u
programa, vemos que escribimos:
Java HolaMundo
El intérprete busca el archivo HolaMundo.class y
comienza a ejecutarlo.
Por convención, cuando al interprete le indicamos
una clase a ejecutar, ejecuta un método en particular: el
método main. Este es el método que lanza
todo el programa. Por eso tuvimos que definirlo. Lo declaramos
público justamente para que pueda ser invocado por el
intérprete. Lo declaramos estático, porque es
invocado directamente, no desde un objeto (como el printl,
que es invocado para el objeto System.out). Cuando se arma
una applet (programa java a incluir en una página HTML) se
puede observar que la forma de lanzar el programa es totalmente
distinta. Esta es una de las muchas diferencias entre los
aplicaciones Java y applets.
Otra aplicación:
Este programa es sólo un poco más
complejo: imprime los factoriales de los primeros diez
números naturales.
Factoriales.java
//
// Imprime Factoriales
//
public class Factoriales {
(/** Calculo de Factorial */ static long factorial(int
v) {)
if (v>1)
return(v*factorial(v-1));
return(1);
}
public static void main(String[] args) {
int k;
for (k=1;k<=10;k++)
System.out.println(factorial(k));
}
}
Lo compilas: javac Factoriales.java
Lo ejecutas: java Factoriales
Resultado del Programa:
1
2
6
24
120
720
5040
40320
362880
3628800
Analizando el Código:
Explicación:
La novedad en esta aplicación es la
definición de un método estático (no
necesita de un objeto Factoriales), denominado
factorial, que es una función, que devuelve un
valor
long (entero largo), y recibe como parámetro un
valor int (entero). Este método calcula el
factorial de un número natural n como n!,
siendo:
n!= n * (n-1) * (n-2) * …
Así el factorial de 4 es:
4! = 4*3*2*1 = 24
En este código se puede ver el uso de la estructura
if en:
if (v>1)
return(v*factorial(v-1));
que examina si v es mayor que 1. Si es así,
devuelve como valor de la función el resultado de
multiplicar v por el factorial de v-1.
En el cuerpo del método main tenemos a
declaración de una variable:
int k;
Esta sentencia declara una variable k, que será
de tipo int (entero), y que es local al método
donde está definida.
Tal vez la parte más compleja es la sentencia
for:
for (k=1;k<=10;k++)
System.out.println(factorial(k));
Que hace recorrer a la variable k por los valores
desde 1 a 10, y envía a imprimir en pantalla el resultado
de invocar factorial(k).
Applet Hola, Mundo
HolaMundo.java
//
// Applet: Hola mundo!
// Ejecutar con:
// appletviewer HolaMundo.html
//
import java.applet.*;
import java.awt.Graphics;
public class HolaMundo extends Applet {
public void paint(Graphics g)
{
g.drawString("Hola mundo!",20,20);
}
}
Hay que compilarla:
Javac HolaMundo.java (lo que es = a
HolaMundo.class)
Hay que ejecutarla:
*Crear un archivo HolaMundo.html (con el
código correspondiente, lo que se verá más
adelante)
*La ejecutas con: appletviewer
HolaMundo.html
Necesitamos de tres ficheros: HolaMundo.java,
HolaMundo.class y HolaMundo.html
Ejecutando una applet:
Una applet Java no existe por sí misma (sino
dentro de una página .html), por eso debemos invocarla
desde una página html que hemos creado. Veamos el
siguiente ejemplo (supuestamente hemos creado una página
que se llama HolaMundo.html):
<applet
code=HolaMundo.class
width=330
height=170
>
</applet>
Dentro del JDK se encuentra un utilitario que permite
ejecutar una applet que se encuentra en una pag. html. Se llama
appletveiwer, y en este caso se ejecuta
así:
Appletviewer HolaMundo.html
Como parámetro no se le pasa el archivo
HolaMundo.java sino que la página
HolaMundo.html.
Análisis del
Código:
Importando paquetes:
Aparecen las líneas :
import java.applet.*;
import java.awt.Graphics;
Explicación:
La palabra import indica que son declaraciones que le
avisan al compilador que este programa, usará: En el caso
de java.applet.* todas las clases que pertenecen al
paquete (packages) applet (por eso el applet.* – el que
produce que se usen todas las clases es el "*"). En el caso de
java.awt.Graphics indica que se usará el objeto
Graphics del paquete awt.
La línea java.applet.* no posee tanta
explicación, pero (aproximadamente) no ocurre lo mismo con
la línea java.awt.Graphics, veamos:
La declaración:
import java.awt.Graphics;
afirma que vamos a usar la clase Graphics de las
definidas en el paquete java.awt. Este es otro paquete,
muy importante, disponible en todas las plataformas Java: es el
AWT (Abstract Windows Toolkit), este es el paquete que
maneja ventanas e interfaces gráficas, independientes (abstractas) del
entorno operativo.
Es un paquete que permite, por ejemplo, definir botones
y cajas de texto, portables a Windows, OS/2, Xwindows, o
cualquier otro entorno gráfico, siempre usando el mismo
código fuente. Si no incluyéramos estas de
paquetes, el compilador no sabría resolver nuestras
referencias a clases de esos paquetes, como la clase
Applet, y la clase Graphics.
Estas clases que usamos son aquellas que nos brinda, de
forma predeterminada, Java.
Una clase Applet:
Con el código:
public class HolaMundo extends Applet {
definimos una clase pública (public) de nombre
HolaMundo (igual que el nombre del archivo
.java)
Pero hay una novedad: extends Applet (herencia). Estas
dos palabras declaran que la clase HolaMundo, no es una clase
cualquiera, sino una derivada, que extiende de una clase ya
definida por Java, la clase Applet (definida en el paquete
java.applet). Se dice que la clase HolaMundo hereda
todas las propiedades (atributos y métodos) de la clase
Applet. Esto es una ventaja que nos brinda la programación orientada/basada a/en objetos:
se puede definir nuevas clases basadas en otras ya construidas,
por nosotros o por otros (la ayuda mutua es buena). En este caso,
la clase Applet es una clase brindada por el entorno
Java.
El método paint:
Este es el único método (paint) que
definimos para nuestra clase HolaMundo. Este es nuestro
primer método no estático: no se aplica a la clase,
porque se ejecuta sobre un objeto. El cual lo creará el
browser (navegador), en el momento de invocar la clase
HolaMundo y así quedaría un objeto –
llamémoslo de forma imaginaria – "X". Es decir, el
navegador que usemos cargará la clase (Applet) y
creará un objeto a partir de esta. Para que el browser
controle nuestro objeto usará los métodos de la
clase Applet (los puede usar porque los había heredado con
anterioridad, por la línea: "public class HolaMundo
extends Applet { ").
Justamente, uno de los métodos que usa el
navegador es el método paint. El objetivo que
tiene este es dibujar el contenido de la applet, una
región rectangular que ocupa en la página HTML. El
método paint es llamado por el browser, después de
que se haya creado el objeto, para mostrar/dibujar su contenido
en la página. Y lo llamará de nuevo cada vez que
necesita redibujar el rectángulo correspondiente a la
applet. Esto puede ocurrir, por ejemplo, si minimizamos,
maximizamos, movemos o cambiamos de tamaño a la ventana
del browser. Algo que cave aclarar es que, el objeto que crea el
browser, invoca otros métodos (además de paint).
Pero no necesitamos declararlos porque los hereda de la clase
applet (ventaja de la programación
orientada a objetos). Algunos métodos que tiene esta
clase son :start, run, stop, etc.
Objeto Graphics:
Código:
public void paint(Graphics g) {
Explicación:
El método paint recibe el parámetro
g, un objeto de la clase Graphics (g es un objeto
de la clase Graphics porque esta necesita "un lugar,
g, en donde caer" y, una vez en este comenzar a llevar a
cabo su función), la clase Graphics está
definida en el paquete java.awt. Ese objeto (g)
tendrá la información sobre el dispositivo que se va
a dibujar, como cantidad de colores,
tamaño, partes disponibles y partes ocultas, entre otros.
Así como antes utilizó el objeto System.out
para escribir en pantalla, ahora deberemos usar el objeto de la
clase Graphics entregado al método paint,
para dibujar (escribir) en la zona de la applet.
Usamos el objeto g en la sentencia:
g.drawString("Hola
mundo!",20,20);
que invoca al método drawString del objeto
g. Este método recibe tres
parámetros;
*Primero: es qué texto se mostrará en
pantalla.
g.drawString("Hola
mundo!",20,20);
*Segundo: es la coordenada x, determina que se
escribirá a 20 pixeles, a la derecha del margen
izquierdo.
g.drawString("Hola
mundo!",20,20);
*Tercero: es la coordenada y, determina que se
escribirá a 20 pixeles, abajo del borde superior de la
zona asignada a la applet (es como las coordenadas
cartesianas).
g.drawString("Hola
mundo!",20,20);
La marca <applet>:
En el fichero HTML se tubo que incluir un elemento
<applet>. En ese elemento (directiva) se pusieron varios
argumentos:
class=HolaMundo.class : este argumento lo usamos para
indicarle a la página qué clase tendrá que
invocar, en este es HolaMundo.class
width=330 : indica a la
applet el ancho (en pixeles) que tendrá disponible para
operar y dibujar. En este caso 330 pixeles.
height=170 : indica a la
applet el alto (también en pixeles) que tendrá
disponible para operar y dibujar. En este caso 170
pixeles.
La directiva applet es la que da lugar a los argumentos,
su directiva de cierre es </applet>.
Applet en el browser:
En esta applet se usó el utilitario
appletviewer del JDK, para verla funcionando. Pero se
puede ver el archivo .html desde nuestro navegador de
Internet. Si se dispone de un browser instalado se puede invocar
la applet con el siguiente comando: start HolaMundo.html y
se nos abrirá nuestro navegador mostrando la
applet.
Otra forma es abrirla directamente del menú
archivo => abrir. Luego verá los resultados.
Espiando los paint:
A continuación analizaremos otra applet, que
sigue mostrando un texto en pantalla, pero que varia cada vez que
se invoca el método paint.
Cuenta.java
//
// Applet: Cuenta
// Ejecutar con:
// appletviewer Cuenta.html
//
import java.applet.*;
import java.awt.Graphics;
public class Cuenta extends Applet {
int veces=0; // Contador de eventos
paint
public void paint(Graphics g) {
veces=veces+1;
g.drawString("Este es el paint nro.
"+veces,20,60);
}
}
Cuenta.html
<applet
code=Cuenta.class
width=330
height=170
>
</applet>
Compilamos con: javac Cuenta.java =
Cuenta.class
Invocamos con: appletviewer
Cuenta.html
O con: start Cuenta.html (se ejecuta desde el
navegador)
Estudiando la applet Cuenta:
Esta applet es muy similar a la applet HolaMundo, pero
con una pequeña vuelta de tuerca.
Código:
int veces=0;
Se declara una variable (veces) con el valor 0.
public void paint(Graphics g) {
veces=veces+1;
Cada vez que se ejecuta la línea: public void
paint(Graphics g) { se le asigna (por el signo =) a la variable
veces su valor actual (veces) más 1.
g.drawString("Este es el paint nro.
"+veces,20,60);
es la concatenación (unión) de un texto
("Este es el paint nro.") y la variable entera (int) veces. La
cual se incrementa cada vez que se ejecuta el método
paint (por la línea: public void paint(Graphics g)
{).
La variable veces se declara (int
veces=0) y se inicializa a 0 (int
veces=0). Luego, cada vez que se ejecuta el
método paint, se incrementa, y se muestra en la
zona de la applet. Si minimizamos la ventana de la applet, o la
tapamos parcial o totalmente con otra ventana, o en algunos casos
de cambio de
tamaño, veremos que el texto va cambiando. Es una forma de
ir investigando el comportamiento
de la applet, y la frecuencia de la invocación de
paint.
Más sobre las applets:
Más adelante investigaremos cómo colocar
elementos en una applet, como cajas de texto editables, listas y
botones, entre otros. También aprenderemos a dibujar, , y
a colocar imágenes.
Hasta podremos animar las imágenes. Pero antes, se debe se
debe aprender lo básico, y estudiar el lenguaje Java, para
luego lanzarse a esos otros terrenos.
Simplicidad:
Ya se ha mencionado que el equipo original que
desarrolló Java lo hizo por necesidad, al no cumplir los
lenguaje existentes con todo lo que necesitaban para el proyecto en
marcha. Pero, como buenos diseñadores, no inventaron todo
de nuevo, sino que se basaron en lo ya hecho y probado. Es por
esa razón que el código Java se expresa en archivos
de texto comunes, y tiene una apariencia muy familiar para los
programadores de C/C++ y para los programadores en general. Los
fragmentos del lenguaje que se han visto, lo
ejemplifican.
Orientación a objetos:
A primera vista parece que todos los productos
nuevos de software tienen algo
"orientado a objetos". En el caso de Java, la aplicación
de esa calificación es totalmente acertada. De hecho, en
Java, todo es un objeto. Se verá que éstos se
definen en clases, con atributos y métodos,
agrupándose en paquetes, y exponiendo interfaces,
permitiendo herencia y polimorfismo, implementando así la
tecnología
de objetos de una manera muy completa, y a la vez sencilla y
agradable. Reconoceremos al estudiar se semántica, que Java es realmente un
lenguaje que merece ser llamado "totalmente orientado a
objetos".
Soporte de múltiples
plataformas:
El proceso de
compilación no produce código para un procesador en
particular, como en los compiladores
C/C++, sino que genera código para un procesador ideal,
denominado máquina virtual Java (Java Virtual Machine, o
Java VM). La razón de esta conducta es
simple: la necesidad de poder
ejecutarse en cualquier plataforma, sin necesidad de cambiar el
código fuente, ni aun de recompilar. Todo programa Java se
traduce en una serie de códigos (llamados bytecodes) para
un procesador imaginario, al Java VM, que puede ser implementado
fácilmente en cualquier plataforma poderosa. Es así
como el lenguaje y sus aplicaciones se independizan de ña
máquina destino, a costa de algo de velocidad,
provocada por la necesidad de "simular" la Java VM, mediante
software.
Veremos que aun los tipos primitivos de datos quedan
definidos de un solo golpe, para todas las plataformas. Nos
evitamos así las pesadillas de portabilidad, conocidas por
los programadores de C/C++, al cambiar, por ejemplo, de ambiente a
ambiente, el tamaño de los enteros, o el conjunto de
caracteres soportados. En Java, esos problemas no
existen: sólo existe una máquina
virtual.
Manejo automático de memoria:
Ya se ha mencionado, que el lenguaje Java se compone de
objetos. Lo que no se ha descripto, es que esos objetos pueden y
deben crearse, y tienen una vida que dura hasta su
destrucción. Mientras que la creación de los
objetos se deja bajo la voluntad del programador, la
destrucción definitiva de un objeto ocurre cuando no es
más referenciado por otros objetos del programa. De esta
forma, se elimina una de las causas más comunes de error
en otros lenguajes, como la destrucción por el programador
de objetos aun en uso en el programa, o la falta de
destrucción de objetos que ya son inútiles, pues no
se usan en el resto de la ejecución, pero que molestan con
empleo de
recursos. Esta técnica de manejo automático. Esta
técnica de manejo automático de memoria ocupada por
los objetos se denominan garbage collection, algo
así como recolección de basura. En una
aplicación Java hay siempre un proceso, ejecutado como un
hilo de ejecución separado, que se ocupa de recorrer
la memoria
donde se encuentran los objetos, y determinan cuáles son
pueden liberarse y destruirse. Bye (adiós) punteros y
problemas de memoria.
Seguridad:
Todo el que ha trabajado en una computadora personal, se ha
topado de una u otra forma con los problemas de virus, o de
confidencialidad de los datos. Al parecer Internet, y
distribuirse programas por toda las red, el problema de la
seguridad ha tomado una nueva dimensión, más grave,
ya que actualmente a nuestra máquina pueden llegar
aplicaciones hostiles y virus malignos, desde cualquier punto del
planeta. Java ha sido adaptado a Internet, pensando mucho en el
tema seguridad. Una "applet" java se ejecuta en un entorno, que
impide su intromisión en la máquina cliente. No
hay, entonces, posibilidad de un virus Java, viajando por toda la
red.
Java no se aísla y
evoluciona:
Como Java trata de ser un lenguaje de producción, no un lenguaje académico
o ideal, o tiene "miedo" de comunicarse con librerías de
otros lenguajes. Tiene capacidades definidas para implementar
clases y métodos (o funciones), escritos, por ejemplo, en
C/C++. Esto nos permite usar lo que ya está hecho, en cada
plataforma de implementación. Igualmente, recordemos que
Java es un lenguaje de uso general, y muchas de las rutinas y
librerías que necesitaremos para un proyecto, pueden ser
escritas en Java. Debido al éxito
del lenguaje, y a su difusión, cada día aparecen
nuevas herramientas y
paquetes de clases escritas por otros programadores, listas para
ser usadas en nuestro próximo sistema.
Programando para el mundo:
Cuando Ud. Comience a programar en Java, y en especial
para la Web, experimentará una sensación, que hasta
la llegada de Java, era difícil de encontrar: el hecho de
generar aplicaciones que pueden ser ejecutadas por millones de
personas, en ambientes disímiles. Sus programas
podrán viajar por la red de redes, y ser fruto de
satisfacción y diversión. Es un nuevo universo de
programación, que apenas comenzamos a explorar.
Bibliografía: "La interpretación de mi aprendizaje (yo
he estudiado el lenguaje Java, y, en base a lo
entendido/aprendido escribí lo que ha visto y ha
leído)"
Autor:
Jairo
Bien, que tenga mucha suerte con el aprendizaje
del lenguaje y "Hasta La Próxima (pienso escribir algo
más de Java, dado que esto no puede quedar
aquí)"….