altatorre.com >> Indice java >> [Anterior | Siguiente]

 

Nuestro Primer Programa en Java

<!-- Usted sabe que ha alcanzado la perfeccion en el diseño,
no cuando usted no tiene nada que añadir,
sino cuando no tiene nada más que quitar.  -->

<!-- Antoine de Saint Exupery -->.


(Esta lección está basada en una traducción del tutorial de Java de Sun Microsystems)

Esta es una practica para conocer el medio de compilar archivos hechos en Java.

Applets y aplicaciones


Dentro de Java existe una división en tres tipos que define la funcionalidad de cada una: Aplicaciones de escritorio, Applets y Servlets:

  • Aplicaciones de Escritorio (DOS): Una aplicación en Java es tal cual como usted ejecuta la clase aplic1. Consta de un solo archivo .java que genera un archivo .class al ser compilado. Se debe ejecutar a través de la máquina virtual (que en este caso viene a ser java.exe), y corre localmente en su computador. 

  • Applets: Los applets se compilan y editan igual que las aplicaciones pero se ejecutan en el navegador de un cliente de internet. Es decir, no se ejecutan desde DOS sino que se usa el navegador (internet Explorer, por ejemplo) al llamar la pagina web que esta relacionada con el programa en Java. Consta de 2 archivos uno .java y un .htm, debe compilarse el .java con el javac.exe en el directorio \bin.

  • Servlets: Los servlets son como aplicaciones de escritorio pero que funcionan en un servidor web, y tienen como finalidad producir paginas web en vivo, basado en datos de bases de datos u otra informacion cambiante (en esta practica no crearemos un servlet.)

Vamos a crear una aplicacion y luego vamos a hacer lo mismo con un applet.

Verificar la instalacion de Java

El ambiente de desarrollo que estamos usando es el JDK / Java Development Kit de Sun Mycrosytems. Este software crea un directorio que comienza por las letras jdk, puede llamarse c:\jdk1.1.8, c:\jdk1.2.2 o c:\jdk1.1.7b, dependiendo del que este instalado en su computador.

Si no encuentra un directorio con estas caracteristicas su maquina no tiene instalado el software. El software puede encontrarse en http://java.sun.com/produts/jdk/1.2. Este archivo tiene 38 MBytes, entonces es muy pesado para bajar por telefono asi que usted debe comunicarse con su profesor para obtener una version en CD.

Creando una aplicacion

volver al inicio

Nuestro archivo fuente en Java podemos crearlo usando un editor de texto, como puede ser el notepad o el wordpad (Recomendacion: Existe un editor de texto que tiene mejor desempeno llamado Editpad, obtenga una copia del EDITPAD, en http://www.editpadclassic.com, no olvide leer el contrato para obtener el software). Lo primero entonces es crear un archivo de texto con nuestro archivo fuente

El programa fuente debe estar en el directorio de java en la carpeta bin, es decir, que si se llama c:\jdk1.1.8, el archivo que vamos a crear debe estar en la carpeta c:\jdk1.1.8\bin. El nombre del archivo debe regirse por el nombre de la clase que vamos a definir. Si la clase se llama aplic1, como sucede en nuestro ejemplo, el archivo debera llamarse aplic1.java.

El codigo fuente de nuestro programa (llamado aplic1.java) esta a continuacion, debera pegarlo dentro del archivo:
 

public class aplic1 {
  public static void main (String args[]) {
       System. out.println("Miren lo que salió");
    }
}
Los programas fuente en java se guardan en archivos con extensión *.java.

En este caso el programa debe llamarse "aplic1.java". El nombre de la clase en public class aplic1, debe coincidir con el nombre del archivo.

Nota1: PARA SABER SI ESTÁ INSTALADO EN SU COMPUTADOR BUSQUE UN ARCHIVO C:\JDK*. Si no existe, entonces no lo tiene instalado. 

Siempre dentro de ese directorio inicial crea un directorio llamado bin (en este ejemplo sería c:\jdk1.1.8\bin), donde se encuentran todos los ejecutables de Java que funcionan bajo DOS: 
 
 
Nombre del EXE Función
javac.exe Compilador
java.exe ejecución del código durante el desarrollo
appletviewer para depuración de applets
etc.

Cuando iniciamos en java es mejor trabajar en el directorio bin para evitar problemas de directorios en la parte inicial, luego ya podremos movernos a otros directorios. 

Entendiendo el programa

Lo primero que hay que hacer es crear un archivo de texto, que puede ser con el WordPad, el notepad o el edit del DOS. Entonces entramos a DOS y abrimos el edit. Creamos un archivo que se llame aplic1.java. Este programa contendrá una definición de clase como la siguiente: 

public class aplic1 {

 }

Nota: Hay que ver que el nombre del archivo es igual al de la clase que contiene (aplic1). Esto debe ser siempre así.

Los programas en Java deben tener un procedimiento main. A continuación para ilustrar los aspectos simples y familiares a Java mostramos el programa aplic1, el programa más simple que usted puede escribir y que haga algo. Aquí está aplic1 implementado en Java.

public class aplic1 {
   public static void main(String args[]) {
        System.out.println("Hola Java!");
   }
 }

Este ejemplo declara una clase llamada aplic1. y estará guardado en el archivo aplic1.java en el directorio bin. (Listo?)
 

Compilación del programa


Si queremos compilar un archivo de java debemos usar el archivo javac.exe que está en el directorio bin. La forma como se ordena la compilación es la siguiente. 

c:\jdk1.1.8\bin> javac aplic1.java

Si no devuelve ningún resultado la compilación fue exitosa y podremos pasar al siguiente escalón: la ejecución. El compilador debe haber creado un archivo que se llama *.class. Los archivos *.class son llamados bytecode, y son los ejecutables de Java. Si hace una búsqueda por el disco en busca de ejecutables de Java encontrará varios en su máquina. 

Para entender un poco más los errores que entrega el compilador lea el siguiente documento. "Entendiendo los errores comunes de compilación".

Errores Comunes de compilacion en java

Al compilar el programa no deben salir errores pero hay que fijarse en algunas características del compilador. Java es sensible a mayúsculas entonces si usted no escribe el programa con la misma distribucion de mayusculas y minusculas entonces obtendrá un error. 

Por ejemplo el siguiente programa:

public class aplic1 {
  public static void main (string args[]) {
       system.out.println("Miren lo que salió");
    }
}

Obtendrá el siguiente mensaje de error:
 

aplic1.java:2: Class string not found in type declaration.
    public static void main (string args[]) {
                       ^
aplic1.java:3: undefined variable, class or package name: system
    system.out.println("Mire lo que salió");
    ^
2 errors


En este caso se colocaron las S de String y System en minúsculas y el sistema las entiende diferente. 

Otro caso es cuando se nombra al archivo de forma diferente a la clase principal. Si el archivo aplic1.java contiene el siguiente código:

public class java1 {
  public static void main (string args[]) {
       system.out.println("Miren lo que salió");
    }
}

Se obtendrá el siguiente resultado:
 

aplic1.java:1: Public class java1 must be defined in a file 
called "java1.java"
public class java1 {
                          ^
1 error

Ejecución del Programa


Ahora para ejecutar su programa en Java tendrá que escribir lo siguiente (en rojo la respuesta del sistema):

c:\jdk1.1.8\bin> java aplic1
Mire lo que salió

Si ha logrado esto quiere decir que no cometió errores de nombres de los archivos y que la instalación funciona correctamente. 

Esto hace que ya tengamos nuestro primer programa en Java ejecutado. Ahora vamos a analizar un poco qué es lo que es cada cosa dentro del programa. 
 

Anatomia del Programa aplic1

Aunque aplic1 es un ejemplo trivial, es algo intimidante por primera vez. Por necesidad el primer programa debe introducir muchos conceptos nuevos que son la base de JAVA, así como muchos detalles de la sintaxis. 

Vamos a hacer un análisis de línea a línea del código que se nos ha presentado para entender el prorama. 

Línea 1: public class aplic1 {

Al igual que en C, las definiciones se leen de atrás hacia adelante. La clase que estamos creando es llamada aplic1. Está siendo definida como una clase a través de la palabra clave class. A esa clase se le está además dando el atributo de ser pública a través de la palabra public. finalmente se encuentra la llave { que es la apertura del contenido de la clase y que se cierra en la línea 5. 

Línea 2: public static void main (String args[ ]) {

La segunda línea de este programa en java es complicada por el diseño de Java, que obliga a que no haya funciones globales, solo clases. Esta línea es igual en todos los programas, entonces vamos a estudiarla con detenimiento. 

public
Esta palabra es un especificador de acceso que permite que el programador controle la visibilidad de cada variable o metodo. En este caso public indica que cualquier clase puede ver el método main. Hay otros dos especificadores de acceso: private y protected

static
En Java existen otra clasificación de variables y métodos que pueden dividirse en variables y metodos de clase y de instancia. Cuando las variables y los métodos se aplican a la clase y no a la instancia se declaran como static

void
Significa que la función no retorna ningún valor. 

main
El nombre de la función. Java es sensible a mayúscular por ello será diferente main a Main. Cuando se le dice a la máquina virtual que implemente una clase el sistema busca una función main para ejecutar en primer lugar. El compilador puede compilar clases que no tengan una fucnión main, sin embargo, el interpretador de Java será incapaz de ejecutarlo. 

String args[ ]
Es el vector de parámetros que se le pasa a la clase al momento de ejecución, args es un vector de cadenas de caracteres.  Para más información sobre la clase String vea java.lang.String

Línea 3: System.out.println("Mire lo que salió"); 

Así como se vió en JavaScript, Java tiene un árbol de objetos que usan sus programas. Todos los objetos en Java tienen alguna posición dentro de este árbol. El objeto de entrada a este árbol es java

java -+---- lang  :.  java.lang   (language: automáticamente importado)
      +---- net   :.  java.net
      +---- io    :.  java.io
      +---- awt   :.  java.awt
      +---- utils :.  java.utils
      +---- sql   :.  java.sql
      +---- text  :.  java.text
      +---- rmi   :.  java.rmi
      +---- math  :.  java.math


Esta representa muestra una aproximación al árbol de Java (Para ver el árbol de Java Completo vea: Arbol de Jerarquía de Java) y cómo se refleja en el código. lang que es un hijo de java, es llamado como java.lang, net como java.net, etc. Sin embargo java.lang, es un caso especial pues es importado siempre por defecto dentro del programa. Entonces sus componentes no necesitan ser llamados como java.lang.componente

El primer objeto de Java que vamos a conocer es java.lang.System que normalmente se llama System ( Más información... ). 

Dentro de System tenemos un objeto llamado out, y es referido como System.out

Dentro de la clase aplic1, declaramos un método sencillo llamado main() que a su vez contiene una invocación de método simple para desplegar la cadena "Hola Juanito!" en la salida standard, que en el DOS es simplemente la pantalla. La frase que imprime "Hola Juanito!" lo hace así invocando el método println del objeto out. El Objeto Out es una variable de clase en la clase System que hace operaciones de salida en archivos. Eso es todo lo que hay en  aplic1.


 

Practica

Renombrar el archivo con su nombre de pila seguido por un 1. Ej. Si su nombre es Juan renombre el archivo como juan1.java, recuerde que la clase contenida debe llamarse igual al nombre del archivo, recompile y envie la aplicacion funcionando a su profesor.

Creación de un Applet

volver al inicio

Los applets se ejecutan a traves de una pagina web, es decir, se debe crear un archivo .java con el notepad y luego un archivo .htm. Luego se debe compilar el .java, usando el javac.exe del directorio \bin y luego abrir la pagina .htm en el browser para poder correr el applet.

Vamos a llamar a nuestro archivo miapplet.java

Dentro de él vamos a colocar el siguiente código:
 

import java.applet.Applet;
import java.awt.Graphics;

public class miapplet extends Applet {
  public void paint(Graphics g){
    g.drawString("Hola tu", 50, 25);
  }
}
Encontrará más información sobre el objeto importados al inicio del programa con los enlaces: java.applet.Applet y java.awt.Graphics.

Compilando el archivo fuente de Java:


c:\jdk1.1.8\bin\>javac miapplet.java

La compilación debe crear un archivo llamado miapplet.class. Si no lo crea algo está mal. 
 

Creando la página web:


Usando un editor de texto, cree un archivo llamado Hoja.html en el mismo directorio que contiene miapplet.class. Este archivo HTML debería contener el siguiente texto:

<HTML>
<HEAD>
<TITLE> Un applet de Java </TITLE>
</HEAD>
<BODY> 
Aquí est&aacute; la salida de mi programa: 
   <APPLET CODE="miapplet.class" WIDTH=150 HEIGHT=25>
</APPLET>
</BODY>
</HTML>

Llamando la página con el applet:

Busque la página web que acaba de hacer y ábrala con el browser. 
 

Anatomía del Applet de Java

Ahora que su applet de Java se ha ejecutado, se estará preguntando cómo funciona. Recuerde que un applet de Java es un programa que se adhiere a un conjunto de convenciones que le permiten correr a través de un navegador compatible. 
 

Importando las clases y paquetes

Las primeras dos líneas importan dos clases usadas en este applet: Applet y Graphics.
 
import java.applet.Applet;
import java.awt.Graphics;

public class miapplet extends Applet {
  public void paint(Graphics g){
    g.drawString("Hola tu", 50, 25);
  }
}
Para entender esas líneas vamos a hablar de qué pasaría si no estuvieran. Si se quitaran esas primeras dos líneas, el applet podría también ejecutarse, pero solo si cambia el llamado a las clases de la siguiente forma:
public class miapplet extends java.applet.Applet {
  public void paint(java.awt.Graphics g){
    g.drawString("Hola tu", 50, 25);
  }
}
Como se puede ver al importar las clases Applet y Graphics el programa le permite llamarlas sin todo el prefijo (p.e. java.applet.Applet). Los prefijos le dicen al compilador cuales paquetes debería buscar para encontrar las clases Applet y Graphics. Ambos java.applet y java.awt son parte del API de java - El API es el conjutno de programas de java con que se puede contar en el ambiente. 

El paquete java.applet contiene clases que son esenciales para los applets de java. El paquete java.awt contiene las clases más frecuentemente usadas en el Abstract Window Toolkit (AWT), que permite a Java tener una Interfaz gráfica (GUI) como los programas de Windows. 

Además de importar clases individuales, usted puede importar el paquete entero. A continuación un ejemplo que funciona también:

import java.applet.*;
import java.awt.*;

public class miapplet extends Applet {
  public void paint(Graphics g){
    g.drawString("Hola tu", 50, 25);
  }
}
En el Lenguaje Java, todas las clases están en un paquete o package. Si el código fuente para una clase no tiene una importación entonces la clase debe pertenecer al grupo por defecto de Java. 

Dentro del mismo paquete, todas las clases pueden referirse a las otras sin prefijos. 

Vea una lista de todos los paquetes disponibles en packages.html
 

Definiendo una subclase de Applet

La primera línea en negrilla del código que está a continuación define la clase miapplet:
 
import java.applet.Applet;
import java.awt.Graphics;

public class miapplet extends Applet {
  public void paint(Graphics g){
    g.drawString("Hola tu", 50, 25);
  }
}
La palabra extends indica que miapplet es una subclase de la clase nombrada a continuación: Applet. Subclase significa que es un derivado de una clase anterior. 

A partir de la clase Applet, los applets heredan una gran cantidad de funcionalidad. Quizás lo más importante es la habilidad de responder a peticiones del navegador de Internet. Por ejemplo, un navegador capaz de manejar Java carga una página que contiene un applet, el navegador envía una petición al applet, diciendole que se inicialice y comience a ejecutarse. 

Un applet no está restingido a definir solo una clase. Además de la subclase de Applet, un applet puede definir clases adicionales creadas por el programador. Cuando el applet intenta usar una clase, la aplicación que está ejecutandose primero mira en el host local. Si la clase no está disponible localmente, es cargada desde una localización de donde viene la subclase del Applet. 
 

Implementando los métodos del Applet

Las líneas en negrilla del código implementan el método paint.
 
import java.applet.Applet;
import java.awt.Graphics;

public class miapplet extends Applet {
  public void paint(Graphics g){
    g.drawString("Hola tu", 50, 25);
  }
}
Todos los applets deben implementar uno o más de los métodos init, start, y paint

Además de los métodos init, start, y paint, los applets pueden implementar dos métodos más que el browser llama cuando un evento importante ocurre (tal como salir de la página del applet): stop y destroy. Los Applets pueden implementar cualquier número de otros métodos, también. 

En el programa que hicimos el objeto Graphics pasado dentro del método paint representa el contexto de dibujo en pantalla del applet. El primer argumento para el método drawString de Graphics es la cadena para dibujar en pantalla. El segundo y tercer parámetro son la posición (x,y) de la esquina izquierda del texto en pantalla. 

    g.drawString("Hola tu", 50, 25);
 

Esta instrucción entonces dibuja la cadena "Hola tu" comenzando en la posición (50,25). El sistema de coordenadas comienza en (0,0), que está en la esquina superior izquierda del área de despliegue del applet. 
 

Ejecutando un Applet 

Se supone que los Applets deben ser incluidos en una página HTML. Usando el tag <APPLET>, usted especifique (como mínimo) la localización de una sublcase Applet y las dimensiones del área de despliegue de los applets en pantalla. 
<APPLET CODE="miapplet.class" WIDTH=150 HEIGHT=25>
</APPLET>
El anterior tag <APPLET> especifica que el browser debería cargar la clase miapplet.class. Busca este archivo en el directorio del documento HTML que contiene el tag. 
 

Practica

Renombrar el archivo con su propio nombre y 2. Ej. Si su nombre es Juan renombre el archivo como juan2.java, recuerde que la clase contenida debe llamarse igual al nombre del archivo, recompile y envie la aplicacion funcionando a su profesor, junto con la pagina web anexa que llama a su applet.

Webliografía

Indice de Librerías de Java

Arboles de Java
http://java.cs.tamu.edu/docs/jdk1.2/api/java/lang/

Clase System de java.lang
http://java.cs.tamu.edu/docs/jdk1.2/api/java/lang/System.html

Hoja de los prodcutos Java
 http://java.sun.com/products/products.a-z.html 

Tutorial de Java
 http://java.sun.com/docs/books/tutorial/index.html
 

altatorre.com >> Indice java >> [ Anterior | Siguiente]