¿Qué es un package en Java?

Un package, es un «contenedor».

¿Un contenedor de qué?

Pues de clases, interfaces, tipos enumerados y anotaciones.

Vamos a explicarlo más al detalle, más detenidamente con un ejemplo

Un package, tiene un funcionamiento «algo similar» a lo que es una carpeta para almacenar ficheros pero en caso del package, nos sirve para almacenar las clases, interfaces, tipos enumerados y anotaciones de Java. De hecho, si creamos un proyecto llamado contenedores y sobre dicho proyecto añadimos un package: Vemos que se nos ha creado el package con una especie de caja dentro de la carpeta src: En este caso, nos aparece en color blanco debido a que está vacío nuestro package y este es el mecanismo que tiene Eclipse para informarnos de que el package no contiene nada en su interior. Si por ejemplo creamos la clase Main en su interior: Podremos observar como nuestra cajita cambia a un color similar al de una caja de cartón y que tiene en su interior la clase Main.java Antes, en el ejemplo inicial, hemos comparado los packages de Java con carpetas. Realmente no son muy diferentes ya que realmente estos son carpetas como tal. De hecho si vamos a: Llegaremos al directorio src y podremos ver el listado de packages que tenemos dentro de nuestro proyecto. Y si nos fijamos podemos comprobar que realmente, un paquete (package) no es más que eso, una simple carpeta que para Eclipse únicamente almacenará clases, interfaces, tipos enumerados y anotaciones. Aunque para nosotros es una carpeta, y podremos añadir contenido como ficheros con extensión .txt, etc. Pese a ello, eso es una cosa que no recomiendo hacer.

No os he hablado inicialmente del package como una carpeta en si ya que no quería que lo relacionaráis como eso sin entender al 100 % lo que realmente es y el concepto que tiene detrás. Pero ahora sí que podemos afirmar que, un package es el mecanismo que tenemos en Java para agrupar/almacenar clases, interfaces, tipos enumerados y anotaciones. Por ello, hemos puesto el contenedor de ejemplo ya que cada cajita puede ser cada una de las clases, enums, anotaciones o interfaces que guardaremos en su interior. Un ejemplo, de esas cajitas, que contendrá nuestro package/contenedor ejemplo, es nuestra clase Main.java

¿Es necesario crear packages para trabajar con Java?

La respuesta es «si» y a la vez también «no». Vamos a argumentar él porque es si y no a la vez. Si borramos el package anterior (también eliminará todas los archivos que contenga en su interior) y creamos una clase sin definir el package se crea uno por defecto el conocido bajo default package. Y como podemos observar no es necesario crear un package, ya que Eclipse, nos crea automáticamente el default package. Para proyectos pequeños y que son bastante simples trabajar con el default package no nos generaría mucho problema, pero en proyectos medianos o grandes puede suponer un problema. Aunque sobre esto hablaremos más adelante analizando detenidamente el porque es importante y una buena práctica el crear nuestras clases sobre los packages definidos por nosotros mismos ya que no es el objetivo de este artículo.

Espero que este breve artículo os haya servido para resolver dudas y para familiarizaros un poco más a lo que son los packages.

System.out.println(«¡Saludos javer@s!»);