Paquete Java

Un Paquete en Java es un contenedor de clases que permite agrupar las distintas partes de un programa y que por lo general tiene una funcionalidad y elementos comunes, definiendo la ubicación de dichas clases en un directorio de estructura jerárquica.

Ventajas 
El uso de paquetes proporciona las siguientes ventajas:
Agrupamiento de clases con características comunes.
Reutilización de código al promover principios de programación orientada a objetos como la encapsulación y modularidad.
Mayor seguridad al existir niveles de acceso.
Evita la colisión de clases que tengan el mismo nombre. Pueden existir clases con el mismo nombre siempre y cuando su fully qualified class name sean únicos.
Mantenibilidad de código. Si un paquete se enfoca en la agrupación de clases con características comunes, el cambio en la funcionalidad se limita a las clases contenidas en dicho paquete, además, si es un paquete grande soporta la reusabilidad, si por el contrario es pequeño soporta su mantenibilidad.

Contenido de un paquete 
Un paquete puede contener:
Clases
Interfaces
Tipos Enumerados
Anotaciones

Atributos de un paquete Java 
Un paquete Java tiene los siguientes atributos:
 Son opcionales. Si no se define un paquete para un fichero de código Java se definirá un paquete llamado "default" automáticamente.
 Es definido un paquete por cada ficheros de código Java.
 Los nombres de paquete que comienzan con el nombre java.* y javax.* son reservados. 
 El nombre del paquete equivale a una estructura de ficheros. El nombre de paquete com.dominio_empresa.utilidades debería ser igual al directorio [ruta_directorio]\com\dominio_empresa\utilidades. Si una clase incluida en un paquete no se relaciona con su respectiva estructura de directorio, la clase no podrá usarse.

Convenciones en la definición de paquetes Java 
Los siguientes son convenciones o estándares acordados en la definición de paquetes en Java:
 El nombre del paquete se define de manera inversa al dominio de la organización o grupo. Por ejemplo, dominioempresa.com puede ser usado como nombre de paquete así: com.dominio_empresa.utilidades.
 El nombre del paquete debería definirse en minúscula. Si existen varias palabras en el nombre, se pueden separar con guion bajo (_).

Uso de paquetes 

En los ficheros de código Java se usa la palabra reservada package para especificar a qué paquete pertenecen. Suele indicarse como primera sentencia:

package java.awt.event;

Para usar un paquete dentro del código se usa la declaración import. Si sólo se indica el nombre del paquete, se importarán todas las clases que contiene:

import java.awt.event.*;

Si además del nombre del paquete se especifica una clase, sólo se importa esa clase:

import java.awt.event.ActionEvent;

Después de añadir alguna de las sentencias anteriores, se puede hacer referencia a la clase ActionEvent usando su nombre:

ActionEvent myEvent = new ActionEvent();

Si no se hubiera importado la clase o el paquete, cada vez que tuviéramos que usarla habría que especificarla por su fully qualified class name, que no es más que el nombre del paquete seguido por el nombre de la clase:

java.awt.event.ActionEvent myEvent = new java.awt.event.ActionEvent();Si lo que se desea es importar todos los miembros estáticos de una clase, note la sentencia static después de import. (A partir de J2SE 5.0 en adelante)import static java.awt.Color.*;Si lo que se desea es importar un solo miembro estático de una clase. (A partir de J2SE 5.0 en adelante)import static java.awt.color.ColorSpace.CS_GRAY*;

Librerías estándar de java
Estos son la librerías estándar  más importantes de la API de Java:

Enlaces externos 

 Especificación del lenguaje Java, 3ª edición: Unique Package Names
 Convención para el nombrado de paquetes Java

Plataforma Java