Todo lo que siempre quise saber de los paquetes en java

Introducción
Siempre que utilizamos alguna librería de terceros para generar graficas o la que acabamos de ocupar para generar archivos pdf, notamos que tenemos que importar dichas clases de una manera similar a:

 

Con lo cual le decimos al compilador que vamos a hacer uso de las clases FileOutputStream, IOException las cuales se encuentran empaquetadas en java.io y que también vamos a utilizar la clase Document la cual está en el paquete com.itextpdf.text pero ¿Qué son los paquetes?

Según Wikipedia:
Un Paquete en Java es un contenedor de clases que permite agrupar las distintas partes de un programa cuya funcionalidad tienen elementos comunes.

Mi definición:
Los paquetes son la forma mediante la cual Java permite agrupar clases, interfaces, excepciones, constantes, etc. De esta forma, se agrupan conjuntos de estructuras de datos y de clases con algún tipo de relación en común.

Un paquete no es más que un conjunto o ruta de directorios en los cuales se almacenaran nuestras clases, quedando en un mismo directorio las clases que tengan relación entre ellas.

Java utiliza los paquetes para organizar sus clases y poner juntas o agrupadas las clases relacionadas como ejemplo tenemos el paquete útil, que contiene una serie de utilerías tales como las listas, arrayList etc.

¿Cómo usar los paquetes?

Cuando declaramos una variable en java de tipo String por ejemplo podemos hacerlo de la siguiente manera:

 

Sin embargo eso es muy difícil de recordar además haría que nuestro código se tornara difícil de leer y además mas pesado, pensando en esto Java permite referirnos al las clases del paquete java.lang directamente con lo cual declararíamos nuestra variable asi:

 

Y este ejemplo no es el peor vemos otro:

 

Es todo un royo por suerte los creadores de Java pensaron en todo esto y nos dan la solución, la cual consiste en importar previamente la clase desde el paquete que la contiene y posteriormente utilizarla simplemente con el nombre por lo que si retomamos el ejemplo anterior quedaría de la siguiente manera:

 

Como vemos esto nos facilita mas las cosas, podemos hacerlo todavía mas fácil, en el ejemplo anterior notamos que tanto List como ArrayList se encuentran en el mismo paquete por lo cual podemos importar todas las clases del paquete y nos quedaría de la siguiente forma:

 

Con lo cual le indicamos a java que vamos a utilizar una o mas clases del paquete java.util.
¿cómo creo mis propios paquetes?
Para declarar un paquete se utiliza la sentencia package seguida del nombre del paquete que estemos creando:

 

La estructura que ha de seguir un codigo fuente en Java es:
• Una única sentencia de paquete (opcional).
• Las sentencias de importación deseadas (opcional).
• La declaración de una (y sólo una) clase pública (public).
• Las clases privadas del paquete (opcional).
Por lo tanto la sentencia de declaración de paquete ha de ser la primera en un archivo fuente Java.

¿Y las reglas? ,¿Puedo poner los paquetes como se me dé la gana?
Pues en teoría si, puedes hacer los paquetes como se te ocurra, no hay ninguna limitación en cuanto a este tema se refiere, sin embargo, java propone una nomenclatura que hará mas fácil la tarea de asignar nombres a nuestros paquetes lo siguiente no es una regla sino mas bien es un convenio que propone java para hacer mas legible nuestro código:

* Los nombres de los paquetes deben empezar siempre con minúsculas.- Esto es para hacer más sencillo el reconocimiento tanto de los paquetes como de las clases, ya que por convenio todas las clases empiezan con una letra mayúscula por lo cual si tuviéramos:
 

si seguimos el convenio citado es obvio que com, roberto, leon, ejemplos son paquetes y que Ejemplo01 es el nombre de mi clase y también podemos deducir con toda certeza que getHola es un método o miembro de esa clase.

Actualmente no hay ninguna organización en Internet que controle esta nomenclatura(al menos hasta donde yo sé)

Javasoft ha reconocido este problema ya en una fase avanzada de su desarrollo, así que han indicado una convención para asegurar que los nombres de los paquetes sean únicos, basándose en los dominios, colocándolos al revés. Es decir, un dominio del tipo miempresa.com, debería colocar delante de todos sus paquetes el prefijo com.miempresa.

Para poner un ejemplo vamos a poner el ejemplo01.java y lo vamos asignar al paquete com.roberto.leon.ejemplos.

 

Veremos que al compilar nuestro archivo nos creara los directorios correspondientes al paquete indicado y además en ejemplos nos creara el archivo .class correspondiente a mi clase que acabo de compilar.

Ventajas del uso de paquetes en java
Pues creo que es evidente las ventajas que los paqutes nos ofrecen para empezar nuestras clases quedan ordenadas, esto hace que si trabajamos en equipo con varios programadores y alguno de llos crea una clase con el nombre métodos por ejemplo y yo hago una que se llame igual métodos entonces esto seria un problema a la hora de unir nuestros códigos, sin embargo si están distribuidas en diferentes paquetes, bastara con indicar a que paquete pertenece la clase que voy a utilizar, otra de las ventajas es que permite hacer tus clases mas propietarias.

<--- mi blog

Espero sus comentarios sobre este post.!!

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

Buena info

Detallada y simple... esta bien

): Saludos

Muy bien explicado,

Muy bien explicado, simplicidad ante todo como debe de ser :) buen artículo

Imagen de CharlieCorner

Felicitaciones, sólo una cosa

El artículo está bastante bastante claro, vas al punto sin rodeos y se entiende hasta por un principiante.

Algo que le daría un plus bastante bastante bueno es que lo editaras para agregar un apartado donde expliques la nomenclatura convencional para la organización de paquetes, porque si bien la usas no explicas por qué XD

Me refiero a decir: ¿Por qué usas com.roberto.leon.ejemplos? ¿Por qué no sólo ejemplos? Cosas así, de que va la URL de la página personal o de la empresa en sentido inverso separado por puntos.

¡Por lo demás, reitero, es un artículo excelente!

Imagen de Shadonwk

sí!!

tienes razon Charlie jeje nose porque se me paso pero ahora hago la correción...

gracias a quienes han comentado mi post, espero le hayan entendido, y recuerden que si quieren ver otros temas de programacion y de otras cositas muy utiles pueden darse una vueltesita por mi web. que apenas inicia pero con su ayuda se hara grande.

Imagen de 1a1iux

Una pequeña aclaración

"Siempre que utilizamos alguna librería de terceros para generar graficas o la que acabamos de ocupar para generar archivos pdf, notamos que tenemos que importar dichas clases de una manera similar a.."

Yo diría, siempre que se utiliza una clase que no se encuentre en el paquete java.lang se tiene que importar de forma explícita. Es decir, no importa si es una clase propia del API de Java o de una biblioteca de un tercero.

Por lo demás, buen post.

Sale y vale
Byte

No funciona el domain

Domain is out Thank you

tarea

acabo de terminar mi tarea :P