Una vez hecho nuestro programa Hola Mundo en java, vamos a hacer uno similar, pero usando paquetes.
Cuando hacemos programas más grandes, es normal que el número de clases vaya creciendo. Cada vez tenemos más y más clases. Meterlas todas en el mismo directorio no suele ser bonito. Es mejor hacer grupos de clases, de forma que todas las clases que traten de un determinado tema o estén relacionadas entre sí vayan juntas. Por ejemplo, si hacemos un programa de una agenda de teléfonos que los guarde en una base de datos, podemo meter todas las clases que tratan con la base de datos en un paquete (grupo), todas las de ventanas en otro, las de imprimir en otro, etc, etc.
Un paquete de clases es un grupo de clases que agrupamos juntas porque consideramos que están relacionadas entre sí o tratan de un tema común.
Java nos ayuda a organizar las clases en paquetes. En cada fichero .java que hagamos, al principio, podemos indicar a qué paquete pertenece la clase que hagamos en ese fichero.
Por ejemplo, si decidimos agrupar nuestros programas de pruebas, incluido el Hola Mundo, en un paquete "prueba", pondríamos esto en nuestro fichero HolaMundo.java
package prueba;
public class HolaMundo
{
public static void main (String [ ] args)
{
System.out.println ("Hola
mundo");
}
}
El código es exactamente igual al de nuestro Hola Mundo original, pero hemos añadido la línea "package prueba;" al principio.
Hasta aquí todo correcto. Sin embargo, al hacer esto, para que
todo funcione bien, java nos obliga a organizar los directorios, compilar
y ejecutar de cierta forma.
Si hacemos que HolaMundo.java pertenezca al paquete prueba, java nos obliga a crear un subdirectorio "prueba" y meter el HolaMundo.java ahí.
Es decir, debemos tener esto así (unix y windows)
Nuevamente, las mayúsculas y minúsculas son importantes. Tal cual lo pongamos en "package", debemos poner el nombre del subdirectorio.
Para compilar la clase que está en el paquete debemos situarnos en el directorio padre del paquete y compilar desde ahí
Si todo va bien, en el directorio "prueba" se nos creará un HolaMundo.class
Una vez generado el HolaMundo.class en el directorio prueba, para ejecutarlo debemos estar situados en el directorio padre de "prueba". El nombre "completo" de la clase es "paquete.clase", es decir "prueba.HolaMundo". Por ello, para ejecutar, debemos hacerlo así
Si todo va como debe, debería salir "Hola Mundo" en la pantalla
Cuando las clases están en paquetes, la variable CLASSPATH debe ponerse de tal forma que encuentre el paquete, NO la clase. Es decir, en nuestro ejemplo
o bien, si usamos la opción -cp en la línea de comandos
Para poder organizar mejor las cosas, java permite hacer subpaquetes
de los paquetes y subpaquetes de los subpaquetes y así sucesivamente.
Por ejemplo, si quiero partir mis clases de prueba en pruebas básicas
y pruebas avanzadas, puedo poner más niveles de paquetes separando
por puntos
A nivel de subdirectorios tendría que crear los subdirectorios "basicas" y "avanzadas" debajo de "prueba" y meter ahí las clases que correspondan. Para compilar, en el directorio del proyecto habria que compilar poniendo todo el path hasta llegar a la clase. Idem para el CLASSPATH. Para ejecutar, el nombre de la clase va con todos los paquetes separados por puntos, es decir "prueba.basicas.HolaMundo" y "prueba.avanzadas.HolaMundoRemoto".
Es decir:
Para la próxima, el cómo empaquetar los .class en ficheros .jar ...