7
Primeros Pasos en Java Anterior | Siguiente Cap.Anterior | Cap.Siguiente 1. Una mínima aplicación en Java HolaMundo Compilación y Ejecución de HolaMundo Ficheros Fuente Java Compilación Ejecución Problemas de Compilación Otros Ejemplos 2. Un Applet básico en Java HolaMundo Componentes Básicos de un Applet Clases Incluidas La clase Applet Métodos de Applet Compilación de un Applet Llamada a Applets Prueba de un Applet 3. Argumentos en la Línea de Comandos Como cualquier otro lenguaje, Java se usa para crear aplicaciones. Además Java tiene la particularidad especial de poder crear aplicaciones muy especiales, son los applets, que es una mini (let) aplicación (app) diseñada para ejecutarse en un navegador. A continuación se verá en detalle lo mínimo que se puede hacer en ambos casos, lo que permitirá presentar la secuencia de edición, compilación, ejecución en Java, que será imprescindible a la hora de estudiar detalles más concretos de Java, lo que ayudará a que los ejemplos que se muestren sea mejor comprendidos. Hay que hacer una aclaración antes de entrar a ver algo, porque muchos programadores que se introducen en Java piensan solamente en applets, pero Java va mucho más allá, y no hay por qué establecer una distinción entre applet como aplicación gráfica y aplicación independiente como aplicación de consola. No hay nada que impida a una aplicación independiente funcionar como una aplicación en modo gráfico, lo único que hay que hacer es tomarse la molestia de inicializar la ventana de la aplicación a mano y añadirle el evento de que se cierre cuando el mensaje que se lo indique le llegue, cosas en el caso de los applets están a cargo del navegador o visualizador que se esté empleando. Esto es importante, porque en este Tutorial se utilizarán fundamentalmente aplicaciones Java independientes, porque los applets tienen unas medidas de seguridad tan estrictas que no permiten muchas de las opciones del lenguaje, como por ejemplo el acceso a ficheros o la impresión de documentos. Una mínima aplicación en Java La aplicación más pequeña posible es la que simplemente imprime un mensaje en la pantalla. Tradicionalmente, el mensaje suele ser "¡Hola Mundo!". Esto es justamente lo que hace el siguiente fragmento de código: // // Aplicación HolaMundo de ejemplo // class HolaMundoApp { public static void main( String args[] ) { System.out.println( "¡Hola Mundo!" ); }

Tutorial de Java - Primeros Pasos en Java-1.pdf

Embed Size (px)

Citation preview

Page 1: Tutorial de Java - Primeros Pasos en Java-1.pdf

Primeros Pasos en JavaAnterior | Siguiente Cap.Anterior | Cap.Siguiente

1. Una mínima aplicación en Java

HolaMundoCompilación y Ejecución de HolaMundo

Ficheros Fuente JavaCompilaciónEjecución

Problemas de CompilaciónOtros Ejemplos

2. Un Applet básico en Java

HolaMundoComponentes Básicos de un Applet

Clases IncluidasLa clase AppletMétodos de Applet

Compilación de un AppletLlamada a AppletsPrueba de un Applet

3. Argumentos en la Línea de Comandos

Como cualquier otro lenguaje, Java se usa para crear aplicaciones. Además Java tiene la particularidadespecial de poder crear aplicaciones muy especiales, son los applets, que es una mini (let) aplicación(app) diseñada para ejecutarse en un navegador. A continuación se verá en detalle lo mínimo que sepuede hacer en ambos casos, lo que permitirá presentar la secuencia de edición, compilación, ejecuciónen Java, que será imprescindible a la hora de estudiar detalles más concretos de Java, lo que ayudará aque los ejemplos que se muestren sea mejor comprendidos.

Hay que hacer una aclaración antes de entrar a ver algo, porque muchos programadores que seintroducen en Java piensan solamente en applets, pero Java va mucho más allá, y no hay por quéestablecer una distinción entre applet como aplicación gráfica y aplicación independiente como aplicaciónde consola. No hay nada que impida a una aplicación independiente funcionar como una aplicación enmodo gráfico, lo único que hay que hacer es tomarse la molestia de inicializar la ventana de la aplicacióna mano y añadirle el evento de que se cierre cuando el mensaje que se lo indique le llegue, cosas en elcaso de los applets están a cargo del navegador o visualizador que se esté empleando. Esto esimportante, porque en este Tutorial se utilizarán fundamentalmente aplicaciones Java independientes,porque los applets tienen unas medidas de seguridad tan estrictas que no permiten muchas de lasopciones del lenguaje, como por ejemplo el acceso a ficheros o la impresión de documentos.

Una mínima aplicación en Java

La aplicación más pequeña posible es la que simplemente imprime un mensaje en la pantalla.Tradicionalmente, el mensaje suele ser "¡Hola Mundo!". Esto es justamente lo que hace el siguientefragmento de código:

//// Aplicación HolaMundo de ejemplo//class HolaMundoApp { public static void main( String args[] ) { System.out.println( "¡Hola Mundo!" ); }

Page 2: Tutorial de Java - Primeros Pasos en Java-1.pdf

}

HolaMundo

Hay que ver en detalle la aplicación anterior, línea a línea. Esas líneas de código contienen loscomponentes mínimos para imprimir ¡Hola Mundo! en la pantalla. Es un ejemplo muy simple, que noinstancia objetos de ninguna otra clase; sin embargo, accede a una de las clases incluida en laplataforma Java.

//// Aplicación HolaMundo de ejemplo//

Estas tres primeras líneas son comentarios. Hay tres tipos de comentarios en Java, // es un comentarioorientado a línea.

class HolaMundoApp {

Esta línea declara la clase HolaMundoApp. El nombre de la clase especificado en el fichero fuente seutiliza para crear un fichero nombredeclase.class en el directorio en el que se compila la aplicación. Eneste caso, el compilador creará un fichero llamado HolaMundoApp.c las s.

public static void main( String args[] ) {

Esta línea especifica un método que el intérprete Java busca para ejecutar en primer lugar. Igual que enotros lenguajes, Java utiliza una palabra clave ma in para especificar la primera función a ejecutar. En

este ejemplo tan simple no se pasan argumentos.

public significa que el método main() puede ser llamado por cualquiera, incluyendo el intérprete Java.

st atic es una palabra clave que le dice al compilador que main se refiere a la propia clase

HolaMundoApp y no a ninguna instancia de la clase. De esta forma, si alguien intenta hacer otrainstancia de la clase, el método main() no se instanciaría.

void indica que main() no devuelve nada. Esto es importante ya que Java realiza una estricta

comprobación de tipos, incluyendo los tipos que se ha declarado que devuelven los métodos.

args[] es la declaración de un array de Strings. Estos son los argumentos escritos tras el nombre de laclase en la línea de comandos:

% java HolaMundoApp arg1 arg2 ...

System.out.println( "¡Hola Mundo!" );

A una variable de tipo class se puede acceder sin necesidad de instanciar ningún objeto de esa clase.Por ello ha de ser un tipo básico o primitivo, o bien puede ser una referencia que apunta a otro objeto. Lavariable out es una referencia que apunta a un objeto de otro tipo, en este caso una instancia de la clasePrintStream (un objeto PrintStream), que es automáticamente instanciado cuando la clase System escargada en la aplicación.

El método println() toma una cadena como argumento y la escribe en el canal de salida estándar; en estecaso, la ventana desde donde se lanza la aplicación. La clase PrintStream tiene un método instanciablellamado println(), que permite presentar en la salida estándar del Sistema el argumento que se le pase.En este caso, se utiliza la variable o instancia de out para acceder al método.

}

Page 3: Tutorial de Java - Primeros Pasos en Java-1.pdf

}

Finalmente, se cierran las llaves que limitan el método main() y la clase HolaMundoApp.

Compilación y Ejecución de HolaMundo

A continuación se puede ver el resultado de esta primera y sencilla aplicación Java en pantalla. Se generaun fichero con el código fuente de la aplicación, se compilará y se utilizará el intérprete Java paraejecutarlo.

Ficheros Fuente Java

Los ficheros fuente en Java terminan con la extensión ".java". El lector puede crear un fichero utilizandocualquier editor de texto que tenga como contenido el código de las ocho líneas de la mínima aplicación, yguardarlo en un fichero con el nombre de HolaMundoApp.java . Para crear los ficheros con código fuenteJava no es necesario un procesador de textos, aunque puede utilizarse siempre que tenga salida afichero de texto plano.

Compilación

El compilador javac se encuentra en el directorio bin por debajo del directorio java, o aquel donde se hayainstalado la plataforma Java 2. Este directorio bin, si se han seguido las instrucciones de instalación,debería formar parte de la variable de entorno PA TH del sistema. Si no es así, tendría que revisar la

Instalación del JDK. El compilador de Java traslada el código fuente Java a byte-codes, que son loscomponentes que entiende la Máquina Virtual Java que está incluida en los navegadores con soporteJava y en appletviewer.

Una vez creado el fichero fuente HolaMundoApp.java , se puede compilar con la línea siguiente línea decomandos:

% javac HolaMundoApp.java

Si no se han cometido errores al teclear ni se han tenido problemas con el PA TH a la hora de

especificar el fichero fuente y del compilador, no debería aparecer mensaje alguno en la pantalla, ycuando vuelva a aparecer el indicador del sistema, se debería ver un fichero HolaMundoApp.class nuevoen el directorio donde se encuentra el fichero fuente.

Si ha habido algún problema, en Problemas de compilación al final de este capítulo, hemos intentadoreproducir los que más frecuentemente se suelen dar, se pueden consultar por si pueden aportar unpoco de luz al error que haya aparecido.

Ejecución

Para ejecutar la aplicación HolaMundoApp, hemos de recurrir al intérprete java , que también seencuentra en el directorio bin, bajo el directorio en donde se haya instalado la plataforma Java 2. Seejecutará la aplicación con la línea:

% java HolaMundoApp

y debería aparecer en pantalla la respuesta de Java:

% ¡Hola Mundo!

El símbolo % representa al prompt del sistema, y se utilizará aquí para presentar las respuestas quedevuelva el sistema como resultado de la ejecución de los comandos que se introduzcan por teclado opara indicar las líneas de comandos a introducir.

Page 4: Tutorial de Java - Primeros Pasos en Java-1.pdf

Cuando se ejecuta una aplicación Java, el intérprete Java busca e invoca al método main() de la clasecuyo nombre coincida con el nombre del fichero .c las s que se indique en la línea de comandos. En el

ejemplo, se indica al Sistema Operativo que arranque el intérprete Java y luego se indica al intérpreteJava que busque y ejecute el método main() de la aplicación Java almacenada en el ficheroHolaMundoApp.c las s.

Problemas de compilación

A continuación se encuentra una lista de los errores más frecuentes que se presentan a la hora decompilar un fichero con código fuente Java, tomando como base los errores provocados sobre la mínimaaplicación Java que se está utilizando como ejemplo, pero también podría generalizarse sin demasiadosproblemas.

% -bash: javac: command not found

No se ha establecido correctamente la variable PA TH del sistema para el compilador javac. El

compilador javac se encuentra en el directorio bin, que cuelga del directorio donde se haya instalado laplataforma Java, o JDK (Java Development Kit), según se le quiera llamar. También es posible que sedeba a que la plataforma Java no ha sido instalada.

% HolaMundoApp.java:6: cannot resolve symbolsymbol : method printl (java.lang.String)location: class java.io.PrintStream System.out.printl( "¡Hola Mundo!" ) ; ̂1 error

Error tipográfico, el método es println no pr int l.

%In class HolaMundoApp: main must be public and static

Error de ejecución, se olvidó colocar la palabra static en la declaración del método main de la aplicación.

% Exception in thread "main" java.lang.NoClassDefFoundError: HolaMundoapp

Este es un error muy sutil. Generalmente significa que el nombre de la clase es distinto al del fichero quecontiene el código fuente, con lo cual el fichero nombre_fichero.class que se genera es diferente del quecabría esperar. Por ejemplo, si en el fichero de código fuente de la aplicación HolaMundoApp.java secoloca en vez de la declaración actual de la clase HolaMundoApp, la línea:

class HolaMundoapp {

se creará un fichero HolaMundoapp.class, que es diferente del HolaMundoApp.class, que es el nombreesperado de la clase; la diferencia se encuentra en la a minúscula y mayúscula.

% Note: prueba.java uses a deprecated API. Recompile with "-deprecation" for details. 1 Warning

Esto es originado por otra de las novedades que ha introducido la plataforma Java a partir del JDK 1.1como son los elementos obsoletos (deprecated), es decir, aquellas clases o métodos que no serecomienda utilizar, aunque sigan siendo válidos, porque están destinados a desaparecer de la faz de laTierra a partir de alguna de las versiones posteriores del JDK. Si se compila un programa que hace usode uno de estas clases, o bien utiliza o sobrecarga un método obsoleto, el compilador mostrará unmensaje de este tipo.

Solamente se genera un aviso por módulo, independientemente del número de métodos obsoletos quese estén utilizando, por eso hay que seguir la recomendación del aviso si se quiren saber los detallescompletos de todas las clases y métodos obsoletos que se están utilizando. La llamada a estos métodosrara vez tiene excusa, aunque haya casos especiales en que se escriba código para que sea llamado

Page 5: Tutorial de Java - Primeros Pasos en Java-1.pdf

tanto por programas generados con la versión 1.0 del JDK como con versiones posteriores. En estecaso JavaSoft recomienda indicarle al compilador que se está haciendo uso intencionado del métodoobsoleto, y esto se consigue colocando el comentario /** @ deprec ate d */ justo antes del método

sobrecargado, por ejemplo:

/** @deprecated */public boolean handleEvent( Event evt ) { if( evt.id == Event.WINDOW_DESTROY ) System.exit( 0 ); return( false );}

No obstante, en este caso y a pesar de estos avisos, el compilador genera código perfectamenteejecutable.

Otros Ejemplos

Se muestran ejemplos que modifican el ejemplo HolaMundo

La primera modificación, HolaMundoApp2.java, es para imprimir el texto en una línea usando múltiplessentencias

// HolaMundoApp2.java// Imprimiendo una línea de texto con sentencias múltiples

public class HolaMundoApp2 { public static void main ( String args[] ) { System.out.print( "¡Hola " ); System.out.println( "Mundo!" ); } // fin del método main} // fin de la clase HolaMundoApp2

La siguiente modificación, HolaMundoApp3.java, permite repetir el ejemplo anterior, empleando una solasentencia y mediante el caracter de escape

// HolaMundoApp3.java// Imprimiendo múltiples líneas de texto con una sola sentencia

public class HolaMundoApp3 { public static void main ( String args[] ) { System.out.println( "¡Hola\n\tMundo!" ); } // fin del método main} // fin de la clase HolaMundoApp3

Normalmente, los carácteres en una cadena son mostrados exactamente como aparecen entre lasdobles comillas. Sin embargo, se observa que los carácteres precedidos por la retrobarra (\) no se

muestran en la pantalla, este carácter es conocido como el carácter de escape. Con este se le indica almétodo pr int y al método println que un carácter especial será mostrado, con lo que se combina con el

siguiente carácter que está enseguida de la retrobarra. En la siguiente tabla se listan varias secuenciasde escape comunes y se describe como afectan los carácteres que se muestran en la ventana decomandos.

\n Nueva línea. Coloca el cursor de la pantalla al inicio de la siguiente línea.

\t Tabulador horizontal. Mueve el cursor de la pantalla a la siguiente paradade tabulador.

\r

Retorno de carro. Coloca el cursor de pantalla al inicio de la línea actual --no avanza a la siguiente línea. Cualquier carácter que se muestre despuésdel retorno de carro sobreescribirá los carácteres previamente mostrados

Page 6: Tutorial de Java - Primeros Pasos en Java-1.pdf

en la línea.

\\ Retrobarra. Usado para mostrar la retrobarra.

\" Comillas Dobles. Usadas para mostrar el carácter de comillas dobles.

Salida Formateada

En Java SE 5.0 se agregó el método Syste m.out. printf para mostrar datos formateados. El siguiente

ejemplo, HolaMundoApp4.java, muestra la forma como debe realizarse.

// HolaMundoApp4.java// Imprimiendo múltiples líneas de texto con System.out.printf

public class HolaMundoApp4 { public static void main ( String args[] ) { System.out.printf( "%s\n\t%s\n", "¡Hola", "Mundo!" ); } // fin del método main} // fin de la clase HolaMundoApp4

El primer argumento de pr int f es una cadena de formato que podría consistir de texto fijo y

especificadores de formato. El texto fijo es mostrado tal como lo haría pr int o println. Cada especificador

de formato es un marcador de posición para un valor y especifica el tipo de dato para la salida. Losespecificadores de formato podrían incluir información opcional de formateo. La siguiente tabla indicaalgunos especificadores de formato.

d Muestra un entero en base diez.

o Muestra un entero en base ocho.

x ó X Muestra un entero en base hexadecimal.

e ó E Muestra un valor de punto flotante en notación científica.

f Muestra un valor de punto flotante en formato decimal.

g o G Muestra un valor de punto flotante en formato decimal o en notacióncientífica.

a o A Muestra un valor de punto flotante en formato hexadecimal.

c Muestra un carácter.

s Muestra una cadena.

En los campos se puede indicar su ancho insertando un entero entre el signo de porciento y el carácterde conversión, por ejemplo %4d en el especificador de formato. Si el ancho del campo es más largo que

el dato que será impreso, el dato será justificado a la derecha si es un número. Cuando se empleancarácteres de conversión de punto flotante, se puede indicar la precisión, (número de dígitos queaparecen después del punto decimal), colocar el punto decimal y un entero representando la precisiónantes del carácter de conversión, por ejemplo %. 3g, ó % 9.3f.

Introducción de Valores desde la Entrada Estándar

El siguiente ejemplo, suma.java, lee dos enteros tecleados por el usuario, y realiza la suma de los valoresy muestra el resultado. El programa deberá guardar los números dados por el usuario para despuéshacer el cálculo. El programa recuerda los números y otros datos en la memoria de la computadora y losaccede los datos a través de elementos del programa llamados variables.

// suma.java// Programa de suma que muestra la suma de dos números.import java.util.Scanner;

public class suma {

Page 7: Tutorial de Java - Primeros Pasos en Java-1.pdf

// método main que inicia la ejecución public static void main( String args[] ) {

// crear un Scanner para obtener la entrada desde la ventana de comandos Scanner entrada = new Scanner( System.in );

int numero1; // el primer operando int numero2; // el segundo operando int suma; // suma del numero1 y numero2

System.out.print( "Ingresar el primer entero: " ); // indicador numero1 = entrada.nextInt(); // leer el primer número del usuario

System.out.print( "Ingresar el segundo entero: " ); // indicador numero2 = entrada.nextInt(); // leer el segundo número del usuario

suma = numero1 + numero2; // agregar los números

System.out.printf( "La suma de %d y %d es %d\n", numero1, numero2, suma );

} // fin del método main

} // fin de la clase suma

Entrada/Salida usando la GUI

Varias aplicaciones que son usadas diariamente usan ventanas o cuadros de diálogo (también llamadosdiálogos) para interactuar con el usuario. Los cuadros de diálogo son ventanas en el cual el programamuestra mensajes importantes al usuario u obtiene información de este. La clase JO ptionP ane del

paquete ja vax.sw ing proporciona cuadros de diálogo para la entrada y la salida. Estos diálogos son

mostrados invocando los métodos st atic J Opt ionPane . Se presenta a continuación el programa

Suma.java, que es una aplicación de suma que usa dos diálogos de entrada para obtener enteros delusuario y un mensaje de diálogo para mostrar la suma de los enteros que el usuario ingreso.

// Suma.java// Programa Suma que usa JOptionPane para la entrada y la salida.import javax.swing.JOptionPane; // el programa usa JOptionPanepublic class Suma {

public static void main( String args[] ) {

// obtener entrada del usuario desde los cuadros de entrada de JOptionPane String primerNúmero = JOptionPane.showInputDialog( "Entrar el primer entero" ); String segundoNúmero = JOptionPane.showInputDialog( "Entrar el segundo entero" );

// convertir las cadenas de entrada a valores enteros para usarlos en el // cálculo. int número1 = Integer.parseInt( primerNúmero ); int número2 = Integer.parseInt( segundoNúmero ); int suma = número1 + número2; // sumar los números

// mostrar el resultado en un mensaje de diálogo de JOptionPane JOptionPane.showMessageDialog( null, "La suma es " + suma, "Suma de Dos Enteros", JOptionPane.PLAIN_MESSAGE ); } // fin de la clase main} // fin de la clase Suma