stringtranslate.com

Paquete Java

Un paquete Java organiza las clases Java en espacios de nombres , [1] proporcionando un espacio de nombres único para cada tipo que contiene. Las clases del mismo paquete pueden acceder a los miembros privados y protegidos de cada una de ellas.

En general, un paquete puede contener los siguientes tipos : clases, interfaces , enumeraciones, registros y tipos de anotaciones . Un paquete permite a un desarrollador agrupar clases (e interfaces). Todas estas clases estarán relacionadas de alguna manera: es posible que todas tengan que ver con una aplicación específica o realicen un conjunto específico de tareas. Los programadores también suelen utilizar paquetes para organizar clases que pertenecen a la misma categoría o que brindan una funcionalidad similar.

Usando paquetes

En un archivo fuente de Java, el paquete al que pertenecen las clases de este archivo se especifica con la package palabra clave . Esta palabra clave suele ser la primera palabra clave del archivo fuente. Como máximo, puede aparecer una declaración de paquete en un archivo fuente.

paquete java.awt.event ; 

Para utilizar las clases de un paquete dentro de un archivo fuente de Java, es conveniente importar las clases desde el paquete con una importdeclaración. La siguiente declaración

importar java.awt.event.* ; 

importa todas las clases del java.awt.eventpaquete, mientras que la siguiente declaración

importar java.awt.event.ActionEvent ; 

Importa únicamente la ActionEventclase del paquete. Después de cualquiera de estas declaraciones de importación, ActionEventse puede hacer referencia a la clase mediante su nombre de clase simple:

ActionEvent miEvento = nuevo ActionEvent ();    

Las clases también se pueden utilizar directamente sin una declaración de importación utilizando el nombre completo de la clase. Por ejemplo,

java . awt . event . ActionEvent miEvento = new java . awt . event . ActionEvent ();    

no requiere declaración de importación previa.

Javadoc y anotaciones para todo el paquete

La documentación que explica el paquete en su totalidad está escrita como Javadoc en un archivo llamado exactamente `package-info.java`. Ese archivo también es el lugar donde se utilizan las anotaciones en todas las clases del paquete. [2]

El paquete sin nombre

Si no se utiliza una declaración de paquete, las clases se colocan en un paquete sin nombre. Las clases de un paquete sin nombre no pueden ser importadas por clases de ningún otro paquete. [3] El Tutorial oficial de Java desaconseja esto:

En términos generales, un paquete sin nombre es solo para aplicaciones pequeñas o temporales o cuando recién se está comenzando el proceso de desarrollo. De lo contrario, las clases e interfaces pertenecen a paquetes con nombre. [4]

Protección de acceso a paquetes

Los miembros y clases públicos son visibles en todas partes y los miembros privados son visibles solo en la misma clase. Las clases dentro de un paquete pueden acceder a las clases y miembros declarados con acceso predeterminado ( package-private ) así como a los miembros de clase declarados con el protectedmodificador de acceso. El acceso predeterminado ( package-private ) se aplica cuando una clase o miembro no se ha declarado como public, protectedo private. Por el contrario, las clases en otros paquetes no pueden acceder a las clases y miembros declarados con acceso predeterminado. Sin embargo, los miembros de clase declarados como protectedse pueden acceder desde las clases en el mismo paquete así como las clases en otros paquetes que son subclases de la clase declarante. [5]

Creación de archivos JAR

Los archivos JAR se crean con la utilidad de línea de comandos jar. El comando

jar cf miPaquete.jar *.class

comprime todos los archivos .class en el archivo JAR myPackage.jar . La opción 'c' en la línea de comandos le indica al comando jar que "cree un nuevo archivo". La opción 'f' le indica que cree un archivo. El nombre del archivo aparece a continuación del contenido del archivo JAR.

Convenciones de nombres de paquetes

Los paquetes se definen generalmente mediante un patrón de nombres jerárquico , con algunos niveles de la jerarquía separados por puntos ( , pronunciado "punto"). Aunque los paquetes que se encuentran más abajo en la jerarquía de nombres suelen denominarse "subpaquetes" de los paquetes correspondientes que se encuentran más arriba en la jerarquía, casi no existe una relación semántica entre los paquetes. La Especificación del lenguaje Java establece convenciones de nombres de paquetes para evitar la posibilidad de que dos paquetes publicados tengan el mismo nombre. Las convenciones de nombres describen cómo crear nombres de paquetes únicos, de modo que los paquetes que se distribuyen ampliamente tengan espacios de nombres únicos. Esto permite que los paquetes se instalen y cataloguen por separado, de forma sencilla y automática..

En general, el nombre de un paquete comienza con el nombre de dominio de nivel superior de la organización y luego el dominio de la organización y luego los subdominios, enumerados en orden inverso. La organización puede entonces elegir un nombre específico para su paquete. Los componentes posteriores del nombre del paquete varían según las convenciones de nomenclatura internas de la propia organización. [6]

Por ejemplo, si una organización de Canadá llamada MySoft crea un paquete para trabajar con fracciones, al nombrar el paquete ca.mysoft.fractions se distingue el paquete de fracciones de otro paquete similar creado por otra empresa. Si una empresa alemana llamada MySoft también crea un paquete de fracciones, pero lo llama de.mysoft.fractions , las clases de estos dos paquetes se definen en un espacio de nombres único e independiente.

Las convenciones completas para desambiguar los nombres de paquetes y las reglas para nombrar paquetes cuando el nombre de dominio de Internet no se puede usar directamente como nombre de paquete se describen en la sección 7.7 de la Especificación del lenguaje Java. [7]

Paquetes básicos en Java SE 8

Módulos

En Java 9 (lanzada el 21 de septiembre de 2017) se implementó la compatibilidad con "módulos", una especie de colección de paquetes, como resultado del esfuerzo de desarrollo del Proyecto Jigsaw. Los "módulos" se denominaban anteriormente "superpaquetes" y estaban previstos originalmente para Java 7.

Los módulos describen sus dependencias en una declaración ubicada en un archivo llamado module-info.java en la raíz de la jerarquía de archivos fuente del módulo. Desde Java 9 , el JDK puede verificar las dependencias del módulo tanto en tiempo de compilación como en tiempo de ejecución. El propio JDK está modularizado para Java 9. [8] [9]

Referencias

  1. ^ James Gosling, Bill Joy, Guy Steele, Gilad Bracha, The Java Language Specification, tercera edición , ISBN  0-321-24678-0 , 2005. En la Introducción, se afirma: "El Capítulo 7 describe la estructura de un programa, que está organizado en paquetes similares a los módulos de Modula".
  2. ^ "Capítulo 7. Paquetes y módulos". docs.oracle.com . Consultado el 10 de diciembre de 2021 .
  3. ^ "Capítulo 7. Paquetes". Docs.oracle.com . Consultado el 15 de septiembre de 2013 .
  4. ^ "Creación y uso de paquetes (Tutoriales de Java™ > Aprendizaje del lenguaje Java > Paquetes)". docs.oracle.com .
  5. ^ "Control del acceso a los miembros de una clase (Tutoriales de Java™ > Aprendizaje del lenguaje Java > Clases y objetos)". docs.oracle.com .
  6. ^ Convenciones de código para el lenguaje de programación Java: 9. Convenciones de nombres
  7. ^ "Paquetes". docs.oracle.com .
  8. ^ "Resumen del módulo JDK". Oracle Corporation . 23 de octubre de 2015. Archivado desde el original el 8 de diciembre de 2015. Consultado el 29 de noviembre de 2015 .
  9. ^ "Comprensión de los módulos de Java 9". Oracle Corporation . 1 de octubre de 2017 . Consultado el 4 de octubre de 2022 .

Enlaces externos