Introducción... 1 Qué es Java?... 1 Compilando a Bytecode... 1 Usando jgrasp Para Hacer el Trabajo Sucio... 5 El Entorno de jgrasp...

Tamaño: px
Comenzar la demostración a partir de la página:

Download "Introducción... 1 Qué es Java?... 1 Compilando a Bytecode... 1 Usando jgrasp Para Hacer el Trabajo Sucio... 5 El Entorno de jgrasp..."

Transcripción

1 Contenido Introducción... 1 Qué es Java?... 1 Compilando a Bytecode... 1 Usando jgrasp Para Hacer el Trabajo Sucio... 5 El Entorno de jgrasp... 5 Introducción Es tiempo de hablar en detalle de lo que significa escribir, compilar y ejecutar un programa en Java. Ya casi llegamos al punto en el que todas nuestras clases, serán principalmente en el laboratorio y es fundamental que todos nos desenvolvamos con facilidad en el entorno de programación de Java. Qué es Java? Según Wikipedia Java es un lenguaje de programación orientado a objetos desarrollado por Sun Microsystems a principios de los años 90. El lenguaje en sí mismo toma mucha de su sintaxis de C y C++, pero tiene un modelo de objetos más simple y elimina herramientas de bajo nivel, que suelen inducir a muchos errores, como la manipulación directa de punteros o memoria. De esta definición debemos destacar: Java es un lenguaje de programación orientado a objetos (se programa todo dentro de clases). Su modelo de objetos es más sencillo que el de otros lenguajes. Se encarga de cosas como el manejo de la memoria y su manipulación dentro de los programas de tal forma que el programador solo debe preocuparse (al menos la mayor parte del tiempo), por crear buenos algoritmos. Compilando a Bytecode Tal como escribimos nuestros programas, en uno o varios archivos de texto plano, no es posible ejecutarlos en el computador. Es necesario que estos archivos, llamados archivos de código fuente, sean procesados por un programa llamado compilador, que revisa su sintaxis y busca errores que pueda detectar en tiempo de compilación, para generar uno o más archivos de salida que pueden ser ejecutados por la JVM o Java Virtual Machine. Página 1

2 El compilador de Java llamado javac (the Java Compiler), toma los archivos fuente que se le pasan (estos archivos tienen extensión.java) y los convierte a bytecode que se guarda en archivos con extensión.class. El bytecode es un tipo de código binario que contiene el programa ejecutable en Java. Un archivo.class (de bytecode), no se puede ejecutar directamente sino que requiere de una JVM (Java Virtual Machine), que lee dicho código, lo interpreta y lo ejecuta para que nuestros programas en Java hagan lo que se supone que deben hacer. Por qué hacer las cosas tan complicadas? Porque una de las ventajas de Java es que puede compilarse una vez (en teoría), y correr en cualquier sistema operativo o plataforma que tenga una JVM instalada. En otras palabras, mi programa se ejecutará en Mac OS, Linux, Windows, FreeBSD, etc., sin necesidad de preocuparme por las particularidades de cada plataforma. Para poder hacer esto se requiere de un programa o máquina virtual (la JVM o Java Virtual Machine), cuya misión consiste en ocultar las particularidades de cada plataforma a los programas que se ejecutan en ella. Además el compilar el código fuente cumple las siguientes misiones: Busca errores de sintaxis en nuestros archivos fuente. Busca distintos tipos de errores, que pueden ser detectados sin necesidad de correr nuestro programa y que en última instancia, si no se corrigen a tiempo producirán programas o salidas defectuosas (errores como usar una variable sin haberla declarado o usar un método que no existe o que escribimos mal). Crea código que es más rápido de ejecutar, que si nuestro programa se interpretara línea por línea desde el código fuente. Crea archivos que podemos empaquetar y vender si el temor de que otros sepan fácilmente cómo es que hacemos para resolver el problema que nos hará millonarios. En Java se pueden crear programas tanto para el escritorio (con o sin ventanas gráficas), como lo hemos estado haciendo o podemos crear programas que se ejecutan dentro de un navegador. Veamos un ejemplo de una aplicación en Java, llamada Applet que se ejecuta dentro de un navegador: // Hola.java APPLET - SE EJECUTA EN UN NAVEGADOR import java.applet.applet; import java.awt.graphics; public class Hola extends Applet { public void paint(graphics gc) { gc.drawstring("hola, mundo!", 65, 95); El archivo.class generado a partir de este código debe estar dentro del código de una página HTML: Página 2

3 <!-- Hola.html --> <html> <head> <title>applet Hola Mundo</title> </head> <body> <applet code="hola.class" width="200" height="200"> </applet> </body> </html> Después de compilar nuestro código en Java y de tener en el mismo directorio el archivo Hola.class y el archivo hola.html (o como sea que queramos llamarlo, porque su nombre es independiente del nombre de nuestro.class), al abrir este último en un navegador (Internet Explorer, Firefox, Opera), obtenemos lo siguiente: Hemos así creado nuestro primer Applet. Como somos programadores tal vez nos parezca engorroso tener que abrir un navegador para ejecutar nuestro Applet. Java viene al rescate proporcionándonos el programa appletviewer que nos permite ejecutar nuestro programa directamente desde una consola de comandos: Página 3

4 Ahora veamos la misma aplicación pero para el escritorio: // Hola.java public class Hola { public static void main(string[] args){ System.out.println(" Hola, mundo!"); En las dos capturas de pantalla anteriores, se muestran también los comandos involucrados en la compilación y ejecución de nuestro programa en Java. Este ejemplo necesita de una breve explicación. Todo en Java está dentro de una clase, incluyendo programas autónomos. El código fuente se guarda en archivos con el mismo nombre que la clase que contienen y con extensión.java. Una clase (class) declarada pública (public) debe seguir este convenio. En el ejemplo anterior, la clase es Hola, por lo que el código fuente debe guardarse en el archivo Hola.java El compilador genera un archivo de clase (con extensión.class ) por cada una de las clases definidas en el archivo fuente. Los programas que se ejecutan de forma independiente y autónoma, deben contener el método main (). La palabra reservada void indica que el método main no devuelve nada. El método main debe aceptar un arreglo de objetos tipo String. Por acuerdo se referencia como args, aunque puede emplearse cualquier otro identificador. La palabra reservada static indica que el método es un método de clase, asociado a la clase en vez de una instancia de la misma. El método main debe ser estático o de clase. La palabra reservada public significa que un método puede ser llamado desde otras clases, o que la clase puede ser usada por clases fuera de la jerarquía de la propia clase. Otros tipos de acceso son private y protected. La utilidad de impresión forma parte de la biblioteca estándar de Java. la clase System define un campo público estático llamado out. El objeto out es una instancia de PrintStream, que ofrece el método println("string ), para volcar los datos en la pantalla (la salida estándar). Página 4

5 Las aplicaciones autónomas se ejecutan dando al entorno de ejecución de Java el nombre de la clase cuyo método main debe invocarse. Por ejemplo, una línea de comando (en Unix o Windows) de la forma java Hola ejecutará el programa del ejemplo (previamente compilando el archivo fuente y generado el archivo de bytecode Hola.class). Resumiendo la parte de comandos necesitamos conocer y manejar son los siguientes: javac: el compilador de java el cual recibe como parámetros nuestros archivos fuente. java: nuestro entorno de ejecución java, al cual debemos pasarle el nombre de la clase que contiene el método main en nuestras aplicaciones autónomas. appletviewer: el cual ejecuta nuestros applets de java, para lo cual debemos pasarle como parámetro el nombre del archivo HTML que contiene nuestra clase. Usando jgrasp Para Hacer el Trabajo Sucio Existen probablemente cientos de IDE o entornos de desarrollo integrado para Java. Para este curso se recomienda usar jgrasp ( dado que este nos proporciona ayudas visuales, diagramas de clases y CSD; todo en un entorno ligero y mucho más rápido que otros IDE como Eclipse o NetBeans. La buena noticia es que si no les gusta jgrasp, pueden usar cualquier editor de texto plano (notepad, kwrite, kate, vim, gedit, etc.), y compilar y ejecutar sus programas desde la consola de comandos como vimos en la sección anterior o usar otro IDE. Al fin y al cabo, su programa en Java hará siempre lo mismo si está bien construido. El Entorno de jgrasp Página 5

6 jgrasp nos proporciona un área de trabajo limpia, con botones que ejecutan los comandos y procesos más relevantes al momento de crear programas en Java. Los botones para compilar y ejecutar se encargan de llamar con sus parámetros correspondientes a javac y a java mostrando en la parte inferior de la ventana los mensajes del compilador o el I/O del programa cuando este se ejecuta (si el I/O no es gráfico). Hasta aquí jgrasp no hace nada distinto de otro IDE para Java. Su principal distintivo es que genera ayudas gráficas llamadas CSD sobre nuestro código fuente que representan cada una de las estructuras de programación que se usan en el lenguaje. Al generar el CSD, jgrasp detecta errores de sintaxis en nuestro código lo que finalmente nos hace más felices al facilitarnos la vida. Un ejemplo de un CSD sobre un archivo fuente es el siguiente: Esta clase de ayudas gráficas se agradecen después de unas cuantas horas de estar programando o de crear un archivo cuyo código ocupe más espacio que lo que podemos ver en pantalla. Un dato adicional acerca de los CSD es que al hacer doble clic sobre ellos ocultan las secciones del código que corresponden a esa estructura de programación lo que nos permite concentrarnos en verificar la lógica de nuestros programas. Página 6