Paquete Java

De Wikipedia, la enciclopedia libre

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[editar]

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[editar]

Un paquete puede contener:

Atributos de un paquete Java[editar]

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[editar]

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[editar]

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[editar]

Estos 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.lang es importado por defecto en el ficheros de código Java.

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.

Enlaces externos[editar]