ads
Mostrando entradas con la etiqueta 1. Introduccion. Mostrar todas las entradas

Mas de Java  

Posted by Danny in

El uso principal que se hace de Internet e incluso de las redes internas (corporativas) es correo electrónico (e-mail), aunque actualmente hay un auge sorprendente de la navegación web. Los documentos web pueden contener variedad de texto, gráficos de todas clases y proporcionar enlaces hipertexto hacia cualquier lugar de la red. Los navegadores utilizan documentos escritos en lenguaje HTML. La combinación actual de navegadores HTML/WWW están limitados pues a texto y gráficos. Si se quiere reproducir un sonido o ejecutar un programa de demostración, primero hemos de bajarnos (download) el fichero en cuestión y luego utilizar un programa en nuestro ordenador capaz de entender el formato de ese fichero, o bien cargar un módulo (plug-in) en nuestro navegador para que pueda interpretar el fichero que hemos bajado.

Hasta ahora, la única forma de realizar una página web con contenido interactivo, era mediante la interfaz CGI (Common Gateway Interface), que permite pasar parámetros entre formularios definidos en lenguaje HTML y programas escritos en Perl o en C. Esta interfaz resulta muy incómoda de programar y es pobre en sus posibilidades.

El lenguaje Java y los navegadores con soporte Java, proporcionan una forma diferente de hacer que ese navegador sea capaz de ejecutar programas. Con Java se puede reproducir sonido directamente desde el navegador, se pueden visitar home pages con animaciones, se puede enseñar al navegador a manejar nuevos formatos de ficheros, e incluso, cuando se pueda transmitir video por las líneas telefónicas, nuestro navegador estará preparado para mostrar esas imágenes.

Utilizando Java, se pueden eliminar los inconvenientes de la interfaz CGI y también se pueden añadir aplicaciones que vayan desde experimentos científicos interactivos de propósito educativo, a juegos o aplicaciones especializadas para la televenta. Es posible implementar publicidad interactiva y periódicos personalizados. Por ejemplo, alguien podría escribir un programa Java que implementara una simulación química interactiva -una cadena de adn-. Utilizando un navegador con soporte Java, un usuario podría recibir fácilmente esa simulación e interaccionar con ella, en lugar de conseguir simplemente un dibujo estático y algo de texto. Lo recibido cobra vida. Además, con Java podemos estar seguros de que el código que hace funcionar el experimento químico no contiene ningún trozo de código malicioso que dañe al sistema. El código que intente actuar destructivamente o que contenga errores, no podrá traspasar los muros defensivos colocados por las características de seguridad y robustez de Java.

Además, Java proporciona una nueva forma de acceder a las aplicaciones. El software viaja transparentemente a través de la red. No hay necesidad de instalar las aplicaciones, ellas mismas vienen cuando se necesitan. Por ejemplo, la mayoría de los navegadores del Web pueden procesar un reducido número de formatos gráficos (típicamente GIF y JPEG). Si se encuentran con otro tipo de formato, el navegador estándar no tiene capacidad para procesarlo, tendría que ser actualizado para poder aprovechar las ventajas del nuevo formato. Sin embargo, un navegador con soporte Java puede enlazar con el servidor que contiene el algoritmo que procesa ese nuevo formato y mostrar la imagen. Por lo tanto, si alguien inventa un nuevo algoritmo de compresión para imágenes, el inventor sólo necesita estar seguro de que hay una copia en código Java de ese algoritmo instalada en el servidor que contiene las imágenes que quiere publicar. Es decir, los navegadores con soporte Java se actualizan a sí mismos sobre la marcha, cuando encuentran un nuevo tipo de fichero o algoritmo.

En esta filosofía es en la que se basan los NC (Network Computer), que serán ordenadores sin disco y con mucha memoria. Sus programas residen en un servidor que se los envía cuando los solicita. Es quizá un guiño al pasado y una versión futurista de lo que ha sido un Terminal-X en otros tiempos, salvando las diferencias, evidentemente (no sea que alguien me tilde de irreverente con las nuevas tecnologías).

Portabilidad de Java  

Posted by Danny in

Java es una palabra que actualmente está en boca de todos y ha creado una auténtica revolución. Nosotros nos enfocaremos al lenguaje Java, y la verdad es que no es para tanto el armar ese revuelo. Verdad es que Java es una gran idea, pero, no escandalosamente genial. Quizá todo se haya visto magnificado por Internet, pero Java se anuncia como un lenguaje completo de propósito general y, bueno, hay ciertas porciones del mismo que no están definidas o son discutibles, y algunas características son ciertamente oscuras. A lo largo del Tutorial iremos presentando todas esas cosas.

La creación de este Tutorial ha partido de la necesidad de aprendizaje del lenguaje Java para implantarlo en aplicaciones críticas. Se necesitaba una evaluación del lenguaje para comprobar si podría emplearse en el desarrollo de pequeñas aplicaciones (no necesariamente con Internet por medio, aunque también). Esto ha hecho que hayamos investigado en muchas fuentes, principalmente de Sun Microsystems, y obtenido las conclusiones a que queríamos llegar. Que resumiendo vienen a indicarnos que, tal como se encuentra definido Java actualmente y con las herramientas que hay, si no hay interés en Internet, lo mejor es olvidarse de Java. Aunque pronto pueda que esta afirmación sea falsa, dado el empeño que todo el mundo está poniendo en llevar a Java a buen puerto, pero la decisión del grupo que hemos formado fue descartar Java (momentáneamente).

En toda esta historia nos hemos dado cuenta de que falta literatura en castellano; como siempre, vamos a remolque. Por ello ha sido el desarrollar este Tutorial de Java, que esperamos (espero) humildemente, sea de provecho para alguien. Eso sería ya una gran satisfacción para mí. Quizá yo no sea la persona más indicada para estar escribiendo esto, porque todavía soy y siempre me consideraré un principiante en Java, pero sí que puedo transmitir los pocos conocimientos que he adquirido, y eso es lo que haré.

Todas las sugerencias que alguien pueda ofrecer, serán bienvenidas. Prometo contestar a todo el mundo, si no me sobrepasa el correo. Y me gustaría que pudiésemos ir haciendo crecer este Tutorial de Java entre mucha más gente. No obstante, la experiencia de muchos años de BBS me dice que hay mucho escuchador y poco participador, por lo que el Tutorial esta casi planteado en un noventa por ciento. Aunque, repito, todas las colaboraciones serán bienvenidas y si van con el estilo, incluidas en el Tutorial de Java que arranca aquí.

Y una recomendación final, antes de que alguien se decida a publicar un applet nada más terminar de leerse éste u otro Tutorial sobre Java. Hay que ser críticos con nuestro trabajo. Debemos valorar mucho nuestra estima y, por ende, el código que escribimos bajo nuestro nombre. Actualmente hay muchos applets que se pueden visualizar y, desgraciadamente, bastantes de ellos son de muy baja calidad, escritos por programadores que están dando sus primeros balbuceos en Java. Más que applets son crapplets (crap es una forma coloquial de mierda), algunos de ellos incluso se quedan colgados o no tienen un rendimiento mínimo aceptable. Debemos renunciar a una excesiva rapidez de desarrollo en beneficio de un código fiable y bien diseñado. Y parafraseando palabras de Alex Newman, director ejecutivo de Sun User Group/Java: "Hay un montón de buenos programadores que no se dedican a ir por ahí vendiendo código. Lo que hacen es buscar trabajo. Saber programar en Java será algo positivo para incluir en el currículum".

No obstante, y para que todos tengamos una idea general de lo que es Java, haremos una serie de aclaraciones o indicaciones, para que alguien que no esté muy decidido a aprender Java, pueda tener elementos de juicio y de comparación para tomar esa decisión. Por ello, haremos una introducción más extensa de lo que sería habitual en un Tutorial, lo que también me permitirá verter ciertas opiniones que en otro sitio no tendrían cabida.

Esta es la segunda versión del Tutorial de Java corregida, ampliada y readaptada para acomodarse a las nuevas características introducidas a Java por Sun desde la versión 1.1 del Java Development Kit (JDK) y adaptándose en todo lo posible a la versión 1.2. He revisado todo el código fuente, he añadido algunos ejemplos más en las partes en las que más consultas he tenido y también, en respuesta a demanda, he incorporado algunas secciones, que aunque no son tan básicas como pretendo yo con el Tutorial, sí parece que resultan muy interesantes a la mayoría de los lectores de la versión anterior del Tutorial (que todavía se puede encontrar en la dirección http://www.fie.us.es/info/internet/JAVA/).

ESTA NO ES UNA TRADUCCION DEL "JAVA TUTORIAL" DE SUN Microsystems, POR LO QUE LOS TEMAS QUE SE TRATAN SON LOS QUE A MI ME PARECEN MAS INTERESANTES. TAMPOCO ME UNE NINGUN TIPO DE RELACION CON SUN NI CON NINGUNA DE SUS FILIALES.

Quien vaya a desarrollar applets para su publicación en Internet y pretenda que llegue a la mayoría de navegantes que aterricen en su página, ha de saber que si desarrolla con el JDK 1.1.X, y más con el JDK 1.2, sus applets no podrán verse con una versión inferior a la 4.0 de los navegadores más extendidos, Netscape y Microsoft Explorer. E incluso estos navegadores no tienen soporte total del JDK 1.1.X, a fecha de hoy.

El JDK 1.1 fue un tremendo paso adelante en la evolución de Java y en el JDK 1.2 se han incorporado a la Plataforma Java muchas de las APIs que estaban en versiones individuales. El rendimiento y estabilidad de Java son mucho más sólidos, y los JavaBeans van a representar un modelo a seguir por muchas empresas. También el movimiento 100% Pure Java asegurará que los applets que hoy se están desarrollando, funcionarán en cualquier entorno del mañana, y no todo el mundo puede precisar algo semejante. Creo que nunca una tecnología nueva ha sido adoptada por tanta gente en tan poco tiempo.

Las críticas que se hacen a Java de que no está completamente definido y de que sus capacidades dejan bastante que desear, deben hacer reflexionar a quienes las predican, porque es menester recordar que el rendimiento es un camino no una meta, siempre estamos en condiciones de mejorar algo, sea lo que sea. Y tal como se está moviendo el mercado entorno a Java, pronto veremos que Java entra de verdad en el mundo de los negocios y su estabilidad se verá infinitamente más robustecida.

Conocimientos Previos

En el planteamiento inicial se supone que tú, que estás leyendo esto, tienes experiencia en algún lenguaje de programación, como puede ser C o un lenguaje similar, también que sabes utilizar un navegador de WWW como Netscape o Internet Explorer, también que eres capaz de desarrollar páginas WWW con HTML y comprendes la programación orientada a objetos. Intentaré que estos conocimientos sean suficientes para poder seguir el Tutorial. Haré referencias a C++ para la mejor comprensión de lo que hace diferente a Java, porque muchos de los lectores del anterior Tutorial tenían conocimientos de C++, y la mayoría de las consultas que se me hacen van en esa orientación.

El entorno de desarrollo habitual entre la gente que trabajamos con el JDK (los pobres sin poder para comprarse herramientas comerciales) consiste en tener abiertas sobre el escritorio de la pantalla, ya sea en Solaris, Windows '95/NT o Linux, varias ventanas, que usamos para lo siguiente:

  • En una de ellas tenemos abierto HotJava, apuntando al fichero packages.html de la documentación del API de Java, para poder tener al momento la información sobre los parámetros de llamada, valores de retorno y la información de cada una de las funciones que estemos utilizando.
  • Los que estén desarrollando sobre Windows '95 o NT, podrán disponer de la documentación del API también desde el sistema de ayuda de Windows si han descargado esta documentación en formato Winhelp desde Dippy.
  • En otra tendremos abierto un navegador con soporte Java, normalmente será Netscape, en una versión superior a la 4.0.3, para que tenga soporte al JDK 1.1.X en los applets que desarrollemos, o Microsoft Explorer, en versión 4.0 o superior. Aunque, lo mejor sin duda es utilizar, por ahora, el appletviewer para la verificación del correcto funcionamiento de los applets, antes de pelearnos con problemas que pueden originarse en el soporte a medias del JDK 1.1.X por parte de los navegadores comerciales.
  • Tendremos abierta otra ventana con un editor, donde iremos escribiendo el código de nuestro applet o aplicación Java. En Windows '95 son muy utilizados el editor Jpad y Diva. Aunque en estos momentos, quien tiene potencia suficiente en su ordenador, está programando Java desde el Java Workshop de Sun.
  • Y una ventana más donde tendremos acceso al prompt del sistema para poder invocar al compilador y a las demás herramientas del JDK.
  • Los que tengan algo de dinero podrán estar utilizando alguno de los entornos shareware que ya hay disponibles como RadJa, Kawa o JavaMaker.
  • Los que disponen de poder adquisitivo abundante habrán empezado con el Symantec Café de Symantec, ahora estarán trabajando con Borland Latte, o estarán entusiasmados con el Visual J++ de Microsoft. Y los enamorados de OS2, que en su versión 4.0 ya incluía una Máquina Virtual Java (JVM) en su kernel, se lo pasarán en grande con el IBM VisualAge for Java.
  • También somos afortunados los que podemos disfrutar de las ventajas que ofrece Linux, que con ser el sistema operativo más económico, resulta ser uno de los más potentes. Y esto también es válido cuando se trata de Java, porque el porting realizado del JDK es muy bueno.

Objetivos

Entre los objetivos que me he marcado están los que expongo a continuación. Estos objetivos esperan que tú, que estás leyendo esto, cuando llegues al final del Tutorial, saques el máximo aprovechamiento de lo que yo sé y seas capaz de:

  • Crear páginas HTML que llamen a applets Java
  • Crear contextos gráficos en Java
  • Utilizar los componentes del interfaz gráfico que proporciona Java
  • Crear aplicaciones autónomas en Java
  • Crear aplicaciones multi-threaded
  • Utilizar las librerías de E/S para manipular ficheros de texto y datos
  • Crear servidores y clientes TCP/IP que se comuniquen vía socket

Intentaré cumplir lo que acabo de prometer, aunque también pido paciencia, ya que Java en este momento es un lenguaje con una tremenda vitalidad, que todavía estoy yo aprendiendo. Y por otro lado, no es nada sencillo el hacerse entender, por lo que tengo que dar varias vueltas a cada una de las frases que escribo para cerciorarme de que tú, lector, comprendes exactamente lo que yo te quiero transmitir.

Eso sí, tampoco esperes que te proporcione ungüentos milagrosos, que por arte de magia traspasen el conocimiento. El estudio de Java, y sus applets, no será sino el examen de una particular forma de ver las cosas, con un poco de estructuración en la presentación y un cierto trasfondo de Internet; el resto es, como siempre, tarea del programador. Es decir, uno puede aprender a construir un applet, o dejar que alguna de las herramientas lo construyan automáticamente, igual que puede enseñarse a codificar un diálogo en un entorno gráfico, pero... la inteligencia de esa pieza siempre dependerá de la habilidad y experiencia del programador respecto del lenguaje usado y de sus recursos. En fin, un buen applet será únicamente resultado del trabajo de un buen programador Java.

Para concluir esta presentación, aquí está un enlace a páginas que mantienen relación con el Tutorial, bien en forma de enlaces o mirrors, y en donde puedes encontrar información que cumplimente todo lo que en este Tutorial se cuenta.

Instancias  

Posted by Danny in

Podemos interpretar que una clase es el plano que describe como es un objeto de la clase, por tanto podemos entender que a partir de la clase podemos fabricar objetos. A ese objeto construido se le denomina instancia, y al proceso de construir un objeto se le llama instanciación.

Cuando se construye un objeto es necesario dar un valor inicial a sus atributos, es por ello que existe un método especial en cada clase, llamado constructor, que es ejecutado de forma automática cada vez que es instanciada una variable. Generalmente el constructor se llama igual que la clase y no devuelve ningún valor. Análogamente, destructor es un método perteneciente a una clase que es ejecutado de forma automática cuando un objeto es destruido. Java no soporta los destructores. Es posible que exista más de un constructor en una clase, diferenciados sólo en los parámetros que recibe, pero en la instanciación sólo será utilizado uno de los constructores.

Es recomendable emplear el constructor para inicializar las variables internas del objeto, o para obtener recursos, mientras que el destructor se suele emplear para liberar esos recursos obtenidos en el constructor.

Imaginemos ahora un televisor, nosotros que poseemos el mando a distancia podemos manejar el volumen del televisor, pero no nos haría gracia que otra persona pudiese manejar el volumen a su antojo. Lo mismo sucede con los objetos: un objeto que no quiere que otro objeto llame a un método o acceda a un atributo, debe definir a dichos atributos y métodos como privados. En cambio si los definimos como públicos, cualquier objeto podrá utilizarlos.

Pensemos ahora en un coche deportivo y en un coche utilitario, ambos son coches, pero hacemos la distinción deportivo y utilitario porque son diferencias lo suficientemente importantes como para ser tenidas en cuenta, pero no tanto, como para pensar que uno es un coche, pero el otro no. Esta situación se interpreta pensando en que existen dos clases: Deportivo y Utilitario, pero que ambas, además de sus propias características (atributos y métodos), poseen las de la clase coche, esto es la herencia. Denominaremos clase base a la clase de la cuál heredamos y derivada a la clase que hereda de la clase base.

Introducción a la programación orientada a objetos  

Posted by Danny in

Si nos fijamos en la vida real, podremos apreciar que casi todo se compone de objetos (coche, lapicero, casa y, por qué no, personas). Todos entendemos que tanto un BMW verde, como un SEAT rojo son coches, pero son distintos en su aspecto físico. Pero a pesar de esa diferencia de aspecto entendemos que ambos tienen unas características comunes como son poseer ruedas, un volante, asientos,... Esas características comunes son las que hacen pensar en el concepto coche en ambos casos. A partir de ahora podemos interpretar que el BMW y el SEAT son objetos, y el tipo o clase, de esos objetos es coche.

Además, podemos suponer que la clase de un objeto describe como es dicho objeto.

Por ejemplo:

clase Coche: 4 ruedas, 1 volante, 5 asientos, acelerar, frenar, girar

Como podemos ver, esta clase no sólo describe qué cosas posee un coche, sino que también describe qué acciones puede realizar un coche (acelerar, frenar y girar). Es decir, una clase define los atributos y las acciones (o métodos) que puede realizar un objeto de la clase.

Además podemos comprobar que un objeto puede estar formado por otros objetos, por ejemplo el coche posee 4 objetos de la clase Rueda.

En el mundo real los objetos se relacionan entre sí, un objeto puede pedir a otro que realice alguna acción por él. En la vida real una persona acelera, pero lo hace pidiéndoselo al coche, que es quien realmente sabe acelerar, no la persona. El hecho de que un objeto llame a un método de otro objeto, se indica diciendo que el primer objeto ha enviado un mensaje al segundo objeto, el nombre del mensaje es el nombre de la función llamada.

Práctica con características del lenguaje java  

Posted by Danny in ,

Ahora veamos esos mismos pasos con más detalle:

Práctica:

Construyamos una clase que pida un número por teclado y muestre la tabla de multiplicar de dicho número. Lo primero es escribir el código de dicha clase, para ello emplearemos cualquier editor de texto, pero hay que guardar el fichero de texto como texto plano.

El fichero vamos a llamarlo TablaMultiplicar.java y lo vamos a almacenar en un directorio, por ejemplo c:\java

El código a escribir, y todavía no nos preocupamos por como es, será:

public class TablaMultiplicar{

public static void main(String arg[]){

int numero = Integer.parseInt(arg[0]);

for(int i = 1 ; i<=10 ; i++){

System.out.println(""+numero+" * "+i+" = "+(i*numero));

}

}

}

Una vez escrito, debemos guardar los cambios en el fichero fuente. Ahora debemos compilar el fuente, para ello iremos a una ventana de Consola y mediante cd nos moveremos hasta el directorio donde se encuentre el fichero fuente:

cd c:\java

Una vez allí debemos de compilar el código fuente:

javac TablaMultiplicar.java

Esto provocará, si no hay errores en el código, que se genere un fichero llamado TablaMultiplicar.class

Y ya podemos ejecutar la aplicación:

java TablaMultiplicar 6

Ahora probaremos a compilar un fuente con un error de sintaxis dentro del código, el fichero TablaMultiplicarError.java lo obtendremos de la carpeta de ejemplos del manual.

javac TablaMultiplicarError.java

Esto provocará que se muestre por pantalla el siguiente error:

TablaMultiplicarError.java:3: ';' expected

int numero = Integer.parseInt(arg[0])

^

1 error

dentro del cuál podemos apreciar que existe un error en el fichero TablaMultiplicarError.java en la línea 3, siendo además el error que se esperaba un ';'. Después aparece la línea en la cuál está situado el error.

Características del lenguaje java (III)  

Posted by Danny in

En la zona de variables del sistema agregar una nueva variable llamada CLASSPATH con el siguiente valor: .;c:\jsdk1.4\lib

También en la zona de variables del sistema localizar una variable ya existente llamada PATH, editarla y agregar al final del valor existente: ;c:\jsdk1.4\bin

PATH es una variable de entorno que le dice al sistema operativo donde puede encontrar los programas ejecutables, en este caso la hemos modificado para que encuentre los ejecutables del jdk.

CLASSPATH es una variable de entorno que le dice a la máquina virtual donde puede encontrar las clases que vamos a emplear o ejecutar.

1.- Escribir el código fuente correspondiente a las clases a emplear. Los ficheros generados tendrán la extensión .java

2.- Compilar el código fuente mediante la utilidad javac.exe, este paso generará las clases compiladas en ficheros con extensión .class

3.- Ejecutar la clase principal, para ello pasaremos el nombre de la clase a ejecutar a la aplicación java.exe.

Características del lenguaje java (II)  

Posted by Danny in

Pero todas estas herramientas en realidad se basan en el uso de una herramienta proporcionada por Sun, el creador de java, que es el Java Development Kit (JDK). Nosotros nos centraremos en el uso de dicha herramienta.

Existen diversas versiones del JDK, siendo posible obtener cualquiera de dichas versiones desde la propia página de sun: http://java.sun.com siendo la más reciente JSDK 1.4

Una vez obtenida la máquina virtual hay que proceder a realizar la instalación, proceso en el que será solicitada la carpeta en la que se copiarán los ficheros del JDK. Supongamos que el nombre de dicha carpeta sea c:\jsdk1.4.

Tras ser instalada se generarán una serie de carpetas dentro de la carpeta c:\jsdk1.4, entre ellas cabe destacar:

bin: en ella se encuentran todos los programas ejecutables del jdk

lib: contiene las clases del api de java

Una vez realizado el proceso de instalación, tenemos que realizar la configuración de dos variables de entorno: PATH y CLASSPATH. Este proceso será distinto para windows 95 o 98, o para windows NT, 2000 o XP:

Windows 9X:

Localizar en el explorador el fichero c:\autoexec.bat, pulsar el botón derecho del ratón sobre el fichero y utilizar la opción Editar.

Ir al final del fichero agregar un salto de línea y teclear:

SET PATH = %PATH%;c:\jsdk1.4\bin

SET CLASSPATH = .;c:\jsdk1.4\lib

Windows NT,2000 o XP:

Pulsar sobre el icono de MiPC con el botón derecho del ratón, pulsar en la opción propiedades.

En windows NT pulsar sobre la pestaña Entorno, mientras que en Windows 2000 y XP hay que ir a la pestaña avanzado y sobre ella pulsar al botón variables de entorno.

Características del lenguaje java  

Posted by Danny in

En este módulo estudiaremos las características del lenguaje java, conociendo tanto su sintaxis, como el API de ampliación del lenguaje.

Características del lenguaje

Java es un lenguaje orientado a objetos, eso implica que su concepción es muy próxima a la forma de pensar humana. También posee otras características muy importantes:

Es un lenguaje que es compilado, generando ficheros de clases compilados, pero estas clases compiladas, son en realidad interpretadas por la máquina virtual de java. Siendo la máquina virtual de java la que mantiene el control sobre las clases que se estén ejecutando.

Es un lenguaje multiplataforma: El mismo código java que funciona en un sistema operativo, funcionará en cualquier otro sistema operativo que tenga instalada la máquina virtual java.

Es un lenguaje seguro: La máquina virtual, al ejecutar el código java, realiza comprobaciones de seguridad, además el propio lenguaje carece de características inseguras, como por ejemplo los punteros.

Gracias al API de java podemos ampliar el lenguaje para que sea capaz de, por ejemplo, comunicarse con equipos mediante red, acceder a bases de datos, crear páginas HTML dinámicas, crear aplicaciones visuales al estilo window, ...

Para poder trabajar con java es necesario emplear un software que permita desarrollar en java. Existen varias alternativas comerciales en el mercado: JBuilder, Visual Age, Visual Café,... y un conjunto de herramientas shareware, e incluso freeware, que permiten trabajar con java.

Que es Java?  

Posted by Danny in

Java, el lenguaje orientado a objetos diseñado para ser multiplataforma y poder ser empleado el mismo programa en diversos sistemas operativos.

Esta característica, junto con la posibilidad de emplearlo para crear applets, e insertarlos en páginas HTML, o mediante servlets y páginas jsp, generar código HTML dinámico. Todo ello con la capacidad de acceder a bases de datos.

Java es un lenguaje relativamente sencillo, debido a que prácticamente toda la funcionalidad se encuentra en clases que forman parte del API de java. Constantemente están surgiendo nuevos apis, que proporcionan nuevas extensiones a las características del lenguaje.

Estas características, junto con el hecho de que sea un lenguaje libre, pudiéndose utilizar el compilador y la máquina virtual de forma gratuita, le augura un gran futuro.