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
editarEl 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
editarUn paquete puede contener:
- Clases
- Interfaces
- Tipos Enumerados
- Anotaciones
Atributos de un paquete Java
editarUn 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.*
yjavax.*
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
editarLos 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
editarEn 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
editarEstos son la librerías estándar más importantes de la API de Java:
Paquete | Descripción |
---|---|
java.applet
|
Contiene clases para la creación de applets. |
java.awt
|
Contiene clases para crear interfaces de usuario con ventanas. |
java.io
|
Contiene clases para manejar la entrada/salida. |
java.lang
|
Contiene clases variadas pero imprescindibles para el lenguaje, como Object, Thread, Math...
El paquete |
java.net
|
Contiene clases para soportar aplicaciones que acceden a redes TCP/IP. |
java.util
|
Contiene clases que permiten el acceso a recursos del sistema, etc. |
javax.swing
|
Contiene clases para crear interfaces de usuario mejorando la AWT. |