¿Qué es Java?

 


¿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:

  1. Java es muy buen lenguaje general de programación orientada a objetos.
  2. Java es un lenguaje muy adecuado para desarrollar aplicaciones para Internet.
  3. Las aplicaciones desarrolladas en Java son (en principio) independientes de la plataforma, es decir, del hardware y del sistema operativo.
  4. Con Java se pueden crear los famosos applets, que son la "pequeñas" aplicaciones que pueden insertarse en páginas web y permiten enriquecer considerablemente la interactividad de la web.
  5. El software necesario para crear y ejecutar programas en Java es gratuito.
  6. Java cuenta con una amplísima librería de programación, el llamado API de Java, que ha crecido y mejorado en cada una de las actualizaciones que aparecen cada año desde su aparición en 1996.
  7. La documentación de Java, que viene en formato html, es muy amplia y puede consultarse directamente en internet o descargarse gratuitamente.

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

Aquí vería un applet si su navegador reconociese la etiqueta de APPLET.

  1. Escriba un número (pulsando los botones con los números y el punto decimal).
  2. Pulse el botón de una de las operaciones
    ( + , - , * , / ).
  3. Escriba otro número.
  4. Pulse = para obtener el resultado.
  5. Los botones -x y 1/x cambian el signo e invierten, respectivamente, el número en el despliegue.
  6. El botón CE borra el número del despliegue.
  7. El botón CA borra todo (operando, operador y depliegue)

Los poliedros regulares
(C) Marta Oliveró & J.L. Abreu

Aquí vería un applet si su navegador reconociese la etiqueta de APPLET.

Con este applet el usuario puede estudiar y explorar los poliedros regulares.
  1. Pulse uno de los botones
    F=4, ... , F=20
    para definir el número de caras.
    Arriba aparecerá el nombre del poliedro y en la segunda fila los números de caras, aristas y vértices.
  2. En el selector de arriba a la derecha puede seleccionar diferentes modos de presentación.
  3. Los botones inferiores sirven para mover, acelerar, descelerar y detener el movimiento.
  4. También se pueden girar los poliedros arrastándolos con el ratón.

Applet explorador del conjunto de Mandelbrot
(C) Marta Oliveró & J.L. Abreu

Aquí vería un applet si su navegador reconociese la etiqueta de APPLET.

 

  • Dibuje un rectángulo (arrastrando el ratón) y pulse el botón Go!
    Obtendrá una amplificación de la región dentro del rectángulo.
  • Pulse col+ y col- para cambiar la tabla de colores.
  • Los botones In y Out permiten hacer zoom hacia dentro o hacia afuera por las regiones exploradas.

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.

Si su navegador reconociese la etiqueta de applet, aquí vería un applet

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.

  1. Java es muy buen lenguaje general de programación orientada a objetos.
    La programación orientada a objetos es el paradigma contemporáneo de la programación. Ninguna escuela de programación pone en duda las enormes ventajas que representa este tipo de programación sobre sistemas más antiguos, incluyendo la programación estructurada. En la Unidad 5 se aprenderá la técnica de programación orientada a objetos en Java.
  2. Java es un lenguaje muy adecuado para desarrollar aplicaciones para Internet.
    Además de los applets, Java cuenta con una buena biblioteca específica (java.net) para realizar conexiones y transferencias de información a través de internet. El estudio de este tema se pospone para el segundo curso de Java.
  3. Las aplicaciones desarrolladas en Java son (en principio) independientes de la plataforma, es decir, del hardware y del sistema operativo.
    Una aplicación bien escrita en Java debe ser multiplataforma y funcionar lo mismo en Windows que en Linux, Solaris o Macintosh. Este hecho se puede constatar particularmente en los applets que en su mayoría pueden ser vistos igualmente en cualquier ordenador conectado a internet. Sin embargo no todo lo que se escribe en Java funciona de esta manera. La mayor parte de los problemas que se encuentran al tratar de ejecutar un programa Java en una plataforma diferente de la que usó el desarrollador son culpa de errores del programador que inadvertidamente usa detalles específicos de una plataforma como podría ser el uso de \ como separador de directorios (que es específico de Windows y no  funciona en otros sistemas operativos. Pero también hay otro problema y es que las máquinas virtuales (JVM) no  funcionan exactamente igual en distintas plataformas y esto produce resultados desiguales. Por este motivo antes de publicar un programa en java es conveniente probarlo en varias plataformas, navegadores y JREs y corregir los problemas que puedan aparecer buscando alternativas.
  4. Con Java se pueden crear los famosos applets, que son la "pequeñas" aplicaciones que pueden insertarse en páginas web y permiten enriquecer considerablemente la interactividad de la web.
  5. El software necesario para crear y ejecutar programas en Java es gratuito.
    Efectivamente, se trata del JRE (el software necesario para ejecutar programas Java) y el SDK (para desarrollar programas en Java). Ambos pueden descargarse gratuitamente del sitio de Sun Microsystems:

          http://java.sun.com

    Al final de esta unidad se dan instrucciones específicas para descargar e instalar estos programas. De hecho los ejercicios de esta unidad consisten precisamente en realizar dichas instalaciones así como la de la documentación mencionada en el punto 7.
  6. Java cuenta con una amplísima biblioteca de programación, el llamado API de Java, que ha crecido y mejorado en cada una de las actualizaciones que aparecen cada año desde su aparición en 1996.
    La documentación del API de Java es una parte importante de la documentación general de Java.
  7. La documentación de Java viene en formato html, es muy amplia y puede consultarse directamente en internet o descargarse gratuitamente.

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:

http://www.jcreator.com.

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.