G.Bordel >Docencia >TAP | Técnicas Actuales de Programación | (curso 2010-2011) | |||||||
|
|||||||||
tema_anterior | Tema 2: Uso del entorno de desarrollo | tema_siguiente |
2.3- Compilación y ejecución
La compilación se lleva a cabo con el mando "javac"
(de "java compiler"). Aunque más adelante se matizará esto, comenzaremos por mencionar
que para que una clase pueda ser compilada debe encontrarse en un fichero con su mismo nombre y extensión .java
.
Por tanto, si escribimos nuestro primer ejemplo en un fichero de nombre "HolaMundo.java"
podremos compilar:
|
Con esto obtenemos el fichero HolaMundo.class
que puede ser ejecutado por la Máquina
Virtual Java (mando java
):
|
(Obsérvese que la máquina virtual recibe el nombre de la clase sin la extensión .class
)
Pero esto no es todo. Tomemos nuestra segunda versión del programa y hagamos uso de lo aprendido
respecto a las bibliotecas. Pongamos que la clase Saludador
pertenece a una biblioteca
llamada cursoDoctorado
y se encuentra en un paquete en el primer subnivel que se llama
ejemplos
. El código debe quedar así:
|
|
|
|
Situaremos ahora el fichero Saludo.java
en un directorio ejemplos
dentro
de cursoDoctorado
en algun lugar del sistema de ficheros (pongamos para este caso que
en c:\), y procedamos a compilar. Basta con hacer:
|
El compilador compila la clase que se le indica y estudia sus dependencias. Descubre la necesidad
de la clase Saludo
y determina donde se encuentra, de modo que va a localizarla para
chequear la consistencia de mi programa con aquella clase, y en caso de que no este compilada (o su
codigo fuese posterior al fichero de la clase) se encarga de compilarla tambien, dejando el resultado
en el paquete adecuado.
La ejecución se hará:
|
zip
o jar
En el apartado anterior se mencionaba la posibilidad de aglutinar toda una biblioteca de clases
en un fichero "zip". Esto mismo puede ser aplicado a toda una aplicación: se estructura conforme se considere
necesario dentro de un arbol de directorios y se compacta incluyendo todas las clases. Una de estas clases será
la que contenga el main
, y puede ser llamada al invocar a la máquina virtual. Tomaremos como ejemplo
una aplicación real en la que la clase inicial es la denominada SKTLSSJapp
y para la cual se han
compactado todos los ficheros de clase, que se encuentran en un mismo dorectorio, en un "zip" denominado SKTLSS.zip
que contiene incluso a la
clase inicial. La llamada para la ejecución de la aplicación es la siguiente:
|
Una vez que el fichero compactado incluye una aplicación (con su clase origen) podemos pensar que sería
razonable hacer que este fichero sea "suficiente" para ser ejecutado, sin necesidad de especificar
a la máquina virtual cual es la clase inicial. Esto puede hacerse si la información necesaria se
incluye en el fichero de un modo establecido. Debe incluirse un subdirectorio del raiz con el nombre
meta-inf
y dentro de él un fichero, conocido como manifiesto, con el
nombre manifest.mf
. Una de las informaciones que pueden incluirse dentro de este manifiesto
es la identificacion de la clase de inicio (además de otras que quedan fuera del ámbito de este curso).
Para distinguir este fichero "zip" conteniendo el manifiesto, se le da extensión .jar
y puede ser ejecutado por la Máquina Virtual dándoselo como parámetro a la opción -jar
.
Esto puede verse en la siguiente figura aplicado a un programa de demostración de un interfaz gráfico en Java.
![]() Una aplicación contenida en un fichero "jar" debe incluir un fichero de información para el entorno
de ejecución llamado "manifest.mf" dentro de un directorio de nombre "meta-inf" . Como mínimo
dentro deeste fichero se encontrará el nombre de la clase en la que se encuentra em método "main" que
arranca la aplicación.
|
El mando jar
del kit de desarollo java permite generar estos ficheros compactados. Es en
todo punto semejante al tar
de Unix utilizado con compresión, y simplemente se le
ha añadido la posibilidad de aportarle el manifiesto como opción para que lo incluya en la estructura
dentro del subdirectorio meta-inf
y con el nombre adecuado, además de analizar que sea correcto.
Por ejemplo, el fichero de la figura anterior podria haber sido creado con el siguiente mando:
|
Siguiente punto: 2.4- Generación de documentación
Plataforma de soporte a curso y contenidos (c) German Bordel 2005. |