Download Para escribir, compilar y ejecutar un programa en Java

Document related concepts
no text concepts found
Transcript
Para escribir, compilar y ejecutar un programa en Java lo único que realmente se
necesita y no viene incluido con el sistema operativo es el kit de desarrollo de
Java, denominado SDK (Software Development Kit). Normalmente se usa la
edición estándar para la versión 2 del lenguaje Java, conocida como J2SE (Java 2
Standard Edition). Juntos conforman el J2SE SDK.
Un programa en Java se puede escribir con cualquier editor de texto plano. En
Windows puede usar el Bloc de Notas. Sin embargo hay varias opciones de
editores más especializados, algunas de ellas gratuitas y muy buenas, como el
ConTEXT. La diferencia está en que estos editores "conocen" la sintaxis de Java,
y por lo tanto ayudan al programador mientras escribe el programa. No son la
panacea, pero si son mejores que el sencillo Bloc de Notas.
El SDK usa una interfaz de línea de comandos, lo que significa que hay que salir
al ambiente de comandos para ejecutar cualquier operación, ya sea compilar o
ejecutar un programa. Además hay que verificar que las variables ambientales
respectivas estén bien establecidas. Una posibilidad es usar alguna interfaz
gráfica, de las cuales hay muchas y varias gratuitas. Entre las más famosas está el
NetBeans, que incluso es patrocinada por Sun Microsystems, la empresa creadora
de Java. Mucho más liviano y sencillo, pero no por eso menos efectivo es el JDK
Commander.
Para lo que sigue usaremos el ConTEXT para escribir los programas en Java,
JDK Commander para compilar y ejecutar, y el J2SE SDK actuando en el
trasfondo.
Obtener e instalar el software
(volver a Tabla de Contenidos)
Todos los software requeridos: J2SE SDK, ConTEXT y JDK Commander
pueden ser descargados desde mi página de recursos de software, y tienen las
siguientes características comunes:






Son open source, o en otras palabras, son gratuitos. No hay licencias
que pagar.
Pueden ser descargados desde la página de Software de mi sitio Web.
Su instalación es extremadamente sencilla.
Pueden ser copiados desde otro disco duro, y funcionar en forma
inmediata sin requerir instalación. Muy ventajoso si se requiere
usarlos en un PC donde no se cuenta con privilegios de instalación.
Deben ser instalados o copiados en forma completa.
Pueden ser instalados o copiados en cualquier unidad y carpeta,
aunque lo recomendable es el disco duro principal "C:" y la carpeta
"Archivos de programa".
Ahora que hemos visto las características comunes veamos las específicas.
J2SE SDK


ConTEXT
(volver a Tabla de Contenidos)
Si va a copiar el J2SE SDK desde otro disco duro ubique la carpeta
cuyo nombre comienza con j2sdk.
Trate de instalar o copiar la última versión disponible. Al momento de
escribir este apunte era la 1.4.2.
(volver a Tabla de Contenidos)
El ConTEXT puede configurarse para idioma español y para que por omisión
asuma que está trabajando con programas en Java. Esto es importante ya que
ConTEXT reconoce decenas de otros lenguajes computacionales. El modo de
hacer eso es el siguiente:
Como configurar el idioma español, explicado en 3 imágenes.
Como configurar para que Java sea el lenguaje por omisión, explicado en 2
imágenes:
JDK Commander
(volver a Tabla de Contenidos)
Para que el JDK Commander funcione correctamente hay que indicarle donde se
encuentra el compilador de Java, que es el archivo "javac.exe", uno de los tantos
que trae el J2SE SDK. Esto se hace del siguiente modo:
Otro elemento a configurar es el tema de la "CLASSPATH", que son las variables
ambientales de la interfaz de comandos del J2SE SDK, y que normalmente no
están bien configuradas. Hay que instruir al JDK Commander para que nunca las
use (never use), lo que se hace del siguiente modo:
Finalmente vamos a configurar el JDK Commander para que use el ConTEXT
en lugar del Bloc de Notas.
El primer programa
(volver a Tabla de Contenidos)
El primer programa en Java es muy sencillo. Es uno que sólo muestra en pantalla
un saludo. Este saludo puede ser cualquiera. Acá usaremos el famoso saludo
"Hola mundo." de casi todos los apuntes y libros que enseñan a programar en
Java.
Todo programa en Java debe incluir una clase pública (public class) con el
mismo nombre que el archivo que contiene al programa, el cual debe tener la
extensión java. Si nuestro programa se llama saludo, así mismo deberá llamarse
nuestra clase:
public class saludo
El nombre de una clase, el de un objeto, una variable, y el de cualquier elemento
que el programador crea durante la programación, se conoce como identificador.
Los identificadores son por lo tanto los nombres de los elementos creados por el
programado. El programador puede elegir y asignar identificadores a su criterio,
pero debe tener en cuenta las siguientes consideraciones:

Dos elementos diferentes en un programa no pueden tener el mismo
identificador, a menos que estén ubicados bajo diferentes elementos que los
contengan. Supongamos que tengo dos métodos, y a ambos les doy el




identificador hacer_algo. Si los elementos pertenecen a diferentes clases
entonces no hay problemas, pero si pertenecen a la misma clase entonces
tenemos un error.
Un identificador puede contener sólo letras del alfabeto inglés, dígitos y el
guión bajo ( _ ), y obligatoriamente debe comenzar por una letra.
Un identificador no puede coincidir con una palabra reservada, vale decir
que no puede coincidir con palabras que el lenguaje usa para sus propios
propósitos. Por ejemplo la palabra class no puede ser usada como
identificador, ya que Java la usa para un propósito específico. Cualquier
buen manual de Java contendrá una lista de las palabras reservadas del
lenguaje.
Java distingue entre mayúsculas y minúsculas, lo que quiere decir que para
él una letra en minúscula y una letra en mayúsculas son diferentes. De este
modo para Java carlos y Carlos vendrían a ser dos identificadores diferentes
entre sí. Escriba el mismo identificador siempre del mismo modo.
Los buenos identificadores ayudan a entender mejor el programa. Un buen
identificador no es muy largo y hace alusión a para que el elemento sirve o
para que se usa. Cuando un identificar cumple con estas características se
dice que es significativo.
Lo que vamos a escribir a continuación son las sentencias que definen la
clase saludo. Para que se entienda que esto es así vamos a escribir todo entre
llaves ( { } ), formando un bloque, que va a estar directamente bajo el control de
la clase saludo.
public class saludo
{
---------------------------}
Las llaves son un elemento muy usado en Java, por lo que abundan en cualquier
programa, y es normal que el programador novato se confunda con ellas, y genere
por lo tanto errores de compilación. Tenga en cuenta que siempre van en parejas,
y toda llave que se abre debe cerrarse en el lugar apropiado.
La clase principal del programa debe llevar obligatoriamente un método main,
que se declara y tiene su propio bloque.
public class saludo
{
public static void main (String[] args)
{
------------------}
}
¿Ve como van apareciendo más llaves?. Por ahora no vamos a explicar detalles
de la forma de declarar el método main, bastándonos con saber que siempre debe
declararse de esa forma.
Finalmente vamos a incluir la sentencia que hace aparecer el saludo en la
pantalla. Como todo en Java es un objeto (Java es 100% orientado a objetos),
vamos a usar un objeto predefinido que corresponde a la salida estándar del
sistema, que en el caso del PC es la pantalla. Este objeto es el System.out.
Pero un objeto siempre se usa mediante un método. El método
de System.out que vamos a usar es println. A este método le vamos a pasar como
argumento el valor de cadena "Hola mundo.".
System.out.println("Hola mundo.");
Nótese el punto y coma ( ; ) que debe ir obligatoriamente al final de toda
sentencia de un programa Java. No apareció antes ya que las líneas anteriores no
eran sentencias sino encabezados.
Finalmente armemos el programa completo:
public class saludo
{
public static void main (String[] args)
{
System.out.println("Hola mundo.");
}
}
Escribiendo el programa
Como ya debe resultar obvio vamos a escribir nuestro programa usando el
ConTEXT. Escriba el programa y guárdelo como saludo.java.
Compilando el programa
Desde el JDK Commander ubique el programa saludo.java usando el
botón browse y luego compílelo usando el botón javac, ambos en la ficha
superior que es la de compilación.
No espere fuegos de artificios, ni siquiera una simple felicitación. Si su
programa compila bien lo único que verá es una ventana que aparece y
desaparece, un sonido y de vuelta al JDK Commander. Pero si su programa tiene
fallas aparecerá una ventana reportándole los problemas encontrados. A propósito
introduje errores en mi programa para mostrarle un ejemplo de este último caso.
Otro ejemplo de un error
Y otro más:
Si es de los que se desespera cuando algo no le resulta a la primera entonces la
programación no es para usted. Es totalmente normal que un programa contenga
errores. Se entra entonces en un proceso de detectar, solucionar y volver a
compilar, hasta que finalmente el programa compila. Y prepárese, porque luego
vienen los errores de ejecución y todo el cuento comienza de nuevo. Como les
digo a mis alumnos, la programación es un 90% de frustración y un 10% de logro.
Si tuvo cualquier error vuelva a editar el programa, ubique donde se equivocó,
arréglelo y vuelva a compilar. Puede usar el botón Edit del JDK Commander para
esto.
¿Compiló bien?, ahora a ejecutarlo
Como Java es un lenguaje semi-compilado, el compilador no genera un
ejecutable autónomo, vale decir que lo que se obtiene resultado del proceso de
ejecución no es un archivo .exe, conteniendo las instrucciones en lenguaje de
máquina. El compilador genera código en lenguaje de máquina, sí, pero para una
máquina que sólo existe en forma virtual: la JVM.
La JVM es la máquina virtual de Java (Java Virtual Machine). Es algo así como
un computador que existe sólo en la mente de los desarrolladores del lenguaje
Java. El lenguaje de máquina de la JVM se denomina bytecode. El compilador de
Java genera un programa ejecutable para la JVM, escrito en bytecode. Este
programa se graba en un archivo con el mismo nombre de archivo fuente, pero
con extensión .class. En nuestro ejemplo se va a generar un archivo saludo.class.
Pero si la JVM no existe en realidad, ¿cómo se puede ejecutar el programa en
bytecode?. La respuesta es: mediante un intérprete. Un intérprete es un programa
que es capaz de leer el bytecode, traducirlo a la instrucción equivalente en
lenguaje de máquina del computador real que vamos a usar, y ejecutar
inmediatamente esa instrucción traducida. El interprete de Java es el
programa java.exe.
¿Para qué tanta complicación?, ¿Por qué mejor no compilar directamente a un
programa ejecutable?. Porque uno de los objetivos de los desarrolladores del
lenguaje Java es la portabilidad, la cual se obtiene en mejor forma mediante
lenguajes semi-compilados, línea que siguieron en consecuencia. La explicación
más detallada es algo larga y queda fuera del alcance de este apunte.
Para ejecutar nuestro programa usamos el JDK Commander, usando la ficha
inferior ubicamos el archivo saludo.class y luego usamos el botón java para
ejecutarlo con el intérprete.
El JDK Commander realiza la ejecución en una ventana propia, parte de la cual
se muestra a continuación: