Arquivos JAR são bibliotecas de aplicativos. Você pode compará-los com DLLs. No entanto, uma DLL é sempre apenas uma biblioteca de código que um executável usaria. Um JAR pode conter apenas o código da biblioteca, mas também pode conter o próprio aplicativo. Outra diferença é que o Windows pode centralizar / registrar as DLLs para que elas possam ser descobertas. Nenhum conceito desse tipo existe para os JARs. Eles são realmente apenas artefatos que pertencem a um aplicativo Java específico. Eles podem ser compartilhados em tempo de execução, mas é raro de se ver. Um aplicativo Java normalmente fornecerá com ele todos os JARs necessários para executá-lo e nunca dependerá de nenhum JAR já existente no sistema de destino (exceto aqueles que fazem parte do próprio Java). As pessoas de Java tendem a não se importar com essa duplicação entre os aplicativos porque os JARs são geralmente de tamanho pequeno.
Um JAR é realmente apenas um arquivo ZIP de .class
arquivos que o Java Virtual Machine usa. Dentro do ZIP há sempre um chamado arquivo MANIFEST e isso é apenas a única coisa que o torna diferente de um ZIP tradicional. (quando é realmente apenas um ZIP porque diabos você não pode navegar pelo Windows? Você precisa perguntar à Microsoft sobre isso. Use uma ferramenta adequada para lidar com arquivos compactados, eu recomendo 7Zip, ao invés de confiar em ferramentas do próprio Windows)
Para que qualquer aplicativo Java seja iniciado, ele precisa saber onde encontrar esses arquivos .class
. Esses arquivos podem existir individualmente no disco ou podem ser empacotados em um arquivo JAR. O resultado é o mesmo. Não faz sentido extrair os arquivos .class
do JAR.
Um aplicativo Java normalmente vem com um script de inicialização para que o 'cliente' não tenha que escrever seu próprio arquivo .BAT
(ou qualquer outro) apenas para iniciar o aplicativo. No caso de não existir tal script, você terá que fazê-lo por conta própria.