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 del paquete de cada una.

En general, un paquete puede contener los siguientes tipos de 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 proporcionan una funcionalidad similar.

Usando paquetes

En un archivo fuente Java, el paquete al que pertenecen la clase o clases de este archivo se especifica con la package palabra clave . Esta palabra clave suele ser la primera palabra clave en el 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 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 solo la ActionEventclase del paquete. Después de cualquiera de estas declaraciones de importación, ActionEventse puede hacer referencia a la clase usando 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 . evento . ActionEvent miEvento = nuevo java . awt . evento . Evento de acción ();    

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 utilizarán 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 importarse mediante clases de ningún otro paquete. [3] El tutorial oficial de Java desaconseja esto:

En términos generales, un paquete sin nombre es sólo para aplicaciones pequeñas o temporales o cuando recién estás 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 solo son visibles en la misma clase. Las clases dentro de un paquete pueden acceder a clases y miembros declarados con acceso predeterminado ( paquete-privado ), así como a miembros de clase declarados con el protectedmodificador de acceso. El acceso predeterminado (paquete privado) se aplica cuando una clase o miembro no ha sido declarado como public, protectedo private. Por el contrario, las clases de otros paquetes no pueden acceder a clases y miembros declarados con acceso predeterminado. Sin embargo, se puede acceder a los miembros de la clase declarados protecteddesde las clases del mismo paquete, así como desde las clases de 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 *.clase

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

Convenciones de nomenclatura de paquetes

Los paquetes generalmente se definen usando un patrón de nomenclatura jerárquico , con algunos niveles en la jerarquía separados por puntos ( pronunciado "punto"). Aunque los paquetes inferiores en la jerarquía de nombres a menudo se denominan "subpaquetes" de los paquetes correspondientes superiores en la jerarquía, casi no existe una relación semántica entre los paquetes. La Especificación del lenguaje Java establece convenciones de nomenclatura de paquetes para evitar la posibilidad de que dos paquetes publicados tengan el mismo nombre. Las convenciones de nomenclatura 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 catalogen por separado, de forma fácil 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. Luego, la organización puede 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 una organización. [6]

Por ejemplo, si una organización en Canadá llamada MySoft crea un paquete para tratar con fracciones, nombrar el paquete ca.mysoft.fractions 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 , entonces las clases de estos dos paquetes se definen en un espacio de nombres único y separado.

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

Paquetes principales en Java SE 8

Módulos

En Java 9 (lanzado el 21 de septiembre de 2017), se implementó el soporte para "módulos", una especie de colección de paquetes, como resultado del esfuerzo de desarrollo del Proyecto Jigsaw. Los "módulos" se llamaban anteriormente "superpaquetes" y originalmente estaban planeados para Java 7.

Los módulos describen sus dependencias en una declaración colocada en un archivo llamado module-info.java en la raíz de la jerarquía del archivo 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 LanguageSpecification, tercera edición , ISBN  0-321-24678-0 , 2005. En la introducción, se dice que "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. ^ "Controlar el acceso a los miembros de una clase (Tutoriales de Java™ > Aprender el lenguaje Java > Clases y objetos)". docs.oracle.com .
  6. ^ Convenciones de código para el lenguaje de programación Java: 9. Convenciones de nomenclatura
  7. ^ "Paquetes". docs.oracle.com .
  8. ^ "Resumen del módulo JDK". Corporación Oráculo . 2015-10-23. 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". Corporación Oráculo . 1 de octubre de 2017 . Consultado el 4 de octubre de 2022 .

enlaces externos