Está en la página 1de 4

Librerías Java

1. Introducción a las librerías de Java


El entorno de desarrollo Java dispone de un conjunto de librerías que acompañan al compilador, interprete y
demás herramientas del kit de desarrollo Java. A lo largo de este documento vamos a presentar dichas librerías y
vamos a centrarnos en especial en aquellas que más útiles nos serán dentro de los sistemas distribuidos.

En la documentación que acompaña a JDK están perfectamente documentadas en HTML utilizando javadoc
todas las librerías. Esta documentación la analizaremos a lo largo de esta presentación ya que será uno de los
puntos más importantes para el desarrollador de Java en su día a día de programación.

Si accedemos a la página principal de la documentación de JDK, uno de los enlaces locales nos lleva a la API de
JDK 1.3.1. La organización de las páginas HTML utiliza por defectos marcos y divide la pantalla en 3 grandes
zonas. En la barra de la izquierda nos encontramos con acceso a los paquetes de Java, en un marco inferior nos
encontramos con todas las clases de ese paquete y se reserva la parte central para mostrarnos la información
detallada de la clase que estemos consultando.

Si realizamos una visión global de los paquetes, que recordemos que agrupan a un conjunto de clases que
proporcionan un conjunto de funcionalidades integrado, podemos realizar los siguientes comentarios: las clases
de AWT ya no las usaremos directamente ya que la librería para la creación de interfaces gráficas recomendada
es Swing, mucho más completa y estética que AWT.

Las clases que están dentro del paquetes "javax" son ya librerías que no son parte del núcleo del lenguaje, pero
que nos presentan funcionalidades que se usan muy habitualmente.

Por último vemos que el espacio de nombres de CORBA es "org.omg", respetando las normas fijadas desde
OMG para las implementaciones de Java de CORBA.

En general veremos que los paquetes tienen un conjunto de interfaces a partir de los cuales, podremos entender
forma global el funcioamiento del paquete (librería). Estas interfaces se irán implementando de distintas formas
con diferentes características. Todas las clases que implementan funcionalidad dentro de una clase están
documentadas, con todos los métodos de las mismas detalladas.

Se ha tenido muy en cuenta la compatibilidad hacia atrás en el lenguaje, de forma que en toda la API se
especifica desde cuando se tiene disponible una funcionalidad. Es decir, si queremos programar para JDK 1.1,
podemos asegurarnos de que los métodos que usamos ya estaban disponibles.

Por otro lado, ciertas partes de los primeros APIs se han quedado obsolteas y, aunque se pueden seguir usando,
se recomienda utilizar alternativas. Esto está perfectamente documentando y el propio compilador nos informará
de ello.

1
Librerías Java

2. Entrada y Salida (E/S) en Java (java.io)


La entrada y salida dentro de Java utiliza la abstracción de flujos de datos para poder leer y escribir en ficheros.
Utilizando esta abstracción de flujos de datos, es sencillo por ejemplo el poner buffers en el acceso a datos o
filtros, de forma que por ejemplo, podamos tener un flujo inicial con los datos en formato plano y, pasarlos a
continuación por un filtro que nos los entregue ya con un cierto formato que nos permita leer de forma más
sencilla la información, o escribirla.

Por ejemplo si queremos leer de un fichero carácter a carácter, utilizaríamos el filtro CharArrayReader, el cual
nos iría entregando los datos mediante un flujo carácter a carácter.

3. Programación en red (java.net)


Con estas clases vamos a poder desarrollar de forma sencilla aplicaciones en red, orientadas al uso de sockets
para las comunicaciones. Junto con las clases que nos permiten utilizar dichos sockets tanto para clientes como
para servidores, nos encontramos clases que permiten trabajar de forma sencilla con URLs y el protocolo HTTP,
de forma que resulta sencillo el desarrollo de aplicaciones basadas en HTTP, es decir, podemos por ejemplo
desde Java acceder a todos los servicios que se ofrecen en la actualidad en Internet por medio de HTTP.

Veremos ejemplos que el tener en el propio lenguaje Java hebras, nos va a permitir desarrollar ejemplos d
servidores concurrentes de forma relativamente sencilla.

4. Creación de interfaces (javax.swing)


Como ya hemos comentado, originalmente la creación de interfaces gráficas en Java se realizaba con la librería
AWT (Abstract Window Toolkit). Pero esta librería tenía sería limitaciones como el número de widgets, sus
posibilidades o la gestión de eventos. Era realmente complejo el lograr funcionalidades que se obtenían de forma
sencilla con otras librerías.

Todo esto cambió con la llegada de Swing la cual ha mostrado una calidad y unas funcionalidades superiores a
AWT. De hecho, como se pudo ver el día de los ejemplos, Swing es una librería repleta de funcionalidades que
permiten la creación de interfaces gráficas muy ricas tanto estéticamente como en funcionalidades.

Dentro de la documentación de la librería se destaca el número de componentes de la misma, el seguir el modelo


MVC (Modelo Vista Controlador), la gestión de aceleración del teclado, la posibilidad de modificar al aspecto
para adaptarlo a entornos concretos, los escritorios virtuales dentro de la propia librería y aspectos como la
accesibilidad de la interfaz para personas con discapacidades. Este último punto SUN siempre lo ha tenido muy
presente, como ha demostrador en el mundo del software libre con el desarrollo de ATK.

2
Librerías Java

5. Applets en Java (java.applets)


Java inicialmente se comenzó a conocer de la mano de los navegadores web, en concreto de Netscape, que
incluyó una máquina virtual de Java desde los inicios de Java.

Gracias a este hecho, se pudo comenzar a desarrollar aplicaciones web con interfaces mucho más ricas que las
que permitía el simple HTML, o incluso HTML con Javascript. Parecía que el modelo de desarrollo web basado
en Java iba a ser omnipresente y masivo en Internet. Pero los problemas de rendimiento y las diferencias de
comportamiento entre las máquinas virtuales en diferentes entornos limitaron la adopción de esta tecnología que
a día de hoy es relevante, pero que no ha alcanzado los objetivos que apuntaba.

Como se verá en los ejemplos, un Applet Java no es más que una aplicación Java que se ejecuta dentro de la
máquina virtual de un navegador. Veremos que tiene algunas características especiales, como las medidas de
seguridad de los applets, la ejecución en una hebra del navegador cada uno de los applets, la ejecución
concurrente de más un applet o lo que ocurre cuando se recarga un página con applets.

Todos estos puntos hacen que la programación con applets no sea todo lo sencilla que se podría imaginar.

A estos problemas se unen que las máquinas virtuales no suelen estar en los navegadores todo lo actualizadas
que se querría, estando siempre varios meses por detrás del JDK. Esto se ha logrado salvar por medio del uso de
plugins, que introducen una máquina virtual dentro de Java, y que será lo que nosotros utilicemos durante las
prácticas.

Es importante resaltar que el código de las applets y las acciones que lleva acabo se controlan de forma
exhaustiva por medio de la máquina virtual, para evitar que applets malignas puedan dañar el sistema en el que
se ejecutan. Para salvar estas limitaciones, deberemos de tomar la medida de firmar los applets.

Para poder probar el desarrollo de las applets, se puede utilizar el visualizador de applets (appletviewer), que
acompaña al JDK.

6. Acceso a bases de datos (java.sql)


Es muy habitual dentro del desarrollo de una aplicación el necesitar un almacenamiento de datos algo más
completo que el que nos ofrece por ejemplo el sistema de ficheros. La llegada de XML ha permitido que dentro
de los ficheros se pueda almacenar la información mucho mejor estructurada, pero sin duda, siguen siendo las
bases de datos los grandes almacenes de datos de las aplicaciones.

Para desaclopar nuestro código del motor de base de datos que utilicemos, se suele utilizar habitualmente una
capa de software que ofrece un API común a la aplicación. Este API luego se traduce a cada motor de base de
datos específico por medio por medio de los controladores de cada uno de los motores.

Esta API en el caso de Java se llama JDBC (Java Database Connection) y permite el trabajar de forma sencilla
con los datos en base de datos relaciones, pudiendo utilizar el lenguaje SQL para poder trabajar con los datos de
las bases de datos.

3
Librerías Java

Fundamentalmente el API nos permite el construir peticiones SQL, invocarlas sobre la base de datos, y poder
trabajar de forma sencilla y potente con los resultados de esta petición. Se cubren además aspectos como las
transacciones o la conexión a la base de datos.

La versión actual de JDBC es la 2.0 y debemos de asegurarnos de que los controladores de JDBC con la que
trabajemos implementen esta versión de la API.

7. Programación web: JSP, Servlets, J2EE


Dentro de las librerías de Java sólo nos encontramos con una pequeña parte de la implementación de los
entornos J2EE que ha logrado una fuerte penetración dentro de los sistemas que integran en varias capas la
lógica de negocio de una compañía, el acceso a los datos y la presentación de los mismos utilizando diferentes
interfaces, principalmente la interfaz web utilizando JSP (Java Server Pages).

Para poder trabajar con J2EE lo ideal es utilizar alguna implementación de esta plataforma. Dentro del mundo
del software libre tenemos una excelente opción en J2EE y también en Enhydra.

8. Referencias