Curso de Java

Aprende Java de una buena vez

gratis
texto

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 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 { }
  • 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 5 meses

Imagen descriptiva de JuanDMeGon

Juan David Meza González

JuanDMeGon

Magister, Ingeniero, Desarrollador
Web & Instructor

Lo que dicen los estudiantes

Genial el ambiente que genera la pagina. Simple, rápido, fácil y al alcance de cualquiera.¡Sigan así cracks!

Fran Garassi

Visitante del sitio ProgramarYa.com

Wuau, entendí más en una hora leyendo esto que en todo el semestre con la maestra de informática.

Valeria Sybelle

Visitante del sitio ProgramarYa.com

Estuve un semestre sin programar y me siento bastante perdida. Espero que este curso me ayude a ponerme de nuevo al corriente.

Fernanda Sanchez

Visitante del sitio ProgramarYa.com

Muy bien explicado. Contenido muy actualizado.

Santiago Zuluaga

Estudiante del curso "API RESTful con Laravel: Guía Definitiva"

Buena didáctica y redacción, espero más contenidos en los siguientes capítulos.

Juan Razo Ruiz

Estudiante del curso " La Guía del Principiante en Java: Fundamentos y Objetos"

¡De lo mejor! Saludos desde México, está super bien todo, claro y preciso. Lo mejor es que se usen ejemplos. ¡Mejor que algunos profesores que me han tocado!

Rodrigo Enciso

Visitante de PrograarYa.com

Habiendo visto el 100% del curso puedo decir que es muy bueno de acuerdo a lo propuesto, cumple con las expectativas.

Holmans Correa

Estudiante del curso " La Guía del Principiante en Java: Fundamentos y Objetos"

Estoy muy contento por haber terminado este curso. Estoy aplicando lo aprendido a mis proyectos y quedo totalmente satisfecho. Un curso 100% recomendable.

Jesus Romero

Estudiante del curso "VPS Seguro con DigitalOcean, Nginx, Letsencrypt Ubuntu 14.04"

Muy detallado y claras las explicaciones. Muchas gracias!

Sr. Erick Evencio

Estudiante del curso "API RESTful con Laravel: Guía Definitiva"

Demoramos mucho para llegar al desarrollo. Aunque la maquina virtual es necesaria son muchos videos. De ahí en fuera está muy bien

Benjamin Ortiz

Estudiante del curso "API RESTful con Laravel: Guía Definitiva"

Muy buena presentación pedagógica, pues nos quita el miedo a la programación. Yo entiendo que ésta tiene como objetivo facilitar el manejo de procesos que serían, demasiado complejos.

Jairo Ibarbo

Visitante del sitio ProgramarYa.com

Muy buen programador, dominas la POO como en ninguno otro curso, el uso de traits en el proyecto es una delicia.

Sergio Larracoechea

Estudiante del curso "APIs RESTful con Laravel"

El curso es bueno, pero siempre explica demasiado rápido

E-Contact

Estudiante del curso " Aprende Laravel: Crea un Gestor de Fotos con Laravel y PHP"

Muchas gracias me has ayudado a quitar mis dudas de qué es For While, if y switch. Esto me ayudara también a mi tarea.

Len Garcia

Visitante del sitio ProgramarYa.com

Hice muchos ejercicios y aquí logré comprender lo que realmente estaba haciendo. Llegó un momento en que dejó de gustarme la programación, pero con estos textos, recuperé la motivación. Buen trabajo.

Demetrio Cumplido

Visitante del sitio ProgramarYa.com

Buenas explicaciones y temario interesante.

Leonardo Quimpos

Estudiante del curso "API RESTful con Laravel: Guía Definitiva"

¡Listo!

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

¡Ups! {{subscriberErrorMessage}}

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

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

Además, puedes eliminar tu suscripción en cualquier momento.