¿Qué es Java?
Java es un lenguaje de programación creado por Sun Microsystems. que ha tenido gran aceptación a nivel mundial y se ha convertido en el standard de facto en muchos ámbitos como el académico y el de grandes proyectos interdisciplinarios.
El éxito de Java se debe a varias razones, entre ellas destacan:
Hay otras razones que se mencionan
frecuentemente cuando se trata de explicar el fenómeno Java como por ejemplo el sistema
de seguridad que ofrece, pero probablemente la capacidad de Java para crear applets
es lo que más contribuyó inicialmente a la popularidad de Java. Por este motivo
comenzaremos el curso hablando un poco de los applets.
Applets
Un applet es un
programa con una interfaz gráfica que puede insertarse en una página web. Por
ejemplo los títulos de cada lección de este curso están hechos con un applet y la
calculadora que aparece a continuación es un applet.
A continuación tienes una serie de ejemplos de applets
Applet-Calculadora
(C) Marta Oliveró & J.L. Abreu
|
|
Los
poliedros regulares
(C) Marta Oliveró & J.L. Abreu
|
Con este
applet el usuario puede estudiar y explorar los poliedros regulares.
|
Applet explorador del conjunto de Mandelbrot
|
Sugerencia: Explore la orilla entre la región coloreada y la zona negra (es donde se encuentran las imágenes más interesantes). |
El primero de estos tres ejemplos es parte del curso y aprenderás a crear un applet como ése. El segundo, el de los poliedros regulares es algo más avanzado y pertence al curso segundo curso de Java. El del conjunto de Mandelbrot podría verse en este curso en cuanto a su programación, pero el aspecto matemático rebasa los requisitos de este curso por lo cual sólo se incluye un ejercicio opcional relacionado con este applet.
Hay muchos otros ejemplos de applets. Por ejemplo el proyecto educativo del CNICE llamado Descartes está basado en un applet (ver: http://www.cnice.mecd.es/Descartes/descartes2.htm).
El sitio internacional más famoso de applets es http://www.jars.com. Se recomienda al lector visitarlo y mirar en especial las categorías que más le interesen. Recomendamos las de ciencias y especialmente las de matemáticas y física. Es evidente que los applets son un instrumento favorito de los científicos para simular experimentos y presentar los conocimientos científicos de forma interactiva y amena.
¿Qué es un Applet ?
Los applets son programas escritos en lenguaje Java. El código de un applet lo interpreta el navegador a través de la máquina virtual de Java, la llamada JVM (Java Virtual Machine). Abajo se presenta un applet sencillo y su código Java.
En este curso se
aprende a entender y escribir este código. Por ahora sólo debes mirarlo detenidamente
para familiarizarte con los applets, que aprenderás a crear en la Unidad
6.
Aplicaciones de Java
Del hecho de que con Java se puedan crear applets no debe deducirse que Java sólo sirve para hacer applets o aplicaciones pequeñas. Java es un lenguaje de programación completo y muy poderoso que tiene muchas virtudes que ya se enumeraron al principio de esta unidad y aquí repetimos agregando algunos comentarios.
Un programa escrito en Java puede ser tan grande y complejo como en cualquier otro lenguaje de programación. Se han escrito muchos programas importantes en Java y la tendencia es a usarlo cada vez más sobre todo en proyectos en los que intervienen varios equipos de programación.
¿Java es lento?
Uno de los defectos que se atribuyen a Java es que es lento por ser un lenguaje interpretado, es decir, porque el código Java no es código de máquina para un ordenador específico sino código para una "máquina virtual" (la JVM) que funciona como intermediario entre el código Java y el código de máquina. En principio los lenguajes interpretados son más lentos que los que se ejecutan directamente ya en código máquina. Sin embargo la velocidad de interpretación de Java es muy satisfactoria para la mayoría de las aplicaciones, como puede comprobarse en los applets que aparecen como ejemplo en esta página. Esta extraordinaria velocidad se debe a la tecnología JIT (Just In Time compiling) que consiste en que el intérprete de Java no interpreta directamente el código Java sino que antes lo traduce a código ensamblador y luego lo ejecuta. Este sistema hace prácticamente idéntica la velocidad de un programa Java y uno escrito por ejemplo en C. El que escribe ha realizado pruebas numéricas en las que C se muestra es apenas un 5% más rápido que Java y en algunos programas la relación incluso se invierte.
En resumen, a pesar de tener
pequeñas inconveniencias, Java es un magnífico lenguaje de programación y creemos que
gran parte del software que se desarrollará en los próximos años se escribirá en Java.
El SDK (Software Development Kit)
Para crear un programa en Java no basta escribir el código, es necesario también compilarlo. Sun Microsystems ha creado un paquete de desarrollo de aplicaciones en Java que se llama "Software Development Kit" (SDK) y ofrece un compilador de Java y otras herramientas útiles para la creación, mantenimiento y documentación de programas.
El "Software Development Kit" (SDK) es un paquete de desarrollo que Sun Microsystems ofrece y distribuye gratuitamente. Las primeras versiones se llamaban JDK (Java Development Kit) y así lo sigue llamando la mayoría de programadores.
Un poco de historia
El JDK 1.0 apareció al público a principios de 1996. Siguieron pronto varias revisiones, como la 1.02 que se considera "un clásico" por la estabilidad que logró.
En 1997 apareció la versión 1.1 de Java (http://java.sun.com/products/jdk/1.1/index.html). Esta versión introdujo cambios muy importantes, por ejemplo se mejoró considerablemente el AWT (Abstract Windowing Toolkit), que es la interfaz gráfica de Java, sobre todo en el manejo de los eventos. En Java Development Kit 1.1.x Brochure se presenta una descripción detallada de las novedades que aportó el JDK 1.1. La útima versión del JDK 1.1 es la 1.1.8 que se sigue utilizando como el standard para la creación de applets confiables y universales y constituye también el standard en cuanto a las librerías básicas de Java.
Nota: Sun decidió dejar de distribuir la JDK 1.1.8 en año 2002.
En 1998 aparece una nueva versión de Java llamada Java 2. Apareció asociada al JDK 1.2 (o SDK 1.2). Esta versión de Java es mucho más avanzada que Java 1.1. Java 2 introduce mejoras en el sistema de seguridad de aplicaciones distribuidas y agrega, entre otras cosas, una interfaz gráfica más potente llamada JFC (Java Foundations Classes) y conocida popularmente como herramientas "swing". La versión vigente de Java 2 en el momento de la publicación de este curso (abril de 2002) es Java 2 SDK, v. 1.4.0 y puede encontrarse en: http://java.sun.com/products/j2se/1.4/. Las mejoras introducidas en esa versión pueden leerse en http://java.sun.com/j2se/1.4/docs/relnotes/features.html.
No siempre es conveniente utilizar la última versión del SDK pues a veces en las nuevas versiones no aparecen totalmente depuradas.
En ayudas/InstalarSDK.htm encontrará las instrucciones para instalar el SDK de Java 2 recomendado para este curso.
En ayudas/InstalarDOC.htm encontrará las instrucciones para instalar la documentación de Java 2 del SDK recomendado para este curso..
La documentación de la versión 1.4 (que incluye la de versiones anteriores) puede consultarse en línea en la dirección:
http://java.sun.com/j2se/1.4/docs/index.html
La documentación de Java es excelente y constituye una herramienta imprescindible para el programador. Es recomendable que se navegue por sus páginas, se entienda su organización y se lean algunas partes para familiarizarse con su lenguaje. La documentación de Java se distribuye sólo en inglés y japonés.
Nota: Sun ofrece también un
excelente tutorial en línea para aprender Java: http://java.sun.com/docs/books/tutorial/
que el alummno debería utilizar como lectura recomendada de este curso.
Muchas de las adiciones que se encuentran en Java 2 aparecieron antes como paquetes
opcionales que podían agregarse al JDK 1.1. Hay paquetes que están en desarrollo y se
pueden utilizar pero que aún no han alcanzado la madurez suficiente para pertencer al
SDK. El programador de Java debe estar siempre atento a estos desarrollos que pueden
consultarse en las páginas de Sun: http://java.sun.com.
Principales
programas del SDK
(el compilador y el intérprete)
El SDK consta de un conjunto de programas que hay que llamar desde la línea de comandos. Los más importantes son:
Los programas del SDK se encuentran en el subdirectorio bin del directorio donde se haya instalado el SDK y al que se denomina JAVA_HOME. Es decir, los programas del SDK se encuentran en JAVA_HOME/bin.
Los programas Java se escriben en archivos de texto con extensión .java. Esto puede hacerse con cualquier editor de texto, pero deben guardarse siempre como archivos de tipo txt y con extensión .java. (¡Cuidado con los editores que a veces agregan la extensión .txt automáticamente!) El SDK no ofrece un editor de textos.
Los archivos .java se compilan con el "compilador" javac.exe y esto genera archivos con el mismo nombre pero con extensión .class que contienen el código para la máquina virtual de Java (JVM) que no es otra cosa que el programa java.exe.
Para compilar un archivo .java hay que ejecutar javac.exe pasándole como parámetro el nombre con extensión del archivo .java, es decir
javac miprograma.java
Esta llamada creará el archivo miprograma.class (suponiendo que miprograma.java no tiene errores).
Para ejecutar un programa Java cuyo código comienza por ejemplo en la clase miprograma.class, hay que llamar desde la línea de comandos
java miprograma
Otros programas del SDK
El SDK tiene un visualizador de applets llamado appletviewer.exe que sirve para ejecutar los applets de una página Web sin ver el resto de la página. La llamada
appletviewer pagina.html
hecha desde la línea de comandos, ejecuta los applets incrustados en pagina.html. El appletviewer puede ser útil para "debuguear" applets. Debuguear es un anglicismo que se suele utilizar entre programadores y que significa quitar los errores o quitar las "pulgas" a los programas. Bug en inglés significa "bicho" y debug significa precisamente "quitar bichos".
Además de java.exe, javac.exe y appletviewer.exe, el SDK tiene:
Hay otras herramientas del SDK que pueden consultarse en
http://java.sun.com/j2se/1.4/docs/tooldocs/tools.html#basic.
Las herramientas del SDK que utilizaremos durante el curso son solamente el intérprete java.exe , el compilador javac.exe y ocasionalmente el appletviewer.exe que es útil para ir probando los applets que se van desarrollando.
Es importante saber que Java tiene muchas clases predefinidas que sirven como bibliotecas de programación. Estas clases están organizadas en paquetes que en conjunto se conocen como el API de Java (Application Programming Interface o sea interfaz para la programación de aplicaciones). La documentación del API de Java constituye la mayor parte de la documentación de Java. Ver:
http://java.sun.com/j2se/1.4/docs/api/index.html.
A lo largo de este curso iremos aprendiendo a usar partes de muchos de estos paquetes de clases.
En la documentación de Java hay un descripción detallada de la convención de escritura de código recomendada:
http://java.sun.com/docs/codeconv/html/CodeConvTOC.doc.html
Se deberá aprender y usar esta
convención como parte de su aprendizaje. La mayor parte podrán aprenderla imitando el
estilo de los ejemplos del curso, pero se recomienda consultar la documentación cuando
surjan dudas de cómo escribir algo.
JCreator
Para este curso no se necesita otro software aparte del SDK, el programador acostumbrado a los entornos integrados de programación echará en falta algunas cosas. Por ejemplo si al compilar hay errores, el compilador los detecta y los escribe en la consola. Cuando hay muchos errores los primeros se pierden arriba de la pantalla (En WindowsXP esto no ocurre). Los entornos integrados permiten localizar la línea del error haciendo un doble click sobre el mensaje de error. Esta es una de las razones por las que conviene utilizar un entorno de programación más adecuado como el que ofrece el JCreator que es un magnífico programa que tiene una versión de libre distribución (freeware) que puede descargarse de:
En el subdirectorio: JCreatorFiles del directorio principal de este curso se puede encontrar un espacio de trabajo o workspace para todos los proyectos del curso y un proyecto para cada unidad del curso. Es recomendable utilizarlos para facilitar y agilizar su trabajo. A diferencia de algunos otros entornos de programación Java, éste puede utilizar el compilador y el JDK específicos que el usuario decida por lo que el resultado de la compilación es el mismo que se obtendría utilizando javac.exe desde la línea de comandos.
JCreator no es un entorno de programación visual, y precisamente por eso resulta también muy adecuado para este curso pues el objetivo es enseñar la programación dura que siempre resulta más potente aunque sea un poco más difícil de aprender. La programación visual puede ser muy conveniente en algunos proyectos, pero también puede acabar siendo un estorbo en otros proyectos. Esto por supuesto es cuestión de gustos. De cualquier manera, este curso no es sobre programación visual sino sobre programación dura.
Nota:
Al desarrollar el curso se utilizó el entorno de programación JCreator.
En el curso no hace falta ningún entorno de programación aparte del SDK de Sun
Microsystems y un editor de textos como el notepad o el write,
pero aunque se puede utilizar JCreator o cualquier otro entorno si lo desea, el curso no
es sobre JCreator ni sobre otros entornos de programación, sino sobre el lenguaje
Java.
Navegadores y Applets
Los primeros navegadores de internet no interpretaban applets pues estos últimos aún no existían cuando la web comenzó a funcionar, pero a partir de las versiones 3 de Internet Explorer y Netscape ambos interpretan applets.
Las versiones más recientes (al publicarse este curso) de los dos navegadores de internet más populares son
Internet Explorer 6 (http://www.microsoft.com/)
y Netscape 6.2 (http://home.netscape.com/).
Ninguno de estos dos navegadores da soporte directamente a los applets creados con el Java 2 SDK, por lo cual es necesario instalar un plug-in (el llamado JRE) en el ordenador cliente, lo cual toma algunos minutos.
En ayudas/InstalarJRE.htm encontrará las instrucciones para instalar el plugin o JRE de Java 2.
Nota: La capacidad de los
navegadores de internet para interpretar applets proporciona una de las formas más
populares y convenientes de incluir interactividad en las páginas web, pero es importante
saber que no es la única, hay otras como por ejemplo JavaScript y la tecnología ActiveX
de Microsoft.
Java y JavaScript
Es importante aclarar que JavaScript y Java son cosas diferentes. JavaScript es un lenguaje de programación exclusivamente para páginas Web. JavaScript fue desarrollado por Netscape. De hecho Netscape iba a llamar "LiveScript" a su lenguage de programación para páginas Web, pero ante la popularidad que Java estaba adquiriendo y aprovechando el parecido de la sintaxis de ambos lenguajes, decidieron llamarle JavaScript.
Ambos lenguajes han aprovechado la sintaxis de C++ por lo cual su código es parecido.
JavaScript es especialmente adecuado para enriquecer una página Web pues tiene control sobre ella, puede ofrecer interacciones dentro de una página, puede generar páginas al instante dependientes de lo que el usuario elija e incluso puede controlar applets de Java que se encuentren en la página. Pero las clases que se pueden crear con JavaScript sólo tienen validez dentro de la página Web donde se crearon, por lo tanto no resulta fácil ni natural crear librerías de clases y extender así su poder.
Java no ofrece control sobre una página Web pero en cambio es un lenguaje de programación completo con el que se pueden crear y extender clases, formar paquetes o librerías de clases, crear aplicaciones independientes y además crear applets.
Aunque la sintaxis de ambos lenguajes es parecida, en realidad son lenguajes muy diferentes. Java es muy estricto en cuestión de tipos de variables como Pascal o C++ mientras que JavaScript no lo es.
Para utilizar JavaScript basta aprender el lenguaje y usarlo dentro de las páginas Web, en cambio para utilizar Java es necesario usar un compilador de Java.
Ambos lenguajes pueden colaborar
perfectamente dentro de una página Web.
Paquetes básicos del JDK
El JDK (Java Development Kit) 1.0 tenía sólo estos ocho paquetes, seis de ellos siguen siendo los paquetes básicos de java y que el programador debe conocer muy bien.
java.applet |
Todo sobre los applets, es una clase pequeña |
java.awt |
Windows y sus controles, es una clase amplia y compleja. |
java.io |
Lectura y escritura de archivos a través de Streams |
java.lang |
Matemáticas, Strings, Hilos y otras cosas básicas. |
java.net |
Todo sobre conexiones a internet |
java.util |
Algunas clases útiles |
java.awt.event |
Eventos de los controles gráficos de awt. |
En JDK 1.1 se agregaron varios paquetes, uno de ellos, java.awt.event, pasó a formar parte de los paquetes básicos
El curso de Iniciación a Java se
limita al aprendizaje de estos paquetes básicos. Aún este pequeño subconjunto de
paquetes (la versión actual cuenta con unos 100 paquetes) es un material muy extenso que
no es posible presentar completo en un curso. Lo que haremos es mostrar cómo se usan las
principales clases de estos paquetes analizando los ejemplos desarrollados especialmente
para el curso. Ponga atención a las importaciones que se declaran al principio de
cada archivo java. En ellas se especifican los paquetes que se van a usar. Por ejemplo
import java.applet.*;
indica que se van a usar las clases del paquete java.applet. El paquete java.lang es el único que no necesita importarse nunca.
Nota: En este curso introductorio sólo se utilizan los paquetes básicos definidos en el JDK 1.1. Como la biblioteca de programación que se utilizará en el curso está contenida en el JDK 1.1, los applets generados en el curso deberán poder visualizarse en cualquier navegador de internet posterior a IExplorer 3 y Netscape 3 sin necesidad de plugins adicionales.