|
Comienza a programar en Java -- by Gimenete
| - Java - |
Artículo muy interesante para aquellos que deseen iniciarse en este magnífico lenguaje de programación. Explica sus características, cómo prepararse para manejar el compilador y algunos consejos a tener en cuenta.
|
Valoración: 6.88889 de 18 votaciones |
Leido 293 veces desde 2001-09-25 |
|
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.
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.
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".
|
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 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
|
|