Ordenando nuestro proyecto Java. Uso de los paquetes en Java (packages)

Los paquetes en Java (packages) son la forma en la que Java nos permite agrupar de alguna manera lógica los componentes de nuestra aplicación que estén relacionados entre sí.

Los paquetes permiten poner en su interior casi cualquier cosa como: clases, interfaces, archivos de texto, entre otros. De este modo, los paquetes en Java ayudan a darle una buena organización a la aplicación ya que permiten modularizar o categorizar las diferentes estructuras que componen nuestro software.

Los paquetes en Java, adicionalmente al orden que nos permite darle a la aplicación, también nos brindan un nivel adicional de seguridad para nuestras clases, métodos o interfaces, pues como veremos más adelante podremos especificar si una clase o interfaz en particular es accesible por todos los componentes del software (sin importar el paquete) o si en realidad es solo accesible por las clases que estén en el mismo paquete que ésta. Veremos con más detalle este tema del acceso más adelante.

Ahora veamos cómo crear paquetes en Java

¿Cómo crear paquetes en Java?

Ya sabemos para qué sirven los paquetes en Java y sus características principales. Vamos ahora a aprender cómo usarlos y qué cambios generan estos en la estructura de nuestro proyecto.

Para declarar un paquete en Java se hace uso de la palabra reservada "package" seguido de la "ruta" del paquete, como se muestra a continuación.

package ruta.del.paquete;

Hay varias cosas que clarificar aquí. Como verás, la sintaxis es bastante simple y comprensible pero hay algunos detalles a tener en cuenta, veamos.

Tips o prácticas para crear paquetes en Java

  • El paquete en Java se declara antes que cualquier otra cosa:

    La declaración del paquete debe estar al principio del archivo Java, es decir, es la primera línea que se debe ver en nuestro código o archivo .java. Primero se declara el paquete, y luego podremos poner los imports y luego las clases, interfaces, métodos, etc.

  • Cada punto en la ruta del paquete es una nueva carpeta:

    Cuando se escribe la ruta del paquete en Java, se pueden especificar una ruta compleja usando el punto ".", por ejemplo en el código anterior, nuestra clase, interfaz o archivo estará ubicado en una carpeta llamada "paquete" la cual a su vez está en la carpeta "del" y esta también se encuentra dentro de una carpeta llamada "ruta". De este modo si queremos por ejemplo que una clase quede al interior de una carpeta llamada "mi_paquete" y ésta al interior de una carpeta llamada "otro_paquete" pondríamos:

  • package otro_paquete.mi_paquete; /*Se usa el punto para separar cada carpeta equivale a la ruta otro_paquete/mi_paquete dentro del proyecto*/ public class mi_clase { }
  • Prácticas recomendadas para nombrar paquetes en Java

    También hay varias buenas prácticas y recomendaciones para crear y declarar paquetes en Java. En generarl, los paquetes en java se declaran siempre en minúsculas y en caso de ser necesario las palabras se separan usando un guión bajo "_".
  • Si no se declara un paquete (paquete por defecto):

    Si decidimos no declarar un paquete para nuestra clase, ésta quedará en un paquete que se conoce como paquete por defecto (default package), en este paquete estarán todas las clases que no tengan un paquete declarado. Aunque esto no genera errores de compilación ni nada parecido, siempre es recomendable declarar un paquete a cada componente de nuestro programa Java para poder darle diferentes niveles de seguridad o acceso a dichos componentes y mantener todo ordenado.

  • Al momento de declarar el paquete en Java:

    Es común usar la primera letra en mayúscula cuando se declara una clase, pues bien, cuando se declaran paquetes es común que todas la letras estén en minúscula y en caso de ser varias palabras separarlas por un guion bajo "_" por ejemplo "mi_paquete" es adecuado mientras que "MiPaquete" aunque no es incorrecto, no es una buena práctica.

En estos momentos ya tenemos claro qué es y para qué sirve un paquete en Java, también sabemos cómo se declaran los paquetes en Java y probablemente tendremos una noción de los cambios que estos generan al interior de la estructura de nuestro proyecto. A continuación veremos un ejemplo que consistirá de cuatro clases diferentes en ubicaciones (paquetes) también diferentes y luego veremos cómo queda la estructura de nuestro proyecto

Ejemplo de paquetes en Java

A continuación pondré la declaración de cuatro clases diferentes en paquetes diferentes, cada clase se llamará "Clase_1", "Clase_2", "Clase_3" y "Clase_4" respectivamente. Voy a jugar un poco con las carpetas donde quedará alojada cada una de las clases para que afiances un poco más el concepto y comprendas bien el funcionamiento de los paquetes en Java y quizá soluciones alguna duda. Por tal motivo, te invito a intentar descifrar la ubicación exacta de cada clase al interior del proyecto según la declaración de su respectivo paquete y ver que sí hayas entendido adecuadamente el tema. Veamos:

  • Clase número uno:
  • package mis_clases.clases_publicas.clase_1; public class Clase_1 { }
  • Clase número dos:
  • package mis_clases.clase_2; class Clase_2 { }
  • Clase número tres:
  • package mis_clases; class Clase_3 { }
  • Clase número cuatro:
  • class Clase_4 { }

En la imagen de abajo se puede apreciar la estructura final obtenida tras la declaración de los paquetes de cada una de las cuatro clases de Java. Veamos con detalle esto para quedar claros.

Creación de paquetes en JavaLa clase número uno fue declarada en el paquete "mis_clases.clases_publicas.clase_1" por lo tanto quedará al interior de una carpeta llamada "clase_1" la cual estará al interior de otra carpeta llamada "clases_publicas" y esta a su vez estará dentro de la carpeta llamada "mis_clases". La clase número dos se le declaró el paquete "mis_clases.clase_2" por lo tanto ha quedado al interior de una carpeta llamada "clase_2" la cual a su vez está al interior de la carpeta "mis_clases". A la clase número tres se le impuso el paquete "mis_clases", esto indica que esta estará al interior de la carpeta "mis_clases". Por último, la clase número cuatro no tiene declarado ningún paquete por lo tanto el paquete asignado será el paquete por defecto, en otras palabras, esta clase se mantendrá siempre en la carpeta raíz del proyecto (en netbeans y eclipse la carpeta raíz se llama src).

Concluyendo el ejemplo de los paquetes en Java (packages)

Concluyendo finalmente con el ejemplo, tenemos que las tres primeras clases se encuentran al interior de la carpeta "mis_clases", la cuarta clase no se encuentra allí dado que se encuentra en la carpeta raíz del proyecto. La clase dos además de estar al interior de "mis_clases" está en un carpeta propia "clase_2" y la clase uno, se encuentra además al interior de la carpeta "clases_publicas" (si lo notaste es la única clase publica) y luego al interior de su propia carpeta "clase_1"

Muy bien, hemos llegado al final de este contenido, espero que hayas comprendido a la perfección cada uno de los detalles aquí explicados y que ahora domines correctamente el concepto de paquetes en Java. Recuerda que si tienes algún problema, duda o comentario, puedes dejarlo sin ningún temor en la sección de comentarios. Nuestro siguiente paso es aprender a hacer uso de una clase que se encuentra al interior de un paquete desde otra clase, por ejemplo como usar algún método de la clase_1 desde un método de la clase_3, esto lo veremos en la sección de Librerías en Java junto con algunas cosas más. Ahí te espero.

La última actualización de este artículo fue hace 2 años

Foto de JuanDMeGon

Juan David Meza González

JuanDMeGon

Magister, Ingeniero, Desarrollador
Web & Instructor

¡Listo!

En breve recibirás un mensaje de confirmación. Verifica, por si acaso, la carpeta de correo no deseado.

...

Si te parece bien, te enviaré de vez en cuando, mensajes de interés sobre los temas que se tratan en el sitio.

Tu dirección de correo electrónico será almacenada con un interés según el artículo en el que te encuentres.

Por supuesto, puedes cancelar tu suscripción en cualquier momento.