Site hosted by Angelfire.com: Build your free website today!
JAVA EN LINUX
Este artículo se encuentra bajo licencia GPL. Puedes utilizarlo para lo que quieras mientras me referencies como el autor original y no le cambies la licencia.

Introducción

Java es un conjunto de tecnologías que a grandes rasgos, son independientes de la arquitectura, por lo que en principio, no nos importa que desarrollemos en plataformas Linux, Solaris, HP-UX o Windows 95 y NT. El desarrollador tiene pues la libertad de elegir la plataforma que más se adecue a sus necesidades, y en la que se sienta más a gusto.

Desde sus inicios, las herramientas de desarrollo de Java estuvieron disponibles para Linux, y es más, se incluyó soporte en el núcleo de Linux para reconocer de forma automática a las clases de Java y ejecutarlas.

Inicialmente las herramientas de desarrollo JDK de SUN fue portado para Linux, ya que se disponía de todo el código fuente para reconstruir JDK en cualquier plataforma con un sistema operativo y unas librerías adecuadas (consultar http://www.blackdown.org), pero de esta forma, se dependía totalmente de SUN, ya que se utilizaba su código fuente. Por ello, se creó el proyecto JOLT (http://www.redhat.com/linux-info/jolt), apoyado desde RedHat, y cuyo objetivo es lograr un conjunto de herramientas de libre distribución que permitan el desarrollo de aplicaciones Java.
Historia de Java

Para comenzar a describir Java, analicemos sus orígenes, los motivos de su nacimiento. Para ello, empecemos citados las fechas más importantes de la historia de Java, según Patrick Naughton, uno de los creadores originales del navegador HotJava, el primer interprete de applets de Java.

Junio 1991
James Gosling comienza a trabajar en el interprete "Oak" el cual años después pasaría a conocerse como Java
Abril  1993
    Aparece NCSA Mosaic 1.0,  el primer navegador gráfico para Internet
Junio 1994
Nace el proyecto "Liveoak"  cuyo objetivo era usar Oak en el diseño de un pequeño sistema operativo
Julio 1994
Naughton replantea el proyecto "Liveoak" como una adaptación de Oak a Internet, realizando una primera implementación de un navegador de Web con soporte para Oak.
16 de Septiembre 1994
Payne y Naughton comienzan a escribir "WebRunner", un navegador similar a Mosaic al que más tarde se le llamaría "HotJava"
29 de Septiembre 1994
    El primer prototipo de HotJava es presentado a la junta ejecutiva de Sun.
Otoño  1994
    Van Hoff implementa  el compilador de Java en Java (Gosling lo había implementado en C)
23 de Mayo  1995
    Sun anuncia formalmente Java y HotJava en el SunWorld '95


Ahondando un poco más en la historia, todo comenzó cuando en SUN, parte de su departamento software se reveló ante un proceso de desarrollo software que consideraban caótico. Lograron que en SUN se les dejara trabajar juntos y formaron un grupo de seis personas (entre las que figuraban todas las personas referidas en la cronología) y comenzaron a estudiar como crear algo nuevo y espectacular, condiciones exigidas por Sun para permitir el grupo.

Comenzaron a estudiar como se podían comunicar diferentes equipos electrónicos de consumo, y vieron que cada uno de ellos tenía diferentes CPUs, por lo que cada fabricante debía de crear soluciones independientes para añadir funcionalidad a sus productos, algo además complicado ya que la mayoría de la lógica estaba cableada dentro del producto.

Por ello pensaron en desarrollar un sencillo lenguaje de programación (Oak) orientado a objetos, y que no fuera descabellado introducir en este tipo de electrónica de consumo. Analizaron con intensidad los aspectos visuales de las aplicaciones que atraían a la gente y como las personas interactuaban con las máquinas. Con el resultado de sus estudios realizaron un prototipo llamado "*7" en el que ya aparecía la mascota Duke de Java, y cuyo objetivo de diseño fue que su interfaz fuera amigable y divertida, y el dispositivo en sí debía de ser un pequeño artefacto personal.

Este dispositivo es en cierto modo la máquina virtual que hoy nos encontramos en el interior de todos nuestros navegadores, y el lenguaje interpretado Oak es lo que hoy conocemos como Java. Analizando estos orígenes es sencillo descubrir porqué Java es un lenguaje de programación mucho más reducido que C++, y porqué uno de sus criterios fue la sencillez. Y es más, la idea original de meter Java en los dispositivos electrónicos no ha sido ni mucho menos abandonada. Java se esta introduciendo en teléfonos,  televisores, tarjetas inteligentes e incluso anillos.

Como vemos Java ha necesitado de 4 años para su desarrollo, y su objetivo original no era ni mucho menos Internet. Inicialmente el interprete de Java junto con la máquina virtual Java tenían como objetivo formar un sistema operativo de pequeñas dimensiones y pocos recursos, que pudiera ser introducido en todo tipo de aparatos electrónicos de consumo, tal y como aparecía en Junio de 1994. Pero coincidió que en ese cierto momento se produjo la explosión de Internet, y la estrategia se cambio hacia el uso de esta pequeño máquina virtual y el lenguaje Java a Internet.

El resto de la historia es más conocido. Llegaron las applets a Internet revolucionando las hasta entonces páginas estáticas del WWW, hechas íntegramente en HTML. Al comienzo dichas applets no hacían más que cosas sencillas y vistosas, pero poco a poco se fue utilizando la mayor potencia que pone a nuestro servicio Java, comenzando una nueva era de aplicaciones en Internet, aplicaciones portables a lo largo de muchas plataformas, y que proporcionan una gran variedad de servicios.

En el artículo JavaX [5] se hace una descripción muy interesante de Java, de la que vamos a resaltar algunos de sus puntos.

Java es un conjunto de tecnologías, no es solo un lenguaje. De dichas tecnologías destacan las siguientes características:

Java es un lenguaje de programación cuyos principios fundamentales son los de Smalltalk pero con una sintaxis más cercana al C++. Sus objetivos de diseño fueron ser multiplataforma, distribuido, y orientado a las redes de comunicación.
Java tiene un entorno completo que lo recubre, ya que librerías como la de entornos gráficos o la red, están incluidas dentro del entorno de ejecución de Java.
Java es un lenguaje interpretado, lo que le hace independiente de la plataforma de ejecución, aunque menos eficiente que los lenguajes clásicos compilados.
Existe un entorno de ejecución común, conocido como máquina virtual Java.
Es independiente de la plataforma.
Tiene un amplio soporte para Internet, gracias a su librería TCP/IP de red.
Tiene un modelo de componentes muy completo conocido como JavaBeans, diseñado desde los comienzos de Java.



Máquina virtual Java

Introducción

La máquina virtual Java (JVM) fue pensada como un sistema muy sencillo, ya que debía ser albergado en dispositivos electrónicos de consumo, por lo que debemos alejarnos rápidamente de conceptos como los del PC, o los miniordenadores, arquitecturas infinitamente más complejas que esta.

La JVM es un ordenador abstracto que es capaz de ejecutar programas Java compilados. El término virtual es debido a que inicialmente no existían arquitecturas reales Java, por lo la JVM se solía implementar por software sobre plataformas ya existentes. Pero poco a poco van apareciendo los chips Java, que darán apoyo a la aparición de máquinas "reales" Java.

Como es de esperar al ser una máquina virtual, el rendimiento que logra en la ejecución del código Java está muy alejado de las aplicaciones desarrolladas para una plataforma específicamente, pero este factor que es muy importante, se ve compensado por otro factor aún más importante: la portabilidad.

Debido a la sencillez de diseño de la JVM, rápidamente se ha extendido a todas las arquitecturas existentes, logrando una capa software común para todas ellas. Este es un hecho clave ya que los programas Java pueden ser ejecutados indistintamente (si no del todo, si en gran medida) en cualquier plataforma, por lo que redes de ordenadores heterogéneas se esta convirtiendo en una piedra angular en el funcionamiento de las mismas.

La JVM fue diseñada para ser sencilla y pequeña debido a que la ambición de sus diseñadores era que estuviera en todos los sitios donde fuera posible. Y en verdad que lo han conseguido en Internet. Cada navegador de Web,  y este es posiblemente el software que más se ha extendido en toda la historia de la informática, existe una JVM en sus entrañas. Gracias a esta ubicuidad, los programa Java podrán funcionar en miles de dispositivos electrónicos.



Ilustración
: Portabilidad

El código portable

Para lograr la portabilidad ya comentada es necesario crear una arquitectura muy definida, de cara que nuestro código no sufra sorpresas al pasar de un entorno a otro. Por ello, una de las más importantes características de la JVM es su código máquina, conocido como "bytecode". Actualmente el bytecode es un lenguaje a caballo entre el lenguaje de bajo nivel (C por ejemplo) y el lenguaje ensamblador de un microprocesador determinado, aunque el objetivo es que el bytecode sea directamente interpretado por microprocesadores, y así lograr aumentar el rendimiento.

El proceso de la creación de un ejecutable Java, es similar al de cualquier otro lenguaje para el que tengamos el compilador adecuado para la arquitectura en la que trabajemos. Partimos de unas fuentes descritas en Java, y gracias a un compilador (el de el JDK se llama javac), generamos el bytecode que podrá ser interpretado por la máquina virtual. Los programas en Java se dividen en clases, y es más, todo en Java son objetos por lo que no puede aparecer código Java que no pertenezca a ninguna clase.

El lenguaje Java

Se cuenta que Java nació de un programador que se frustró utilizando C++ (James Gosling). Es cierto que C++ ha sido el lenguaje más potente que ha existido, pero no lo es menos su complejidad. Para un programador medio, el dominio de dicho lenguaje puede resultar poco menos que imposible, debido a la gran amplitud y complejidad de conceptos que puede llegar a manejar (herencia múltiple, enlazado en tiempo real, sobrecarga de operadores, funciones virtuales …)

Java es un lenguaje de propósito general, orientado a objetos, y con una fuerte inclinación hacia el desarrollo de entornos distribuidos y entornos gráficos.  Aunque cada día crece más y se le añaden nuevas posibilidades, por lo que ya es un lenguaje apto para cualquier tipo de desarrollo, salvando la ligera inestabilidad que aún le da los constantes cambios y el ser un lenguaje en plena evolución, problemas que se quieren solventar estandarizando Java, proceso en el que actualmente se encuentra inmerso SUN, pero cuyo futuro aún es bastante incierto.

Según los arquitectos de JavaSoft: << Java es un lenguaje sencillo, orientado a objetos, distribuido, interpretado, robusto, seguro, arquitecturalmente neutro, portable, multihebra y dinámico. >>

Desde los orígenes Java tuvo muy en cuenta las necesidades de la industria y han creado una gran variedad de APIs orientadas hacia ella, como la de gestión de redes (JMAPI),  la de empresas (Java Enterprise), la de comercio electrónico, la de tarjetas inteligentes o la de gestión de monederos electrónicos. Este apoyo a la industria se ha visto recompensado con el uso masivo del lenguaje Java logrado.

Las raíces de Java parten del lenguaje Smalltalk: fuerte tipado, enlazado dinámico, orientado a objetos  y con soporte para encapsulación, herencia, polimorfismo y delegación. Para sus sintaxis se eligió la de C++, basada en la de C, ya que sin duda es la más conocida.

Java es un lenguaje cercano también a C++, pero más simple. Se han eliminado los ficheros de cabecera, organizándose el código en paquetes, una metodología mucho más estructurada y elegante que los ficheros de cabecera. Los punteros también ha sido eliminados, y la gestión de memoria se realiza de forma automática, por recolección de basura automática, no existiendo la ocupación de memoria de forma explícita por parte del programador.

De entre las características avanzadas de C++, se han suprimido la sobrecarga de operadores, que a pesar de su potencia ha demostrado ser demasiado compleja, y la herencia múltiple, que se ha suprimido por la complejidad asociada a ella, y por la existencia de mecanismos alternativos que logran el mismo fin.

Java no solo ha eliminado cosas de C++. Ha incluido cosas nuevas, como el chequeo automático de los límites de las matrices, la estructuración del código fuente o la gestión automática de memoria.

A continuación vamos a acercarnos más al desarrollo de una aplicación con Java, para así poder ver más de cerca a lo que es lenguaje en sí.

Un  primer programa en Java

En este primer ejemplo vamos a imprimir un mensaje desde un programa Java. Con este ejemplo vamos a presentar características fundamentales de Java tales como la compilación de un programa Java, la estructuración del código fuente y algunas características de la programación orientada a objetos. Se supone que el lector esta familiarizado con la programación orientada a objetos, aunque el uso que hace de ella Java es más sencillo que en lenguajes como el C++.

El código del ejemplo queda como sigue:

// Ejemplo de programa Java
// Fichero: E:\Java\ejemplos\hola\saludoTexto.java
package ejemplos.hola;
public class saludoTexto {
public static void main (String args[]) {
System.out.println("Un saludo desde Java");
}
}

Lo primero es observar que para lo simple que es el objetivo del programa, el código que hay que escribir es quizás demasiado extenso. Esto está motivado porque en Java todo son objetos, por lo que cualquier programa, tenga la finalidad que tenga, ha de estar estructurado en objetos. Esto es algo que puede resultar incómodo para programar aplicaciones que no necesiten una estructuración tan grande, y lo que es más, esto puede restar eficiencia del código final generado.

Por ello Java en principio no parece apropiado para entornos como los sistemas en tiempo real de tratamiento masivo de datos, o para el diseño en 3D, es decir, Java no posee la flexibilidad de C++ que se adapta mucho mejor a múltiples paradigmas de programación. Esta falta de flexibilidad sin embargo es la que logra que Java sea un lenguaje sencillo.

Las dos primeras líneas del código son líneas de comentario, cuya sintaxis es como la de C++. La tercera línea nos acerca una de las potentes características de Java: la fuerte estructuración del código fuente.

Un programa en Java está formado por un conjunto de clases, que normalmente forman un paquete. Un paquete es un conjunto de clases que se encuentran en un mismo directorio y que declaran la pertenencia a dicho paquete mediante la directiva "package", tal y como aparece en la tercera línea del presente ejemplo. En nuestro ejemplo el paquete se llama "ejemplos.hola" y no es casualidad que la ruta (path) para llegar al directorio del paquete sea "e:\Java\ejemplos\hola". La JVM para buscar las clases de una aplicación, utiliza una variable de entorno llamada "CLASSPATH".

En nuestro clase, dicha variable tenía el valor "CLASSPATH=/usr/local/jdk/lib/classes:.". Con esto le indicamos a la JVM que debe buscar las clases en dichos directorios. La JVM para encontrar las clases de una aplicación, va a dichos directorios en el orden especificado, y añade a la ruta del directorio, el nombre del paquete, considerando que los "." se traducen por subdirectorios. En nuestro caso, y tras compilar el código fuente "saludoTexto.java", la forma de indicar el acceso a la clase principal de nuestra aplicación es "java ejemplos.hola.saludoTexto”, donde “java” representa a la máquina virtual Java de Linux.

El código fuente de las clases de una aplicación Java está almacenado en ficheros, cuya extensión normalmente es ".java". El nombre de dichos ficheros no se puede elegir de forma arbitraria. Como vemos en nuestro ejemplo, dicho fichero se llama "saludoTexto.java". Esto es debido a que contiene la clase "public" de nombre "saludoTexto", por lo que ha de llamarse así. Por lo tanto, un fichero con clases Java puede contener como máximo una clase pública. Las reglas de visibilidad de las clases en Java son similares a las de otros lenguajes de programación: a los clases public se puede acceder desde cualquier otra clase; a las miembros protected se puede acceder desde cualquier clase del mismo paquete o desde miembros derivadas de dicha clase desde otros paquetes; a los miembros por defecto (a las que no se las asigna atributo) se puede acceder sólo desde miembros del mismo paquete; a las miembros private solo se puede acceder desde el interior de la propia clase. Por miembro aquí entendemos a las propias clases y al contenido posible de una clase, variables y funciones.

Esta estructuración tan fuerte del código Java obliga al programador a ser ordenado. Es otra de las características de Java: obliga al programador a utilizar unas reglas que favorezcan el mantenimiento del código. Otro ejemplo en este sentido son las excepciones. Estos objetos aparecen ante condiciones excepcionales en el programa como pueden ser errores. En muchos casos el programador está obligado a crear código que trate las excepciones, lográndose así un código más robusto ya que reacciona ante los errores. Se resalta aquí la palabra obligar, ya que como todo programador conoce, si no se le obliga a ser ordenado y a programar de forma robusta, dichos aspectos se pierden frente a criterios como la urgencia del código.


Podemos ya analizar como se logra el objetivo del programa, que no es otro que escribir un mensaje en la pantalla. Como es obligado debemos crear un objeto principal, que es el que almacena el punto de entrada a nuestra aplicación. En realidad esta clase es un poco ficticia, ya que lo único que hace es tener definido un método estático con el nombre "main". Recordemos que dentro de la programación orientada a objetos, los miembros estáticos son aquellos que son compartidos por todas las instancias de una clase. En nuestro caso, no vamos a crear ninguna instancia de esta clase, simplemente vamos a hacer uso de esa función estática de la clase. Es una forma de simular el estilo de la programación funcional en un mundo donde solo hay objetos. Este mismo concepto se utiliza en la línea donde se imprime el mensaje en pantalla: System.out.println("Un saludo desde Java"). Dentro de los paquetes estándar de Java, está el llamado "System". Dentro de este paquete este la clase "out" que representa a la salida estándar. Como normalmente la salida estándar va ser sólo una, no se van a crear instancias (objetos) de la clase "out", sino que se van a utilizar funciones estáticas definidas en dicha clase. Una de estas funciones es "println", que recibe como parámetro una cadena de caracteres y al imprime en la salida estándar.

Para compilar el programa hemos utilizado el compilador de Java que integra el JDK. La compilación se realiza mediante la orden: "javac saludoTexto.java". Como resultado de esta compilación obtenemos el fichero "saludoTexto.class", que podemos pasar a ejecutar utilizando la JVM que viene también incorporada dentro del JDK. Para ello damos la orden: "java ejemplos.hola.saludoTexto".

Pasamos a realizar a continuación una pequeña descripción de las herramientas de desarrollo para Java, de forma que el lector se pueda ir familiarizando con la gran variedad de herramientas que componen el JDK.
EL ENTORNO DE DESARROLLO DE JAVA

Desde sus orígenes el entorno de desarrollo de Java más utilizado ha sido el proporcionado por JavaSoft, conocido como JDK: Java Development Kit.

Este es un entorno más pensado para analizar las características de Java, y aprender su utilización, que para un desarrollo comercial de programas Java. Pero hasta el momento no existe ningún entorno de desarrollo lo suficientemente evolucionado como para que merezca la pena invertir tiempo y dinero en él. El JDK se puede obtener de forma gratuita y es el único entorno de desarrollo que siempre esta al día, y con la velocidad que aún hoy cambia Java, se hace muchas veces imprescindible utilizar la última versión, ya que los cambios son tan significativos, que el no utilizarla podría dejar nuestras aplicaciones obsoletas incluso antes de haber llegado a la fase de producción.

Las herramientas que se incluyen dentro del JDK 1.1.3 para Linux, la última versión disponible en la actualidad (Enero 1998) son:

Compilador de Java (javac)
Compila programas escritos en el lenguaje de programación Java convirtiéndolos en bytecodes

Interprete de Java (java)
            Ejecuta los bytecodes Java, es decir, ejecuta los programas Java



Interprete de ejecución de Java (jre)
Similar a java, pero simplificado para los usuarios que no necesiten herramientas de desarrollo en para Java.

Java AppletViewer (appletviewer)
Herramienta para depurar y ejecutar applets
            
Depurador de Java (jdb)
            Herramienta para encontrar los fallos dentro de los programas Java

Desensamblador de ficheros de clases (javap)
Herramienta que a partir de bytecode, genera ficheros de código en Java

Generador de documentación Java (javadoc)
Analiza las declaraciones y los comentarios que están dentro de un conjunto de ficheros fuente Java y genera un conjunto de páginas HTML describiendo las clases "public" y "protected", las interfaces, los métodos, los constructores y los campos. También genera una jerarquía de clases y un índice con todos los miembros de la aplicación.

Generador de cabeceras y cabos para C (javah)
Para utilizar métodos nativos en lenguaje C desde Java

Herramienta de archivación Java  (jar)
Combina varias clases Java y sus recursos asociados en un único fichero

Herramienta de firmas digitales (javakey)
Gestiona entidades, incluyendo sus claves y certificados

Convertidor Native-To-ASCII (native2ascii)
Convierte un fichero con codificación nativa a un fichero ascii en el que los caracteres no ascii aparecen con la notación de Unicode \udddd

Generador de cabos para aplicaciones Java RMI (rmic)

Registro de Objetos Remotos Java (rmiregistry)
Servidor de directorio para objetos de RMI

Comando para control de versiones (serialver)
Proporciona el "serialVersionUID" para una o más clases en un formato adecuado para copiarlo en clases en desarrollo

Utilidad de conversión AWT 1.1 (updateAWT)
Actualiza los nombres que han cambiado en los métodos de AWT 1.02 en una aplicación.

Tras cada versión aparecen nuevas herramientas, nuevas clases dentro de las librerías, es complicado seguir la evolución de este entorno. Por ejemplo, para la versión de JDK 1.2 se espera que la implementación de CORBA de JavaSoft conocida como Java IDL este presente dentro del entorno.

La instalación del entorno de desarrollo es muy sencilla. Tan solo hay que incluir en la ruta principal (path) la ruta para llegar a los binarios de JDK, y hay que definir la variable de entorno "CLASSPATH", indicando a la JVM donde se encuentran las clases dentro del sistema.
Todo el entorno está basado en funcionamiento en modo texto.

Otra forma de desarrollar con Java, si lo único que se van a realizar son applets para Internet, es utilizar el navegador de Netscape o el de Microsoft, ya que llevan incluido en ellos la JVM y por lo tanto, nos permiten la ejecución de applets en su interior. Aunque desde la experiencia, el desarrollo de applets es mucho más sencillo utilizando el visualizado de applets que viene incluido en el JDK, aunque puede ocurrir que nuevas características que este utilice aún no estén soportadas en los navegadores.

En Diciembre de 1997, Netscape en su Communicator ya soporta la gran mayoría de JDK 1.1, y en particular, el nuevo modelo de eventos y la nueva AWT 1.1, por lo que ya se pueden utilizar Beans dentro del navegador.

Un mundo de componentes: JavaBeans

El mundo de componentes software es el sueño de todo los desarrolladores software. Desde hace mucho tiempo, siempre se ha buscado el empaquetar un conjunto de funcionalidades en un componente software, que fuera fácilmente reutilizable desde otros programas o componentes. En los últimos años, este objetivo cada vez está más cercano. Entornos visuales como el de Visual Basic o el de Delphi se han acercado a esta solución. Ahora con Java, llegan las Beans de Java.

Los Beans están compuestos por unas propiedades (características públicas del Bean), unos métodos (que puede hacer el Bean) y un conjunto de eventos, es decir, son objetos en los que cobran mucha importancia aspectos tales como su estado y la gestión de eventos.

Los Beans llevan incorporada información para permitir su manipulación visual durante la fase de diseño, por lo que el desarrollo se centra en la fase de diseño (interacción entre los componentes), fase a partir de la cual se genera el código de forma automática.

Los arquitectura de componentes de JavaBean es demasiado amplia para el presente artículo, por lo que se recomienda al lector interesado que consulte el servidor de JavaSoft donde encontrará información abundante sobre el tema, así como tutoriales de programación.

Herramientas de libre distribución

Como no podía ser menos en el mundo Linux, han surgido herramientas de libre distribución con licencias GPL y Berkeley.

Dichas herramientas han demostrado ser mucho más rápidas y eficientes que las que constituyen el JDK para Linux, algo normal al ser este conjunto una referencia y no una implementación comercial de Java.

Las herramientas que aquí destacaremos son dos: un compilador de Java conocido como guavac, bajo licencia GPL, y una máquina virtual conocida como kaffe, bajo licencia Berkeley. Aún no se ha logrado un conjunto completo de herramientas para el desarrollo de Java, ya que aún se necesitan las librerías de clases Java de SUN, de libre distribución por el momento, para tener un sistema de desarrollo completo.

El compilador guavac

<< Guavac es un compilador del lenguaje Java, desarrollado por Effective Edge
Technologies y distribuido bajo la licencia GPL >>

La versión actual de guavac es la 1.0, y en teoría no debería de tener problemas en compilar cualquier conjunto de fuentes en Java. Recordemos que la especificación del lenguaje Java, así como el formato del bytecode no se ha modificado desde su publicación original, por lo que el comportamiento de los compiladores debe ser bastante estable.

Guavac está escrito en C++, por lo que en Linux no tenemos ningún problema en compilarlo. Es más, en Debian 1.3.1 con la secuencia "configure -> make -> make install" se obtienen los ejecutables del compilador y las utilidades asociadas sin ningún problema. Para obtener la distribución, se puede consultar la página de web del proyecto http://HTTP.CS.Berkeley.EDU/~engberg/guavac

La máquina virtual Kaffe

<< Kaffe es una máquina virtual diseñada para ejecuta bytecode de Java >>

La versión actual de Kaffe es la 0.92 y en ella ya es compatible con JDK 1.1.3. Una de las características más destacadas de kaffe es su compilador JIT (Just in time), cuyo objetivo es traducir bytecode a código nativo del microprocesador de la arquitectura, con lo que se logra que Java se ejecute a velocidades similares a la de los programas compilados clásicos. Este soporte ya esta en Kaffe para los microprocesadores de las series Motorola 68000, Intel 386, Sparc y Alpha, plataformas en las que también existe Linux para ellas, por lo que la conjunción Linux y Kaffe JIT está presente en un gran número de arquitecuras.

Kaffe se puede obtener de http://www.kaffe.org, donde se puede observar la importancia del proyecto, para el que se ha creado un dominio en Internet.

En la actualidad solo carece de la posibilidad de desarrollar entornos gráficos con AWT, pero un proyecto paralelo le ha dado este soporte a Kaffe, el proyecto BISSAWT que se puede consultar en http://www.biss-net.com/biss-awt.html.

Para detalles específicos sobre la compilación y la instalación, se puede consultar la documentación que acompaña a la distribución. En Debian 1.3.1 se ha compilado sin ningún tipo de problema, mediante la secuencia "configure -> make -> make install" dentro del directorio principal de la distribución.

En la actualidad aún son necesarias las clases de Java de SUN para poder utilizar esta máquina virtual, ya que aún dentro del proyecto JOLT no se han desarrollado dichas clases.

El desarrollador principal de Kaffe es Tim Wilkinson tim@kaffe.org.

Conclusiones

Java es una tecnología en plena ebullición y que ningún desarrollador debe dejar de analizar e incluso aprender. Nunca en el mundo software se había asimilado una tecnología a semejante velocidad, y junto con Internet, está configurando un nuevo entorno en el mundo software y hardware.

URLs del artículo

http://java.sun.com
http://www.kaffe.org
http://HTTP.CS.Berkeley.EDU/~engberg/guavac

http://www.redhat.com/linux-info/jolt









Document converted from word 8 by MSWordView (mswordview 0.5.1)
MSWordView written by Caolan McNamara