O gabarito Java é o conjunto de classes que modelam os objetos associados à criação, edição e construção de um programa Java. As classes do gabarito Java são definidas nos pacotes org.eclipse.jdt.core.*. Essas classes implementam o comportamento específico Java em recursos e decompõem adicionalmente os recursos Java em elementos de gabarito.
O pacote org.eclipse.jdt.core define as classes que modelam os elementos que compõem um programa Java. O JDT utiliza um gabarito de objeto em memória para representar a estrutura de um programa Java. Esse gabarito é hierárquico. Os elementos de um programa podem ser decompostos em elementos filhos.
Os elementos Java são muito parecidos com objetos de recurso. Ao trabalhar com um elemento Java, você está, na verdade, trabalhando com um identificador a algum objeto de gabarito subjacente. Você deve utilizar o protocolo exists() para determinar se o elemento está realmente presente na área de trabalho.
A tabela a seguir resume os diferentes tipos de elementos Java.
Elemento |
Descrição |
---|---|
Representa o elemento Java raiz, correspondente à área de trabalho. O pai de todos os projetos Java. |
|
Representa um projeto Java na área de trabalho. (Filho de IJavaModel) |
|
Representa um conjunto de fragmentos de pacote e mapeia os fragmentos para um recurso subjacente que é uma pasta, ou um arquivo JAR, ou um ZIP. (Filho de IJavaProject) |
|
Representa a parte da área de trabalho que corresponde a um pacote inteiro ou a uma parte do pacote. (Filho de IPackageFragmentRoot) |
|
Representa um arquivo de origem Java (.java). |
|
Representa uma declaração de pacote em uma unidade de compilação. (Filho de ICompilationUnit) |
|
Representa a coleção de declarações de importação de pacote em uma unidade de compilação. (Filho de ICompilationUnit) |
|
Representa uma única declaração de importação de pacote. (Filho de IImportContainer) |
|
Representa um tipo de origem dentro de uma unidade de compilação ou um tipo binário dentro de um arquivo de classe. |
|
Representa um campo dentro de um tipo. (Filho de IType) |
|
Representa um método ou construtor dentro de um tipo. (Filho de IType) |
|
Representa um inicializador estático ou de ocorrência dentro de um tipo. (Filho de IType) |
|
Representa um tipo compilado (binário). (Filho de IPackageFragment) |
Todos os elementos Java suportam a interface IJavaElement.
Alguns dos elementos são mostrados na exibição Pacotes. Esses elementos implementam a interface IOpenable, uma vez que eles devem ser abertos antes de serem navegados. A figura a seguir mostra como esses elementos são representados na exibição Pacotes.
Os elementos Java que implementam IOpenable são criados, na maioria das vezes, com as informações encontradas nos arquivos de recurso subjacentes. Os mesmos elementos são representados genericamente na exibição do navegador de recursos.
Outros elementos correspondem aos itens que constituem uma unidade de compilação Java (arquivo .java). A figura a seguir mostra uma unidade de compilação Java e um contornador de conteúdo que exibe os elementos de origem na unidade de compilação.
Esses elementos implementam a interface ISourceReference, uma vez que eles possuem códigos fonte correspondentes. (À medida que esses elementos são selecionados no contorno de conteúdo, seus códigos fonte correspondentes são mostrados no editor Java).
Muitos dos elementos Java correspondem a recursos genéricos na área de trabalho. A classe JavaCore é o local para iniciar quando você deseja criar elementos Java com um recurso genérico. O trecho de código a seguir mostra como obter elementos Java de seus recursos correspondentes.
private void createJavaElementsFrom(IProject myProject,
IFolder myFolder, IFile myFile) {
IJavaProject myJavaProject = JavaCore.create(myProject);
if (myJavaProject == null)
// o projeto não está configurado para
Java (não possui natureza Java)
return;
// obter um fragmento de pacote ou raiz de fragmento de pacote
IJavaElement myPackageFragment = JavaCore.create(myFolder);
// obter .java (unidade de compilação), .class (arquivo de classe) ou
// .jar (raiz de fragmento de pacote)
IJavaElement myJavaFile = JavaCore.create(myFile);
}
JavaCore também é utilizado para manter o caminho da classe Java, incluindo localizações para procurar código fonte e bibliotecas, e localizações para gerar arquivos (.class) binários de saída.
Quando você cria um projeto Java a partir de um projeto simples, o JavaCore verifica se o projeto está configurado com a natureza Java. O plug-in do JDT utiliza uma natureza de projeto para designar um projeto como tendo comportamento Java. Essa natureza (org.eclipse.jdt.core.javanature) é atribuída a um projeto quando o assistente "Novo Projeto Java" cria um projeto. Se a natureza Java não estiver configurada em um projeto, o JavaCore retornará nulo quando solicitado para criar o projeto.
O que é diferente em um projeto Java? Os projetos Java gravam seu classpath em um arquivo ".classpath" e incluem o construtor de projeto incremental Java na especificação de construção do projeto. Caso contrário, eles são apenas projetos regulares e podem ser configurados com outras naturezas (e outros construtores incrementais) pelos plug-ins. Os plug-ins que configuram projetos com o comportamento Java, além de seu próprio comportamento, utilizam geralmente a página do assistente "Novo Projeto Java" para atribuir a natureza Java ao projeto, além de suas próprias naturezas ou comportamentos personalizados.
O IJavaModel pode ser considerado o pai de todos os projetos na área de trabalho que possuem a natureza do projeto Java (e, portanto, podem ser tratados como um IJavaProject.)