A programação Java consiste em criar classes. Ora, já que um programa é geralmente desenvolvido por uma equipe de programadores, ou seja, várias pessoas, o fato de concatenar (colocar de ponta a ponta) classes em um arquivo está longe de ser satisfatório. É por esta razão que o Java propõe o uso de pacotes (comparáveis às bibliotecas do C++ / C )
Assim, um pacote é uma unidade (um arquivo) agrupando classes. Para criar tal pacote, basta iniciar o arquivo fonte com classes a serem agrupadas com a instrução pacote seguida do nome que você deseja dar ao pacote. Desde já, todas as classes contidas no arquivo farão parte do pacote...
Os pacotes são organizados em uma hierarquia, isto quer dizer que podemos aninhá-los, para isso o Java exige que a localização dos arquivos fonte (ou seja, pacotes) correspondam à hierarquia dos pacotes. É por isso que um pacote chamado Mypackage (Meupacote)deve ser armazenado em um diretório com o mesmo nome. Além disso, para que o compilador possa encontrar o pacote, é fundamental que ele "conheça" a localização do pacote. Para isso, o Java usa uma variável de ambiente (na mesma linha da variável de ambiente PATH) chamada classpath, que dá a lista dos caminhos de acesso para as classes.
Por padrão, o compilador (e a máquina virtual) busca classes no diretório corrente e no diretório das classes padrão.
Para definir a variável de ambiente classpath
export</ital> CLASSPATH = <diretório>:<diretório>;...
export CLASSPATH = /home/jeff/java:/usr/lib/jdkx.x.x/lib/classes.zip:...
SET CLASSPATH = <diretório>;< diretório>;...
SET CLASSPATH = c:\java;c:\jdkx.x.x\lib\classes.zip;...
Para acessar as classes de um pacote a partir de uma classe que não faça parte do pacote, basta dar o caminho de acesso relativo à classe, quando você a chama. Assim, para chamar a classe <ital> e do pacote Meupacote, basta escrever:
MeuPacote.MinhaClasse
No entanto, ter de escrever sempre o caminho de uma classe seria bastante fastidioso: assim, é bem mais prático utilizar a instrução import, seguida do caminho da classe:
import MyPackage.MyClass;
import MyPackage.*;
import java.awt.Button; // Importamos a classe Button
import java.rmi.*; // Importamos todas as classes RMI
class Exemple {
static void main(String argv[]){
Rect MonRect =new Rectangle();
...
}
}
Ao contrário do que se poderia acreditar, a instrução import MonPackage.*; só pode tornar acessível as classes do pacote Mypackage e não, todos os pacotes cujo nome comece por Mypackage, quer dizer que a classe MeuPacote.pack1.MinhaClasse não estará acessível ...
Já que a estrutura hierárquica dos pacotes e o número considerável de pacotes criados por desenvolvedores de todo o mundo, é muito importante evitar dar o mesmo nome à pacotes diferentes.
Assim, o Java oferece uma nomenclatura padrão de pacotes. Esta nomenclatura padrão consiste em dar um nome ao pacote e "alongá-lo" com o nome da empresa, ou do criador das classes que ele contém. Assim, um pacote soundstuffs desenvolvido pelo Kioskea se chamaria net.kioskea.soundstuffs.
A acessibilidade dos dados membros e dos métodos de uma classe também é feita através de pacotes. Assim, uma classe só é visível a partir de classes fazendo parte do mesmo pacote. Ora, o interesse de um pacote é justamente o fato dele poder ser usado a partir de classes declaradas em outro arquivo, é por isso que as classes, de um pacote, destinadas à exportação devem sempre ser declaradas como públicas...
Java define dois pacotes padrão, isto é, um conjunto de classes ao qual é possível se referir sem especificar o caminho de acesso (seja com uma instrução import ou precedendo o nome pela hierarquia de pacotes). Estes pacotes são:
Com o crescimento das redes, os aplicativos são condenados a viajar, assim sendo, temos que nos assegurar:
Com este utilitário, você pode chamar, a partir de uma página Web, todas as classes de um applet se referindo apenas ao arquivo (cuja extensão é jar).
A sintaxe do jar é parecida com a do tar no Unix :
jar cvf MeuArquivo.jar *.class
jar xvf MonArchive.jar *.class
Tradução feita por Lucia Maurity y Nouira