Los programadores son un grupo organizado cuando se trata de escribir código. Les gusta organizar sus programas para que fluyan de una manera lógica, llamando a bloques de código separados para cada uno de los cuales tiene un trabajo en particular. La organización de las clases que escriben se realiza creando paquetes.
Un paquete permite a un desarrollador agrupar clases (e interfaces) juntas. Todas estas clases estarán relacionadas de alguna manera; podrían tener que ver con una aplicación específica o realizar un conjunto específico de tareas. Por ejemplo, el Java API está llena de paquetes. Uno de ellos es el paquete javax.xml. Este y sus subpaquetes contienen todas las clases en la API de Java relacionadas con el manejo XML.
Para agrupar clases en un paquete, cada clase debe tener una declaración de paquete definida en la parte superior de la misma.archivo java. Le permite al compilador saber a qué paquete pertenece la clase y debe ser la primera línea de código. Por ejemplo, imagina que estás haciendo un simple juego de acorazados. Tiene sentido poner todas las clases necesarias en un paquete llamado acorazados:
Es donde se almacenan todas las clases que pertenecen a ese paquete. Por ejemplo, si el paquete de acorazados contiene las clases GameBoard, Ship, ClientGUI, entonces serán archivos llamados GameBoard.java, Ship.java y ClientGUI.java almacenados en una llamada de directorio Buque de guerra.
Por ejemplo, el nombre del paquete javax.xml muestra que XML es un subpaquete del paquete javax. No se detiene allí, en XML hay 11 subpaquetes: bind, crypto, datatype, namespace, parsers, soap, stream, transform, validation, ws y XPath.
Los directorios en el sistema de archivos deben coincidir con la jerarquía de paquetes. Por ejemplo, las clases en el paquete javax.xml.crypto vivirán en una estructura de directorio de.. \ javax \ xml \ crypto.
Pero, en lo que respecta al compilador, cada paquete es un conjunto distinto de clases. No ve una clase en un subpaquete como parte de su paquete padre. Esta distinción se hace más evidente cuando se trata de usar paquetes.
En empresas de software y grandes proyectos, donde los paquetes pueden importarse a otras clases, los nombres deben ser distintivos. Si dos paquetes diferentes contienen una clase con el mismo nombre, es importante que no haya conflicto de nombres. Esto se hace asegurando que los nombres de los paquetes sean diferentes al comenzar el nombre del paquete con el dominio de la compañía, antes de dividirlos en capas o características: