Java es un lenguaje de programación de ordenadores, diseñado como una mejora de C++, y desarrollado por Sun Microsystems. (Nota: Para más información sobre Sun, puede consultar su página Web: www.sun.com)
Hay varias hipótesis sobre su origen, aunque la más difundida dice que se creó para ser utilizado en la programación de aparatos electrodomésticos (desde microondas hasta televisores interactivos). De ahí evolucionó (parece ser que porque el proyecto inicial no acabó de funcionar) hasta convertirse en un lenguaje orientado a Internet.
Pero su campo de aplicación no es exclusivamente Internet: una de las grandes ventajas de Java es que se procura que sea totalmente independiente del hardware: existe una “máquina virtual Java” para varios tipos de ordenadores. Un programa en Java podrá funcionar en cualquier ordenador para el que exista dicha “máquina virtual Java” (hoy en día es el caso de los ordenadores equipados con los sistemas operativos Windows, Linux, Solaris y algún otro). A cambio, la existencia de ese paso intermedio hace que los programas Java no sean tan rápidos como puede ser un programa realizado en C, C++ o Pascal y optimizado para una cierta máquina en concreto.
Tiene varias características que pueden sonar interesantes a quien ya es programador, y que ya irá conociendo poco a poco quien no lo sea: La sintaxis del lenguaje es muy parecida a la de C++ y, al igual que éste último, es un lenguaje orientado a objetos. Java soporta el manejo de threads, excepciones, está preparado para la realización de aplicaciones cliente/servidor, es independiente de la máquina, es más fiable y seguro que C++ (no existen los punteros) y cada vez incorpora más facilidades para la creación y manipulación de gráficos, para el acceso a bases de datos, etc. Buena parte de estas posibilidades las iremos tratando más adelante, cuando hayamos visto las más básicas.
Normalmente, la forma en que más frecuentemente encontramos programas creados en lenguaje Java será dentro de páginas Web.
Estas aplicaciones Java incluidas en una página Web reciben el nombre de “Applets”, y para utilizarlos normalmente no hará falta nada especial. Si nuestro Navegador Web reconoce el lenguaje Java (es lo habitual hoy en día, y es el caso de Internet Explorer de Microsoft y de Netscape Communicator, los más extendidos), estos Applets funcionarán perfectamente sin necesidad de ningún software adicional.
Las aplicaciones que deban funcionar “por sí solas” necesitarán que en el ordenador de destino exista algún intérprete de Java. Esto ya no es tan frecuente, pero tampoco es problemático: basta con instalar en el ordenador de destino el “Java Runtime Enviroment” (JRE), que se puede descargar desde la página web de Sun.
Existen diversas herramientas que nos permitirán crear programas en Java. La más habitual (y la más recomendable) es la propia que suministra Sun, y que se conoce como JDK (Java Development Kit). Es de libre distribución y se puede conseguir en la propia página Web de Sun.
El inconveniente del JDK es que puede resultar incómodo de manejar para quien esté acostumbrado a otros entornos integrados, como los que incorporan Delphi o Visual Basic.
En ese caso, es fácil encontrar por un precio casi simbólico editores que hagan más fácil nuestro trabajo, o incluso sistemas de desarrollo completos (como el JBuilder de Borland), si bien estos sistemas de desarrollo suelen tener un precio más elevado.
Nota: Para más
información sobre Borland (ahora Inprise),
puede consultar su página Web:
www.borland.com www.inprise.com
Vamos a ver el caso más habitual: que trabajemos con Windows 95 (o superior) y que no dispongamos de mucho dinero para gastar. Entonces nos interesará conseguir gratuitamente el JDK e instalarlo en nuestro ordenador.
El sitio más fiable es la propia página Web de Sun:
http://java.sun.com
Allí encontraremos enlaces para descargar (download) la última versión disponible. Bastará con que leamos y aceptemos las condiciones de la licencia, y entonces empezaremos a recibir un único fichero de gran tamaño (20 Mb para la versión 1.2.2 para Windows; también existe la opción de descargar varios ficheros de aproximadamente 1.4Mb de tamaño)
Bastará hacer doble clic sobre el fichero recibido. Por ejemplo, para la versión 1.2.2 del JDK para Windows (95 o superiores y NT o superiores), este fichero tenía el nombre jdk1_2_2-001-win.exe
Al hacer doble clic sobre este fichero, aparecerán varios mensajes de que está comenzando a “descomprimir” datos temporales, y finalmente una pantalla de bienvenida:
Si pulsamos el botón “Next” para proseguir con la instalación, se nos mostrará la licencia de uso.
Si aceptamos estas condiciones (pulsando “Yes”), aparecerá otra ventana, en la que se nos pregunta en qué carpeta (o directorio) queremos instalar el JDK:
Podríamos cambiar el directorio de destino paseando por nuestro disco duro con el botón “Browse” o bien aceptar el directorio que se nos propone y pulsar el botón “Next” para continuar.
A continuación se nos pide que escojamos las partes del JDK que deseamos instalar. Ante la duda, es preferible dejar todas las opciones marcadas:
Después pasamos a la instalación del Java Runtime Environment (JRE), que es la "máquina virtual Java" que permitirá que podamos utilizar en un cierto ordenador los programas creados en Java.
Si se tratase de otro ordenador distinto del nuestro, en el que quisiéramos instalar nuestros programas creados en Java, pero no necesitásemos desarrollar programas desde dicho ordenador, no necesitaríamos instalar el JDK completo, sino sólo el JRE, de modo que podríamos descargar sólo éste desde el sitio Web de Sun.
En cualquiera de ambos casos, deberemos comenzar por aceptar las condiciones de licencia.
Después, al igual que ocurría con el JDK, se nos preguntará en qué directorio (carpeta) deseamos hacer la instalación.
Se nos propone un directorio dentro de “Archivos de programa”. En mi caso, al instalarlo en mi propio ordenador, prefiero cambiarlo para que quede dentro del directorio en el que ha quedado el JDK:
Al final de la instalación se nos recomienda reiniciar nuestro ordenador, y el proceso queda terminado:
Sí. Ya está la información dentro de nuestro ordenador, pero tenemos que acceder a ella. Hay dos opciones:
Nota sobre
Windows: Se puede modificar
el Autoexec.bat de varias formas. Una puede
ser pulsar Inicio/Ejecutar y teclear:
notepad c:\autoexec.bat
path=%path%;c:\jdk122\bin
Comenzaremos por crear una aplicación (programa) en modo texto. Esta aplicación hará lo que se suele usar como primer ejemplo en todos los lenguaje de programación: escribir un texto en la pantalla.
Quien ya conozca otros lenguajes, verá que conseguirlo en Java parece más complicado. Por ejemplo, en Basic bastaría con escribir PRINT “HOLA MUNDO!”. Pero esta mayor complejidad inicial es debida al “cambio de mentalidad” que tendremos que hacer, y dará lugar a otras ventajas más adelante.
A quien no conozca ningún lenguaje de
programación todo le sonará extraño, pero dentro de muy poco (apenas veamos que
nuestro programa funciona) volveremos atrás para ver paso a paso qué hace cada
una de las líneas que habremos tecleado.
Vamos allá...
Nota sobre Windows: Se puede crear una carpeta
desde el Explorador de Windows: entramos a la
carpeta dentro de la que queremos situarla, pulsamos
el botón derecho del ratón y escogemos la opción
Nuevo / Carpeta
Nota sobre Windows:
Puede que la ventana negra anterior
realmente esté ocupando toda la pantalla; podemos
cambiar entre la visualización en pantalla completa y en
ventana pulsando simultáneamente
Alt y Return (o Enter, o la tecla de avance de línea)
edit hola.java
Debería aparecer la pantalla vacía del editor de
MsDos:
Nota: El uso de
mayúsculas y minúsculas es irrelevante
para MsDos y para Wndows, pero no para
Java (ni para otros sistemas, como Unix).
Por eso, deberemos respetar las mayúsculas
y minúsculas tal y como aparezcan en los ejemplos.
Ya dentro de este editor, teclearemos lo siguiente:
//
// Aplicación HolaMundo de ejemplo
//
class HolaMundo {
public static
void main( String args[] ) {
System.out.println( "Hola Mundo!" );
}
}
javac hola.java
hola.java:5: Class or interface declaration expected.
clas
HolaMundo {
^
1 error
Este es nuestro primer programa. Es poco
útil, pero al menos funciona. Ahora veremos qué hemos hecho en este programa, y
comentaremos algunas de las órdenes que permite Java, de modo que podamos
pronto crear algo “más práctico”.
No necesariamente:
Hay otros editores más cómodos, que realzan en colores la sintaxis de lo que hemos escrito, para ayudarnos a detectar errores (por ejemplo, la siguiente imagen muestra el editor de "CodeWarrior").
Incluso hay entornos integrados que nos ayudan a teclear nuestro programa y probarlo desde un mismo sitio, sin tener que conocer órdenes de MsDos (es el caso de Ibm Visual Age for Java, al que corresponden las dos próximas pantallas, y también es el caso de Borland JBuilder).
Muchos de estos entornos integrados nos ayudarán a diseñar de forma “visual” las pantallas que conformarán la parte visible de nuestros programas, de un modo similar al que emplear otras herramientas como Delphi (para lenguaje Pascal), Visual Basic (para Basic) o C++ Builder (para C++).
Pero, como ya habíamos anticipado, no comenzaremos por lo más fácil, sino por lo más “barato”, que no suponga ningún desembolso de dinero adicional. Por ello, de momento continuaremos tecleando los programas con el Editor de MsDos, y compilándolos y probándolos con las herramientas del JDK. Más adelante veremos el manejo básico de alguno de los entornos integrados que se distribuyen gratuitamente.
Vayamos línea por línea para ver qué hemos tecleado y por
qué:
Las tres primeras líneas son:
//
// Aplicación HolaMundo de ejemplo
//
Estas líneas, que comienzan con una doble barra inclinada (//) son comentarios. Nos sirven a nosotros de aclaración, pero nuestro ordenador las ignora, como si no hubiésemos escrito nada.
Después aparece un bloque de varias órdenes; vamos a eliminar las líneas del centro y conservar solamente las que nos interesarán en primer lugar:
class HolaMundo {
[... aquí faltan más cosas ...]
}
Esto es la definición de la “clase” llamada
“HolaMundo”, que nos indica que Java es un lenguaje orientado a objetos...
En Java no debemos pensar simplemente en líneas de programa, sino que antes debemos plantearnos el diseño de nuestro programa como algo mucho más general: deberemos haber descompuesto el problema en una serie de objetos que se relacionan entre sí.
Para entender esta idea, vamos llevarlo a una situación cotidiana:
Imaginemos una persona (a la que llamaremos Eva), que todas las mañanas va a trabajar con su coche (por ejemplo, un Seat Ibiza). En algo tan habitual como esto, aparecen muchas de los conceptos que nosotros emplearemos. Tenemos dos “objetos” (Eva y su Seat), pero no son objetos “aislados”: Eva es una persona, y su Seat es un coche, es decir cada uno pertenece a un grupo de objetos que comparten una serie de características comunes (lo que llamaremos una “clase”). Existe una interacción entre ellos: Eva puede avisar a su Seat de que desea circular más deprisa, pisando el pedal del acelerador (es lo que llamaremos “mandar un mensaje”), pero también el coche puede avisar a Eva, por ejemplo encendiendo una luz cuando le queda poco combustible (también le estaría enviando un mensaje).
Estos objetos interaccionando se pueden expresar gráficamente, en forma de diagrama (lo que nos ayuda a diseñar nuestros "sistemas"), y se pueden simular con una cierta facilidad mediante un ordenador si se emplean lenguajes o herramientas orientados a objetos. De hecho, existen utilidades que nos permiten “dibujar” en nuestro ordenador los diagramas que muestran los objetos y las relaciones existentes entre ellos, y son capaces de crear el “esqueleto” de nuestro programa, en el que nosotros deberemos ir rellenando “los huecos” con los detalles necesarios.
En nuestro caso, apenas tenemos un par de objetos: nuestra aplicación y la pantalla de nuestro ordenador. Y también se "mandarán mensajes" entre ellos: nuestra aplicación pedirá a la pantalla que muestre un cierto mensaje.
Pero en la Programación Orientada a Objetos existen algunos otros
conceptos importantes, y que emplearemos más adelante. Vamos a comentar ya
alguno de ellos:
Todos estos conceptos los iremos aplicando a medida que vayamos avanzando.
Como ya hemos comentado, hará poco más que pedir a la pantalla que muestre un cierto mensaje. Los detalles concretos de lo que debe hacer nuestra clase los indicamos entre llaves ( { y } ), así:
class HolaMundo {
[... aquí faltan más cosas ...]
}
Estas llaves serán frecuentes en Java, porque las usaremos para delimitar cualquier bloque de programa (y normalmente habrá bastantes...)
Java es un lenguaje de formato libre, de modo que podemos dejar más o menos espacios en blanco entre los distintas palabras y símbolos, así que la primera línea de la definición de nuestra clase se podría haber escrito más espaciada
class
HolaMundo {
o bien así (formato que prefieren algunos autores, para que las llaves de principio queden justo encima de las de final)
class HolaMundo
{
o incluso cualquier otra “menos legible”:
class
HolaMundo
{
Nuestra clase de objetos “Hola Mundo” sólo hace una cosa: englobar al cuerpo del programa, de modo que en su interior sólo existe una función, llamada “main”, que representa al cuerpo de la aplicación.
public static void main( String args[] ) {
[... aquí faltan más cosas ...]
}
Nota para C y C++:
La función “main”
es, al igual que en C y C++, la que
indicará el cuerpo de un programa,
pero en Java el programa en sí debe
ser también un objeto, de modo que
“main” debe estar dentro de la
declaración de una clase.
Pero vemos que hay muchas “cosas” rodeando a “main”. Estas “cosas” deberán estar siempre, y más adelante volveremos a ellas según las vayamos necesitando, pero vamos a comentar brevemente cada una de ellas:
Al igual que decíamos de la clase, todo el bloque de cosas que va a hacer esta
función “main” se engloba entre llaves:
public static void main( String args[] ) {
[... aquí faltan más cosas ...]
}
En concreto, nuestra clase de objetos “Hola Mundo” interacciona únicamente con la salida en pantalla de nuestro sistema (System.out), para enviarle el mensaje de que escriba un cierto texto en pantalla (println):
System.out.println( "Hola Mundo!" );
Como se ve en el ejemplo, el texto que queremos escribir en pantalla se debe indicar entre comillas.
También es importante el punto y coma que aparece al final de esa línea: cada orden en Java deberá terminar con punto y coma (nuestro programa ocupa varias líneas pero sólo tiene una órden, que es “println”).
Ahora ya podemos volver a leer todo nuestro programa, con la esperanza de entenderlo un poco más...
//
// Aplicación HolaMundo de ejemplo
//