Download Programación Orientada a Objetos Práctica 0

Document related concepts
no text concepts found
Transcript
Programación Orientada a Objetos
Curso 2014/2015
Práctica 0
Objetivos formativos
-
Conocer la diferencia entre los entornos Java de desarrollo (JDK, Java Development
Kit) y de ejecución (JRE, Java Runtime Environment).
-
Conocer la ubicación de los comandos Java para el desarrollo de aplicaciones y
cómo ejecutarlos desde la línea de comandos.
-
Entender la importancia de las variables de entorno para la correcta ejecución de los
comandos Java.
-
Uso de ficheros jar para crear tanto librerías de código como ficheros ejecutables.
Ejercicios
1. JDK vs. JRE. Debes conocer la diferencia entre el entorno de desarrollo de Java (JDK,
Java Development Kit) y el entorno de ejecución (JRE, Java Runtime Environment). Para
ello localiza el directorio de instalación de Java:


Analiza la diferencia entre el contenido de las carpetas /bin/ del JDK y del JRE.
Debes darte cuenta qué comandos ofrece el JDK que no están disponibles en el
JRE.
Analiza el contenido de las carpetas /lib/ en cada caso.
2. Variables de entorno JAVA_HOME, PATH y CLASSPATH. En Windows7/8 se accede
a las variables de entorno desde las Mi PC>Propiedades> Configuración avanzada>
Variables de entorno.



Recuerda que JAVA_HOME es una variable opcional cuyo valor se corresponde
con la ruta donde se haya instalado el JDK (por ejemplo, C:\Program
Files\Java\jdk1.8.0_20 o C:\Program Files (x86)\Java\jdk1.8.0_20).
Busca este directorio y crea la variable de entorno.
Consulta el valor de la variable de entorno PATH. Debes asegurarte que incluye
el directorio donde se ubican los comandos del JDK (%JAVA_HOME%\bin), para
poder compilar y ejecutar un programa Java desde cualquier directorio.
Recuerda que el CLASSPATH contiene la ruta a las librerías y/o ficheros
globales para ejecutar aplicaciones Java en ordenador. Sin embargo, es poco
frecuente configurar esta variable a nivel global. Lo configuraremos en la
ejecución de cada proyecto, como se verá más adelante.
3. Ejecución desde la línea de comandos.

Abre
una
ventana
de
sistema
(En
Windows7
en
Todos
los
programas>Accesorios>Símbolo de sistema y en Windows8 escribir cmd en el
cuadro de búsqueda de aplicaciones y seleccionar “Símbolo de Sistema”) y créate un
directorio de trabajo para hacer las pruebas (C:\>mkdir seminario0).
1

Sitúate en el directorio seminario0 (C:\>cd seminario0) y crea un fichero de texto
Mensaje.java (Puedes ejecutar el notepad desde la línea de comandos). Este
fichero tiene que contener una clase con el mismo nombre y un programa que se
encargue de imprimir un mensaje por pantalla (System.out.println). La cadena del
mensaje corresponde con el primer argumento del programa.
public class Mensaje {
public static void main (String [] args){
System.out.println(“Mensaje: “ + args[0]);
}
}

Utiliza el comando javac.exe para compilar el código anterior. Recuerda que al
compilar se indica el nombre del fichero que contiene el código java (javac
Mensaje.java). Tras la compilación, lista el contenido del directorio de trabajo
(C:\seminario0>dir) para comprobar que se ha creado el fichero Mensaje.class.
Este es el fichero que contiene el código intermedio (bytecodes) que será
interpretado por la máquina virtual de Java durante la ejecución.

Utiliza el comando java.exe para ejecutar la clase anterior. Recuerda que al ejecutar
indicamos la clase que contiene el método main que queremos ejecutar, esto es, la
clase principal. En nuestro ejemplo debe ir seguida del argumento del programa
(java Mensaje Hola).

Cambia de directorio (C:\seminario0>cd..) y vuelve a ejecutar la aplicación.
Observa que la máquina virtual no encuentra la clase principal. Podemos indicar la
ubicación de la clase (el código compilado) utilizando el parámetro de la máquina
virtual –classpath (abreviado -cp):
C:\>java –cp seminario0 Mensaje Hola
4. Creación de ficheros .jar

Sitúate en el directorio seminario0 y utiliza el comando jar.exe para crear una
librería de código. El fichero debe llamarse libreria.jar y contendrá la aplicación
Mensaje.class.
-
Utiliza el comando jar cvf libreria.jar Mensaje.class. Recuerda que
puedes ver el contenido del jar que se ha creado con cualquier compresor
(por ejemplo, winzip o winrar)
-
Recuerda que se puede ejecutar la aplicación empaquetada en una librería,
para ello hay que indicar la ruta a la librería dónde se encuentra el código que
se va a ejecutar (configurando el classpath) y la clase principal.

Cambia de directorio (C:\seminario0>cd..)

Ejecuta la aplicación empaquetada en la librería que se encuentra en
el directorio seminario0:
C:\>java –cp seminario0\libreria.jar Mensaje Hola
2

Utiliza el comando jar.exe para crear un fichero jar ejecutable que se denomine
aplicacion.jar:
-
Vuelve al directorio de trabajo (C:\>cd seminario0).
-
Edita un fichero de texto con nombre manifest.mf e incluye la declaración
de la clase principal en la primera línea: Main-Class: Mensaje
-
La línea debe acabar con retorno de carro y el nombre de la clase no
contiene el sufijo ".class".
-
Utiliza el comando siguiente para crear el jar:
jar cvfm aplicacion.jar manifest.mf Mensaje.class
Ejecuta la aplicación utilizando el parámetro -jar de la máquina virtual.
-
C:\seminario0>java –jar aplicacion.jar Hola
Observa que la aplicación se puede ejecutar porque se ha configurado el
fichero manifiesto (Manifest.mf) indicando cuál es la clase principal.
Borra el fichero Mensaje.class y ejecuta de nuevo la aplicación incluyendo
el jar ejecutable en el CLASSPATH.
-
C:\seminario0>java –cp aplicacion.jar Mensaje Hola
Observa que esta última ejecución es la misma que hemos utilizado para el
caso de la librería de código. Ejecutamos la aplicación (indicando la clase
principal) empaqueta en el fichero jar.
Cambia de directorio y vuelve a ejecutar la aplicación utilizando el parámetro
-
–jar de la máquina virtual.
5. Compilación y ejecución de aplicaciones que usan otras librerías.

Descárgate en el directorio seminario0 la librería commons-lang.jar (disponible
en la web de la asignatura). Se trata de una librería que contiene la clase
WordUtils que permite hacer operaciones sobre cadenas de texto que contienen
palabras.

Edita el fichero Mensaje.java y modifica el código como se muestra a
continuación:
import org.apache.commons.lang3.text.WordUtils;
public class Mensaje{
public static void main (String [] args){
System.out.println(WordUtils.capitalizeFully(args[0]));
}
}
En el código anterior hacemos uso del método capitalizeFully que pone la
cadena de texto que se pasa como parámetro en formato título (cada palabra
empieza por mayúsculas).
3

Compila el nuevo código. En este caso tenemos que indicar en el classpath la
librería que contiene la clase que hemos utilizado:
C:\seminario0>javac –cp commons-lang.jar Mensaje.java

Ejecuta el nuevo código. Para la ejecución tenemos que indicar en el classpath la
ubicación tanto de la librería que se está utilizando como del código de la
aplicación (en este caso el directorio de trabajo es donde se encuentra el código
compilado). Observa que en el classpath estamos indicando la ubicación del
código necesario para ejecutar el programa: los ficheros class compilados en el
directorio actual y la librería. Además, ten en cuenta que, por defecto, si no se
indica el classpath de la ejecución se asume sólo el directorio actual.
C:\seminario0>java –cp .;commons-lang.jar Mensaje “Hola caracola”

Cambia de directorio y vuelve a ejecutar la aplicación configurando el classpath
de forma adecuada.

Vuelva a empaquetar de nuevo la aplicación y llámala ahora ejecutable.jar (el
fichero manifest.mf no cambia).

Ejecuta la aplicación estableciendo el classpath completo e indicando la clase
principal:
C:\seminario0>java –cp ejecutable.jar;commons-lang.jar Mensaje “Hola caracola”

Intenta ejecutar la aplicación utilizando el parámetro –jar de la máquina virtual.
Observa que la ejecución falla porque no encuentra la clase WordUtils. El
motivo es que si utilizamos la opción –jar se ignora el classpath que se
establezca.
C:\seminario0>java –cp commons-lang.jar –jar ejecutable.jar “hola caracola”

Cuando configuramos un jar ejecutable que utiliza una librería es recomendable
establecer esta dependencia en el fichero manifest.mf. Para ello, edita el
fichero manifest.mf para configurar el classpath de la siguiente forma:
Main-Class: Mensaje
Class-Path: commons-lang.jar
Observa que la ubicación de la librería que se establece en el classpath es
relativa a la ubicación del ejecutable.

Vuelva a empaquetar la aplicación con el nuevo manifiesto con el nombre
ejecutable2.jar.

Ejecuta la aplicación utilizando el parámetro –jar de la máquina virtual:
C:\seminario0>java –jar ejecutable2.jar “Hola caracola”

Por último, observa que tampoco es necesario incluir la librería en el caso de
ejecutar la aplicación estableciendo el classpath e indicando la clase principal:
C:\seminario0>java –cp ejecutable2.jar Mensaje “Hola caracola”
4