¿Qué es Java?
Java es un lenguaje de programación de alto nivel
de propósito general, multiplataforma, semicompilado, orientado
a objetos y multihilo.
¿Qué quiere decir multiplataforma y semicompilado?
Un programa es un conjunto de órdenes que ejecuta un procesador;
estas órdenes dependen de cada procesador, por tanto un programa
hecho para un procesador no será entendido por otro procesador;
del mismo modo un programa hecho para un Sistema Operativo no se ejecutará
en una máquina con otro Sistema Operativo ya que los programas
a menudo hacen llamadas al Sistema Operativo para, por ejemplo saber los
archivos de un directorio, realizar una conexión TCP/IP, utilizar
la pantalla, ... Java es independiente de la máquina y del Sistema
Operativo lo que permite ejecutar un programa hecho en Java en, por ejemplo,
un ordenador con Linux o Windows, en un PDA, en un teléfono móvil,
...
Para conseguir esto el código fuente se compila a un lenguaje
que no es específico de la plataforma, sino que es un código
intermedio denominado "bytecode". Este código
no es ejecutado directamente, ya que no es comprendido por la máquina,
sino que es interpretado por un programa denominado Máquina
Virtual o más específicamente JVM (Máquina
Virtual de Java). La JVM es específica de la plataforma. De
esta forma para ejecutar un programa Java sólo necesitamos la máquina
virtual de la plataforma que estemos usando. Así por ejemplo existen
máquinas virtuales para Sistemas Operativos Windows, Linux, Apple
y Solaris. Seguramente en tu ordenador tendrás instalada una máquina
virtual y ni si quiera te has dado cuenta: la mayor parte de los navegadores
o browsers web tienen una instalada para poder visualizar los applets,
que son pequeñas aplicaciones Java que se incrustan en las páginas
web.
La WWW (World Wide Web) es una inmensa red de ordenadores de todo tipo
y dado que Java es un lenguaje multiplataforma se hace ideal para superar
los problemas de incompatibilidad.
Un lenguaje interprteado es siempre lento, pero las actuales JVM utilizan
un JIT (Just in Time). El JIT se encarga de compilar el código
aún más para reducirlo, reduciendo también de este
modo el tiempo de ejecución. Estos JIT en determinadas ocasiones
pueden hacer que el código no sea correctamente ejecutado. Si quieres
ver tus applets tal cual los has programado puedes usar el browser que
proporciona Sun Microsystems: Hot Java.
¿Qué quiere decir de propósito
general?
Es un lenguaje de propósito general ya que con él se pueden
hacer multitud de cosas: crear tanto programas simples de consola hasta
grandes programas en entorno gráfico, hacer los bonitos applets
que lucen en las páginas web, los servlets (programas cliente-servidor
más potentes que los clásicos CGI), las JSP (Java Server
Pages, similares a las páginas PHP o ASP), los sockets (programas
para redes de ordenadores)...
¿Qué quiere decir orientado a objetos?
Algunos lo califican de lenguaje de objetos ya que no es un lenguaje
adaptado como C++ que desciende de C, sino es un lenguaje que desde el
principio ha sido de objetos: (casi) todo en él son objetos.
Anteriormente al crear programas grandes en C éstos se hacían
inmanejables ya que unas líneas de código afectaban al resultado
de otras y era muy difícil su actualización y posterior
reutilizacón del código. Cuando nació C++, para crear
una ventana bastaba una línea de código en la que se expecifica
el tamaño, el texto de título, etc.., en cambio en C eran
necesarias 5 páginas de código. Lo que se hace en la orientación
de objetos es meter todas esas líneas de código en un archivo
aparte y nos olvidamos de él. Posteriormente podremos reutilizar
ese código vínculándolo a nuestro programa, e incluso
crear un tipo de ventanas nuevas por medio de la herencia, así
podremos hacer ventanas que no puedan ser redimensionadas, como los cuadros
de diálogo. De esta forma los programas son más
estructurados y reutilizables.
Pero, ¿qué es un objeto?
Básicamente un objeto es un conjunto de variables y funciones
interrelacinados. En un objeto las variables que guardan los valores de
sus características se llaman propiedades y las funciones
se llaman métodos.
Los lenguajes orientados a objetos son más fáciles de programar
ya que se acercan más a nuestra forma de pensar, así si
creamos un objeto 'vehículo terrestre', una de sus propiedades
sería su color, su número de ruedas, su velocidad,... Y
un método sería acelerar, frenar, que cambiarían
las propiedades del objeto: en estos dos casos la velocidad. Además
gracias a la 'herencia' podríamos crear un nuevo tipo de vehículos
que podríamos clasificar en coches, camiones, motos,... que poseerían
las mismas propiedades y los mismos métodos que un 'vehículo
terrestre' más algunos característicos de ese tipo de 'vehículo
terrestre', como por ejemplo un método 'descargar' en el caso de
los camiones, y un número de ruedas diferentes.
La orientación a objetos y la máquina virtual de
Java
Gracias a la orientación a objetos y la máquina virtual
de Java es posible descargar un programa de la red en pocos segundos ya
que los programas que creamos, en general, se basan todos ellos en las
clases que incorpora la máquina virtual de Java (algo así
como los archivos de librerías). Es decir, todos los archivos necesarios
para que el programa funcione ya los incorpora la máquina de destino,
los posee la JVM. De esta forma los programas en Java son robustos
y potentes.
La seguridad en Java
Puede suponer que un applet es un programa que se incluye en una página
web, y un virus también es un programa, y por tanto Java pueda
ser el lenguaje perfecto para los creadores de virus. Pues no, una de
las características principales de Java es su seguridad. Cierto
que se pueden incluir programas en una página web y que un virus
es un programa, pero la JVM le informará cuando el programa intente
hacer algo dudoso, como puede ser la utilización de archivos de
nuestro disco duro.
Breve historia de Java
Java nació como iniciativa de Sun de crear un lenguaje para electrodomésticos.
Para ello tenía que crear un lenguaje independiente de la plataforma,
ya que el chip de una calculadora no es el mismo que el de un televisor,
por ejemplo. Este se llamó OAK, pero la idea no resultó
y casi cuando se iba a rechazar el proyecto un programador tuvo la brillante
idea de crear un navegador web que soportara incrustar aplicaciones Java
denominadas applets. Desde el primer momento se puede apreciar la capacidad
de este lenguaje: el navegador estaba hecho en Java. Sun Microsystems
le cambió el nombre porque "OAK" ya estaba registrado
y eligió Java, que es como se llamaba el Café en el que
se reunían los progrmadores de esta empresa. La idea de incrustar
pequeñas aplicaciones en las páginas webs tuvo una tremenda
aceptación, lo que impulsó y popularizó a este lenguaje.
Hay que tener en cuenta que aunque Java debe su popularidad a Internet
y está enormemente vinculado a ella, la WWW no es su único
lugar ni su única capacidad, ni mucho menos.
¿Cómo empiezo
a programar en Java?
Es imprescindible bajarse un compilador. Recomiendo el Java
2 Standard Development Kit de Sun Microsystems, disponible para
Windows, Linux y Solaris. Contiene lo necesario para empezar a programar
en Java y es gratis, aunque la licendia impide su redistribución.
Contiene un compilador, un visualizador de Applets, un debugger, un decompilador,...
hasta 15 programas. Todos los programas que incorpora se deben ejecutar
en la consola ya que no tienen interfaz gráfica, lo que resulta
un tanto engorroso, y no contiene un editor, por tanto deberéis
escribir vuestros proyectos con un editor de texto convencional, como
por ejemplo el Bloc de Notas, aunque tambi&eeacute;n existen programas
que resaltan con colores las palabras reservadas del lenguaje, los comentarios,...
que hacen un poco más agradable la tarea de programar. Aunque la
programación sin un entorno de desarrollo que nos permita hacer
muchas cosas con unos simples clicks de ratón es muy pesada, es
como realmente se aprende.
Actualmente se distribuye el J2SDK junto con el JRE y se van añadiendo
API's que antes se distribuían por separado. El JRE es también
un conjunto de aplicaciones, en este caso estas aplicaciones son exclusivamente
para ejecutar los programas. El JRE está destinado al usuario final
de la aplicación. La licencia permite su redistribució así
es una buena idea empaquetarlo junto con nuestras aplicaciones.
Para aquellos que vayan a programar en Windows Me se preguntarán
¿cómo voy a programar si necesito MS-DOS? La respuesta
es fácil. Windows Me sigue teniendo MS-DOS pero está "oculto".
Para ejecutar comandos deberemos crear un archivo de texto normal (con
el Bloc de Notas por ejemplo) escribir los comandos a ejecutar y guardarlo
con extensión ".bat". Para editar estos archivos
basta con hacer click derecho y elegir en el menú contextual la
opción "Edición".
Nociones básicas
| Prepararse
para usar el JDK
Lo primero que debemos hacer, claro está es descargarse
el Java 2 Standard
Development Kit desde la página de Sun. Es opcional
pero tremendamente recomendado bajarse la documentación que
está en Inglés. En él se incluye también
un archivo de texto: README
que recopila la información de instalación y uso,
y que está en inglés. Posteriormente procederemos
a instalarlo; este proceso es sencillo, basta con indicar lo que
se quiere instalar y dónde. Para incluir la documentación
(opcinal), una vez la hallamos descargado, se deberá extraer
la carpeta 'docs' y pegarla en el directorio donde se instaló
el J2SDK.
¿Qué es el path y el classpath?
Este paso es opcional pero muy útil.
Para una cómoda utilización de los programas del kit
se puede cambiar la variable de entorno 'path' y otra variable:
el 'classpath'. La primera de ellas contiene la ruta de acceso de
los programas que con más frecuencia uses, de modo que para
ejecutar un programa bastará con escribir su nombre y Windows
lo buscará, de este modo nos ahorramos tener que escribir
toda la ruta de directorios hasta llegar a &eeacute;l. La segunda
indica al JDK dónde debe buscar los archivos a compilar o
ejecutar, sin tener que escribir en cada ejecución la ruta
completa.
Así se ejecutaría el compilador de java sin haber
cambiado las variables, en MS-Dos y con el JDK instalado en el directorio
C:\jdk1.3 y la clase a compilar de nombre 'miclase.java' en C:\proyectosJava:
C:\>C:\jdk1.3\bin\javac C:\proyectosJava\miclase.java
Así se escribiría si se cambian adecuadamente las
variables:
C:\>javac miclase.java
Es decir, no sería necesario incluir la ruta de acceso del
programa ni del archivo a compilar.
Cambiar el path
Para saber que valores contiene la variable path escribiremos lo
siguiente:
C:\>path
Y se listarán los valores que actualmente posee separados
por ';'. Normalmente serán: 'C:\Windows' y 'C:\Windows\COMMAND'.
Para añadirle el directorio que contiene los programas del
JDK ('C:\jdk1.3\bin' por defecto) lo más cómodo y
sencillo es editar con un procesador de textos (por ejemplo el Bloc
de Notas o el WordPad) el archivo 'C:\Autoexec.bat'. En él
aparecerán los valores anteriores separados por ';'. Bastará
con añadir el nuestro ('C:\jdk1.3\bin') separado por un ';',
y guardarlo. Es recomendable poner nuestro directorio al principio
en lugar de añadirlo al final, ya que si queremos ejecutar
el programa javaw.exe del JDK el intérprete de comandos buscará
el programa en los directorios definidos en la variable de entorno
PATH y encontrará un programa de mismo nombre en el directorio
C:\Windows que no es el que nosotros queremos ejecutar.
Para terminar habrá que reiniciar el ordenador. Con esto
lo que conseguimos es definir la variable path cada vez que se ejecuta
el archivo Autoexec.bat, es decir cada vez que se inicia Windows.
Cambiar el classpath
Para saber qué valores contiene el CLASSPATH (no contiene
ninguno por defecto) bastará con teclear
C:\>set
y aparecerá la lista de variables de entorno con sus correspondientes
valores. Si no aparece la variable CLASSPATH quiere decir que ésta
no contiene ningún valor. Entre ellas se encuentra también
la variable de entorno path.
Para asignarle un valor teclearemos lo siguiente en una ventana
de MS-DOS:
C:\>set CLASSPATH=C:\MisClasesDeJava
Siendo MisClasesDeJava el directorio donde tenemos nuestras clases
de Java.
Para introducir varios directorios los separaremos por punto y coma:
C:\>set CLASSPATH=C:\MisClasesDeJava;C:\MisOtrasClasesDeJava
Finalmente si la variable CLASSPATH ya contiene valores y queremos
añadir más tendremos que hacerlo del siguiente modo:
C:\>set CLASSPATH=C:\MisClasesDeJava;%CLASSPATH%
Otra cosa a tener en cuenta es que normalmente desearemos apuntar
a una clase que se encuentra en el mismo directorio; si en la variable
classpath no está incluido específicamente ese directorio
el programa no la encontrará aunque como se ha dicho el archivo
esté en el mismo directorio. Esto se puede remediar incluyendo
el directorio acutal de forma relativa, es decir el intérprete
de comandos, tanto en MS-DOS como en Unix, utiliza "."
como forma de apuntar al directorio actual así como ".."
para indicar el directorio inmediatamente superior. (Así
con el comando "cd" cambiamos de directorio, y al hacer
cd .. cambiamos al directorio superior). La forma de cambiar la
variable CLASSPATH con los valores que ya contiene, el directorio
actual y el directorio C:\MisClasesDeJava sería así:
C:\>set CLASSPATH=.;C:\MisClasesDeJava;%CLASSPATH%
Si queremos definir la variable CLASSPATH cada vez que iniciemos
Windows basta con añadir el comando set, con los valores
adecuados como se ha visto, al archivo C:\Autoexec.bat como se indicaba
con la variable PATH.
El
primer proyecto
El código fuente se debe escribir en un archivo de texto
plano, es decir sin formato, para lo que recomiendo usar el Bloc
de Notas o WordPad en caso de Windows. Éste debe ser guardado
en un archivo, de nombre el de la clase que estemos creando, y de
extensión '.java'.
Habrá que tener en cuenta al escribir el código que
Java es sensible a las mayúsculas y minúsculas, lo
que quiere decir que 'Hola' no es lo mismo que 'hola'. Al escribir
código es muy conveniente comentarlo, sobre todo si vamos
a compartirlo con otros desarrolladores o para futuras actualizaciones.
Comentar y documentar el código
En Java existen tres tipos de comentarios: los que soportan sus
antecesores C y C++ y uno muy importante y novedoso: el cometario
de documentación.
"//" Es el comentario de C. Indica que todo lo que viene
a continuación de la línea es un comentario.
"/*" y "*/" Es el comentario de C++. Indica
que todo lo comprendido entre estos dos signos es un comentario.
Puede ser multilínea, no así el anterior.
Aquí hay un ejemplo en el que se usan estos dos tipos de
comentarios:
// este es un comentario de C. El compilador omitirá
lo que aparezca a su derecha
/*este es un comentario de varias líneas
de esta forma omitirá también esta línea
y esta*/
Se pueden usar combinaciones de comentarios, pero no se admiten
comentarios anidados como este:
//Esta línea será omitida por el
compilador así que saltará directamente a la siguiente.
/*Así que esta cabecera de comentario no la verá
y se creerá que esta línea es código
y esta también*/
Existe un tipo de comentario muy, muy útil que es introducido
por Java: se trata del comentrio de documentación que usa
el programa javadoc para crear documentación en formato HTML.
De esta forma podremos documentar elegante y rápidamente
nuestras clases.
Un comentario de documentación comienza con "/**"
y termina con "*/" y cada línea debe comenzar con
"*".
En un comentario de este tipo podremos insertar etiquetas HTML aunque
esto no sea necesario, ya que el programa javadoc crea documentos
muy vistosos.
Para indicarle al programa sobre qué estamos escribiendo
existen las "etiquetas de documentación" que son
básicamente las siguientes:
|
Etiqueta
|
Explicación
|
Sintaxis
|
| @version |
Indica la versión del código que estamos escribiendo.
|
@version Datos de la versión
|
| @author |
Indica el autor del código. Podemos poner varios autores
de la siguiente forma:
|
@author datos del autor
@author datos de otro autor que haya intervenido
|
| @param |
Indica que a continuación se explica el valor de un
parámetro.
|
@param parametro1
linea 1
(...)
linea n
@param parmetro2
linea1
(...)
linea n
|
| @return |
Indica que a continuación se explica el valor de retorno
de un método.
|
@return parametro1
linea 1
(...)
linea n
|
| @exception |
Indica las excepciones que la clase puede manejar.
|
@exception Nombre de la clase y decripcion
|
| @throws |
Es sinónimo de la etiqueta anterior.
|
@throws Nombre de la clase y decripcion
|
| @see |
Sirve para hacer referencia a otras clases.
|
@see nombre de clase
@see nombre de clase completo
@see nombre de clase completo#nombre de metodo
|
Ejemplo de comentario de documentación:
/**
*@version Version 1.0 de mi primera clase
*@author Yo pr supuesto
*<a href="mailto:yo@micompania.com">Mi e-mail</a>
*(...)
*/
Visualizar applets
Para ejecutar un applet debemos crear una página web en
la que poder visualizarlo. La etiqueta para introducir un applet
es la siguiente:
(las etiquetas entre corchetes pueden ser omitidas)
<applet [propiedades]>
[parametros]
[Texto que se visualizara en caso de que el browser no soporte los
applets]
</applet>
Dónde propiedades son:
|
Propiedad
|
Explicación
|
|
code
|
Indica el archivo en el cual reside el bytecode a ejecutar.
Los archivos .class
|
|
codebase
|
Indica el directorio donde se encuentra el archivo de bytecode
|
|
height
|
Indica la altura del applet
|
|
width
|
Indica la anchura del applet
|
|
alt
|
Texto que se visualizará en la zona del applet en
caso de que el browser soporte los applets, pero no pueda
cargarlo por alguna razón.
|
|
name
|
Nombre del applet. Sirve para hacer llamadas entre applets.
|
|
align
|
Especifica la posición del applet (Left, right, top,
bottom, middle, baseline, textop, absmiddle, absbottom).
|
|
vspace
|
Márgen por encima del applet.
|
|
hspace
|
Márgen a los lados del applet.
|
Las propiedades realmente importantes son: code, height y width.
Las demás pueden ser omitidas. codebase es realmente importante
pero si el archivo está en el mismo directorio se omite.
Los parámetros son valores que se pasan al applet y tienen
la siguiente sintáxis:
<param name="nombre_del_valor" value="valor_del_parametro">
Existe un truco al visualizar los applets. Sería muy costoso
crear una página web para cada applet y poder así
verlos en el navegador o en el appletviewer, así que incluiremos
en el archivo de código (.java) las etiquetas HTML pero dentro
de un comentario, de este modo el comilador las ignorará
pero el appletviewer podrá encontrarlas.
Este sería un ejemplo:
Este sería el código del archivo miclase.java:
import java.awt.*;
import java.awt.applet.*;
...
/*
<applet code="miclase.class" width="300"
height="300">
</applet>
*/
public class miclase extends Applet ...
{
...
}
Este sería el comando a ejecutar en la ventana de MS-DOS:
C:\>appletviewer miclase.java
|
|