Pacote Java - Java package

Um pacote Java organiza classes Java em namespaces , fornecendo um namespace exclusivo para cada tipo que contém. As classes no mesmo pacote podem acessar os membros protegidos e privados do pacote umas das outras.

Em geral, um pacote pode conter os seguintes tipos de tipos : classes, interfaces , enumerações e tipos de anotação . Um pacote permite que um desenvolvedor agrupe classes (e interfaces). Todas essas classes estarão relacionadas de alguma forma - todas podem ter a ver com um aplicativo específico ou executar um conjunto específico de tarefas. Os programadores também costumam usar pacotes para organizar classes pertencentes à mesma categoria ou fornecer funcionalidade semelhante.

Usando pacotes

Em um arquivo de origem Java, o pacote ao qual a classe ou classes desse arquivo pertence é especificado com a package palavra - chave . Esta palavra-chave é geralmente a primeira palavra-chave no arquivo de origem. No máximo uma declaração de pacote pode aparecer em um arquivo de origem.

package java.awt.event;

Para usar as classes de um pacote dentro de um arquivo-fonte Java, é conveniente importar as classes do pacote com uma importdeclaração. A seguinte declaração

import java.awt.event.*;

importa todas as classes do java.awt.eventpacote, enquanto a próxima declaração

import java.awt.event.ActionEvent;

importa apenas a ActionEventclasse do pacote. Após qualquer uma dessas declarações de importação, a ActionEventclasse pode ser referenciada usando seu nome de classe simples:

ActionEvent myEvent = new ActionEvent();

As classes também podem ser usadas diretamente sem uma declaração de importação, usando o nome totalmente qualificado da classe. Por exemplo,

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

não requer uma declaração de importação anterior.

Javadoc e anotações em todo o pacote

A documentação explicando o pacote como um todo é escrita como Javadoc em um arquivo chamado exatamente `package-info.java`. Esse arquivo também é o local para anotações a serem usadas em todas as classes do pacote. Consulte a Especificação da linguagem Java .

O pacote sem nome

Se uma declaração de pacote não for usada, as classes serão colocadas em um pacote sem nome. As classes em um pacote sem nome não podem ser importadas por classes em nenhum outro pacote. O tutorial Java oficial não aconselha:

De um modo geral, um pacote sem nome é apenas para aplicativos pequenos ou temporários ou quando você está apenas começando o processo de desenvolvimento. Caso contrário, classes e interfaces pertencem a pacotes nomeados.

Proteção de acesso ao pacote

Membros públicos e classes são visíveis em todos os lugares e membros privados são visíveis apenas na mesma classe. As classes dentro de um pacote podem acessar classes e membros declarados com acesso padrão ( pacote privado ), bem como membros de classe declarados com o protectedmodificador de acesso. Padrão de acesso (pacote-privadas) é aplicada quando uma classe ou membro não tenha sido declarado como public, protectedou private. Em contraste, as classes em outros pacotes não podem acessar classes e membros declarados com acesso padrão. No entanto, os membros da classe declarados como protectedpodem ser acessados ​​a partir das classes no mesmo pacote, bem como classes em outros pacotes que são subclasses da classe declarante.

Criação de arquivos JAR

Os arquivos JAR são criados com o utilitário de linha de comando jar. O comando

jar cf myPackage.jar *.class

compacta todos os arquivos .class no arquivo JAR myPackage.jar . A opção 'c' na linha de comando diz ao comando jar para "criar um novo arquivo". A opção 'f' diz para criar um arquivo. O nome do arquivo vem a seguir, antes do conteúdo do arquivo JAR.

Convenções de nomenclatura de pacotes

Os pacotes são geralmente definidos usando um padrão de nomenclatura hierárquico , com alguns níveis na hierarquia separados por pontos ( , pronunciado "ponto"). Embora os pacotes inferiores na hierarquia de nomenclatura sejam freqüentemente referidos como "subpacotes" dos pacotes correspondentes superiores na hierarquia, quase não há relacionamento semântico entre os pacotes. A especificação da linguagem Java estabelece convenções de nomenclatura de pacote para evitar a possibilidade de dois pacotes publicados terem o mesmo nome. As convenções de nomenclatura descrevem como criar nomes de pacotes exclusivos, de forma que os pacotes amplamente distribuídos tenham namespaces exclusivos. Isso permite que os pacotes sejam instalados e catalogados separadamente, de maneira fácil e automática. .

Em geral, um nome de pacote começa com o nome de domínio de nível superior da organização e, em seguida, o domínio da organização e, a seguir, quaisquer subdomínios, listados na ordem inversa. A organização pode então escolher um nome específico para seu pacote. Os componentes subsequentes do nome do pacote variam de acordo com as convenções de nomenclatura internas da própria organização.

Por exemplo, se uma organização no Canadá chamada MySoft cria um pacote para lidar com frações, nomear o pacote ca.mysoft.fractions distingue o pacote de frações de outro pacote semelhante criado por outra empresa. Se uma empresa alemã chamada MySoft também cria um pacote de frações, mas o nomeia de.mysoft.fractions , então as classes nesses dois pacotes são definidas em um namespace exclusivo e separado.

Convenções completas para eliminar a ambiguidade de nomes de pacotes e regras para nomear pacotes quando o nome de domínio da Internet não pode ser usado diretamente como um nome de pacote são descritas na seção 7.7 da Especificação da linguagem Java.

Pacotes principais em Java SE 8

java.lang - funcionalidade de linguagem básica e tipos fundamentais
java.util - coleta de classes de estrutura de dados
java.io - operações de arquivo
java.math - aritmética multiprecisão
java.nio - a estrutura de E / S sem bloqueio para Java
java.net - operações de rede, soquetes, pesquisas DNS , ...
java.security - geração, criptografia e descriptografia de chave
java.sql - Java Database Connectivity (JDBC) para acessar bancos de dados
java.awt - hierarquia básica de pacotes para componentes nativos da GUI
java.text - Fornece classes e interfaces para lidar com texto, datas, números e mensagens de maneira independente das linguagens naturais.
java.rmi - Fornece o pacote RMI.
java.time - A API principal para datas, horas, instantes e durações.
java.beans - O pacote java.beans contém classes e interfaces relacionadas aos componentes JavaBeans.
java.applet - Este pacote fornece classes e métodos para criar e se comunicar com os miniaplicativos.

O pacote java.lang está disponível sem o uso de uma instrução de importação.

Módulos

No Java 9 , "módulos", uma espécie de coleção de pacotes, são planejados como parte do Projeto Jigsaw; antes eram chamados de "superpacotes" e originalmente planejados para o Java 7.

Os módulos descreverão suas dependências em uma declaração de módulo que será colocada em um arquivo denominado module-info.java na raiz da hierarquia de arquivo-fonte do módulo. O JDK será capaz de verificá-los tanto em tempo de compilação quanto em tempo de execução. O próprio JDK será modularizado para Java 9 .

Referências

links externos