O que é um arquivo JAR?
Um arquivo com extensão .jar é um arquivo Java Archive que contém muitos arquivos diferentes relacionados a aplicativos como um único arquivo. Este formato de arquivo foi criado para reduzir a velocidade de carregamento de um Java Applet baixado no navegador via transação HTTP, evitando a criação de múltiplas conexões HTTP. Um único arquivo JAR pode conter arquivos de classe Java (.class), images e sounds. Itens individuais dentro de um arquivo JAR podem ser assinados digitalmente pelo desenvolvedor do aplicativo para autenticar sua origem. Os arquivos JAR são usados regularmente para criar APIs funcionais que contêm funcionalidades específicas relacionadas a essa API.
Formato de arquivo JAR
Os arquivos JAR são baseados no popular formato de arquivo ZIP que arquiva seus arquivos de conteúdo individuais em um único arquivo. O formato de arquivo JAR suporta compactações, resultando em um tamanho de arquivo menor para download e, portanto, melhora ainda mais o tempo de download. O artigo especificações do arquivo JAR da Oracle fornece detalhes completos sobre as especificações internas dos arquivos JAR.
O arquivo de manifesto
Quando um arquivo JAR é criado, um arquivo de manifesto é criado automaticamente dentro dele que contém as informações de metadados sobre o conteúdo do arquivo JAR. Este arquivo mostra o conteúdo que está empacotado dentro do arquivo JAR. Um arquivo de manifesto típico tem a seguinte aparência, que mostra as pastas e classes incluídas no arquivo JAR.
META-INF/
META-INF/MANIFEST.MF
pack/
pack/class1.class
pack/class2.class
..
..
Especificações do manifesto
As especificações do manifesto são definidas pela Oracle da seguinte forma.
manifest-file
: nova linha da seção principal *seção individual
main-section
: nova linha de informação da versão *main-attribute
version-info
: Manifest-Version : version-number
version-number
: digit+{.digit+}*
main-attribute
: (qualquer atributo principal legítimo) nova linha
individual-section
: Nome: valor nova linha *perentry-attribute
perentry-attribute
: (qualquer atributo de perentry legítimo) nova linha
nova linha
: CR LF | LF | CR (não seguido por LF)
digit
: {0-9}
JAR executável
Os arquivos JAR também podem incluir um aplicativo que pode ser executado pela Java Virtual Machine (JVM) semelhante a qualquer outro aplicativo no sistema operacional Microsoft Windows. Nesse caso, a JVM precisa saber sobre o ponto de entrada do aplicativo que é qualquer classe com um método main public static void. O arquivo de manifesto identifica tal classe com o cabeçalho Main-Class
no seguinte formato:
Main-Class: com.example.MyClassName