Prácticas
Práctica 01
Objetivo: crear un Proyecto Java en Eclipse para una aplicación de línea de comandos así como un archivo JAR ejecutable a partir del proyecto.
En la barra de menú de Eclipse accede a File > New > Java Project y rellena el formulario de la ventana New Java Project con lo siguiente:
- Name:
java01
- Location: observa que este campo establesca la creación de
java01
dentro del workspace. - Use an execution environment JRE:
JavaSE-1.8
Da click al botón Next y finalmente al botón de Finish.
Al terminar contarás con la siguiente estructura en
jee01
:alumno@servidor:~/code/eclipse/java$ pwd && tree java01/ /home/alumno/Code/eclipse/java java01/ ├── bin └── src 2 directories, 0 files
- Name:
En la vista Package Explorer de Eclipse da click derecho sobre el proyecto
java01
, accede a New > Class y rellena el formulario de la ventana New Java Class con lo siguiente:- Package:
poo.java01
- Name:
Main
- Modifiers:
public
- Selecciona la opción
public static void main(String[] args)
. Desactiva las opciones debajo de esta.
Da click al botón Finish.
Al terminar contarás con la siguiente estructura en
jee01
:alumno@servidor:~/code/eclipse/java$ pwd && tree java01/ /home/alumno/Code/eclipse/java java01/ ├── bin │ └── poo │ └── java01 │ └── Main.class └── src └── poo └── java01 └── Main.java 6 directories, 2 files
Observaciones sobre el contenido de
java01
:src/
: directorio que mantendrá los archivos con códifo fuente Java del proyecto y que serán compilados.bin/
: directorio que mantendrá los archivos con Java bytecode del proyecto y que serán ejecutados en la JVM.poo
yjava01
: directorio que representa un paquete Java (Java Package). El paquetejava01
se encuentre dentro del paquetepoo
.Main.java
: archivo con código fuente Java. Al tener la definición del métodopublic static void main(String[] args)
se le considera el punto de inicio o de ejecución de la aplicación, también conocida como la clase principal.Main.class
: archivo con Java bytecode.
- Package:
Modifica el contenido de
Main.java
con lo siguiente: Main.java.txtEjecuta el proyecto en Eclipse:
- En la vista Package Explorer da click derecho sobre el proyecto
java01
, accede a Run As > Java Application. - En la barra de menú accede a Run > Run.
- Aprieta el juego de teclas (shortcut)
Ctrl + F11
.
Al terminar contarás con la siguiente estructura en
jee01
:alumno@servidor:~/code/eclipse/java$ pwd && tree java01/ /home/alumno/Code/eclipse/java java01/ ├── bin │ └── poo │ └── java01 │ ├── Despedida.class │ ├── Main.class │ └── Saludo.class └── src └── poo └── java01 └── Main.java 6 directories, 4 files
- En la vista Package Explorer da click derecho sobre el proyecto
Modifica el cuerpo del método
public static void main(String[] args)
enMain.java
con lo siguiente:Saludo saludo; Despedida despedida; if (args.length == 1) { saludo = new Saludo(args[0]); despedida = new Despedida(args[0]); } else { saludo = new Saludo("mundo"); despedida = new Despedida("mundo"); } System.out.println(saludo.saludar()); System.out.println(despedida.despedir());
Ejecuta una vez más el proyecto.
En la vista Package Explorer de Eclipse da click derecho sobre el proyecto
java01
, accede a Run As > Run Configurations....Cerciorate que en la ventana Run Configurations el nodo Java Application > Main se encuentre seleccionado, accede a la pestaña Arguments, agrega al campo Program arguments lo siguiente:
${system:OS}
. Da click al botón Run para ejecutar el proyecto.Hasta aquí se ha logrado tener una aplicación con una clase principal (Main) la cual:
- Contiene la definición de dos clases finales: Saludo y Despedida.
- Permite recibir un argumento para su ejecución.
NOTA:
${system:OS}
es una variable-función que permite obtener un valor en Eclipse, en este caso el nombre del sistema operativo.En la vista Package Explorer de Eclipse da click derecho sobre el proyecto
java01
, accede a Export. Ante la ventana Export selecciona el nodo Runnable JAR file y da click al botón Next.Rellena el formulario de la ventana Runnable JAR File Export con lo siguiente:
- Launch configuration: Main - java01
- Export destination:
/home/alumno/java01.jar
Y selecciona la opción Extract required libraries into generated JAR.
Da click al botón Finish.
Al terminar accede a
$HOME
en la línea de comandos y ejecuta al archivo JAR:alumno@servidor:~$ pwd /home/alumno alumno@servidor:~$ file java01.jar java01.jar: Zip archive data, at least v2.0 to extract Java archive data (JAR) alumno@servidor:~$ java -jar java01.jar ¡Hola mundo! ¡Adios mundo! alumno@servidor:~$ java -jar java01.jar "LINUX" ¡Hola LINUX! ¡Adios LINUX! alumno@servidor:~$ java -jar java01.jar "12345" ¡Hola 12345! ¡Adios 12345! alumno@servidor:~$ java -jar java01.jar "♞" ¡Hola ♞! ¡Adios ♞! jalumno@servidor:~$ ava -jar java01.jar "$(uname -or)" ¡Hola 4.11.6-1-default GNU/Linux! ¡Adios 4.11.6-1-default GNU/Linux!
RECOMENDACIÓN: como se puede obervar el archivo java01.jar
es un archivo comprimido en formato ZIP. Estudia el contenido del
archivo java01.jar
, en especial el archivo META-INF/MANIFEST.MF
.
Lecturas
- Crear un unico JAR en Java.Lang.NullPointer
- Creando archivo jar ejecutable y qué es la máquina virtual de java en edu4java.com
- Otras opciones: IzPack, Launch4j, install4j y WinRun4j.
Práctica 02
Objetivo: similar al de la Práctica 01 pero agregando al proyecto el uso de librerías externas (archivos JAR).
Las librerías a usar serán:
Apache Commons CSV: librería para leer y escribir en el formato CSV (comma-separated values).
j2html: librería para generar (construir) documentos HTML con el lenguaje de programación Java.
Realiza los primeros dos pasos dados en la Práctica 01 tomando en cuenta que el proyecto ahora se llamará java02
.
Definición de User Libraries en Eclipse
En Eclipse podrás definir una librería de usuario (User Library), la cual podrás posteriormente asociar a distintos proyectos. Lo anterior tiene que ver con el CLASSPATH de Java y como Eclipse administra su definición para ubicar librerías externas al proyecto para su uso-compilación.
Descarga las librerías:
Crea un directorio donde mantendrás un repositorio local de librerías de Java, por ejemplo:
/home/alumno/code/jars/
.Apache Commons CSV: accede a https://commons.apache.org/proper/commons-csv/download_csv.cgi y descarga el archivo
commons-csv-*-bin.tar.gz
. En este caso se ha descargado el archivo JAR para la versión 1.5. Descomprime el contenido del archivo descargado dentro del repositorio local.j2html: accede a https://mvnrepository.com/artifact/com.j2html/j2html y descarga el archivo JAR ofrecido para su versión 1.3.0 dentro del repositorio local.
Al finalizar contarás con una estructura similar a la siguiente en tu repositorio local:
alumno@servidor:~/Code/jars$ pwd && tree -L 3 /home/alumno/Code/jars . ├── commons-csv │ ├── commons-csv-1.5 │ │ ├── apidocs │ │ ├── commons-csv-1.5.jar │ │ ├── commons-csv-1.5-sources.jar │ │ ├── LICENSE.txt │ │ ├── NOTICE.txt │ │ └── RELEASE-NOTES.txt │ └── commons-csv-1.5-bin.zip └── j2html └── j2html-1.3.0 └── j2html-1.3.0.jar 5 directories, 7 files
Define User Libraries en Eclipse:
De la barra de menú de Eclipse accede a Window > Preferences. Ante la ventana Preferences accede a Java > Build Path > User Libraries:
Apache Commons CSV: da click al botón New, ingresa en el campo User Library Name
commons-csv-1.5
y da click al botón de OK. Selecciona a commons-csv-1.5, da click al botón Add External JARS, localiza el archivocommons-csv-1.5.jar
dentro de tu repositorio local de archivos JAR.j2html: da click al botón New, ingresa en el campo User Library Name
j2html-1.3.0
y da click al botón de OK. Selecciona a j2html-1.3.0, da click al botón Add External JARS, localiza el archivoj2html-1.3.0.jar
dentro de tu repositorio local de archivos JAR.
Finalmente da click al botón de OK en la ventana de Preferences.
Integra User Libraries a un proyecto:
En la vista Package Explorer da click derecho sobre java02 y selecciona Properties. Ante la ventana de Properties for java02 accede a Java Build Path > Libraries, da click al botón Add Library, selecciona User Library, da click al botón Next, selecciona las dos librerías recien definidas y da click al botón Finish.
Finalmente da click al botón de OK en la ventana de Properties for java02.
Código fuente
En la vista Package Explorer da click derecho sobre java02 > src > New y crea lo siguiente:
Package:
poo.java02
- Class: Main.java
Package:
poo.java02.generadores
- Class: GeneradorHtmlAsegurados.java
Package:
poo.java02.lectores
- Class: LectorCsvAsegurados.java
Package:
poo.java02.pojos
- Class: Asegurado.java
Package:
poo.java02.visualizadores
Directory:
archivos-csv
- File: asegurados.csv
Guarda los cambios hechos en el proyecto.
Ejecución
En la vista Package Explorer de Eclipse da click derecho sobre el proyecto java02
, accede a Run As > Run Configurations....
Cerciorate que en la ventana Run Configurations el nodo Java Application > Main se encuentre seleccionado, accede a la
pestaña Arguments, agrega al campo Program arguments lo siguiente: "archivos-csv/asegurados.csv"
. Da click al botón Run
para ejecutar el proyecto.
Hasta aquí se ha logrado tener una aplicación con una clase principal (Main) la cual:
- Recibe como parámetro el nombre de un archivo con formato CSV e información de asegurados.
- De encontrarse dicho archivo se es leído (parseado) mediante la librería Apache Commons CSV, convertido a un documento HTML mediante la librería j2html y finalmente mediante Java Swing se muestra el documento HTML generado en un JTextPane.
Lecturas
- Funcionamiento de CLASSPATH, package y jar en chuidiang.org.