Para entender mais sobre .JAR, .WAR and .EARVocê também pode ver um vídeo tutorial. É muito simples ou mais compreensível. Ele irá explicar qual é a diferença entre .JAR, .WAR e .EAR Video Tutorial : Diferença entre .JAR, .WAR e .EAR
Bharti Rawat
2
Bem-vindo ao mundo Java, onde alguém pensou que deixar um arquivo zip com a extensão .zip não é suficiente para a empresa e, portanto, deve ser renomeado para .jar / .ear ou .war com base no local em que você o está movendo.
No aplicativo J2EE, os módulos são empacotados como EAR, JAR e WAR com base em sua funcionalidade
JAR: Os módulos EJB que contêm java beans corporativos (arquivos de classe) e o descritor de implementação EJB são compactados como arquivos JAR com extensão .jar
WAR: Módulos da Web que contêm arquivos de classe Servlet, arquivos JSP, arquivos de suporte, arquivos GIF e HTML são empacotados como um arquivo JAR com extensão .war (arquivo da web)
EAR: Todos os arquivos acima (.jar e .war) são compactados como um arquivo JAR com extensão .ear (arquivo corporativo) e implementados no Application Server.
Um WAR (Web Archive) é um módulo que é carregado em um contêiner da Web de um Java Application Server . Um Java Application Server possui dois contêineres (ambientes de tempo de execução) - um é um contêiner da Web e o outro é um contêiner EJB.
O contêiner da Web hospeda aplicativos da Web com base no JSP ou na API Servlets - projetada especificamente para o processamento de solicitações da Web - para um estilo de solicitação / resposta da computação distribuída . Um contêiner da Web requer que o módulo da Web seja empacotado como um arquivo WAR - que é um arquivo JAR especial com um web.xmlarquivo na WEB-INFpasta
Um contêiner EJB hospeda java beans corporativos com base na API EJB projetada para fornecer funcionalidade comercial estendida, como transações declarativas, segurança no nível do método declarativo e suporte a multiprotocolo - para um estilo RPC de computação distribuída . Os contêineres EJB exigem que os módulos EJB sejam compactados como arquivos JAR - eles têm um ejb-jar.xmlarquivo na META-INFpasta
Os aplicativos corporativos podem consistir em um ou mais módulos que podem ser módulos da Web (compactados como um arquivo WAR), módulos EJB (compactados como um arquivo JAR) ou ambos. Os aplicativos corporativos são compactados como arquivos EAR - esses são arquivos JAR especiais que contêm um application.xmlarquivo na META-INFpasta.
Basicamente, os arquivos EAR são um superconjunto que contém arquivos WAR e arquivos JAR . Os Java Application Servers permitem a implementação de módulos da web independentes em um arquivo WAR, embora internamente eles criem arquivos EAR como um wrapper em torno dos arquivos WAR. Contêineres da web independentes, como Tomcat e Jetty , não suportam arquivos EAR - esses não são servidores de aplicativos completos. Os aplicativos da Web nesses contêineres devem ser implementados apenas como arquivos WAR.
Nos servidores de aplicativos, os arquivos EAR contêm configurações como mapeamento de função de segurança do aplicativo, mapeamento de referência EJB e mapeamento de URL da raiz de contexto dos módulos da web.
Além dos módulos da Web e EJB, os arquivos EAR também podem conter módulos conectores empacotados como arquivos RAR e módulos clientes empacotados como arquivos JAR.
+1 porque esta resposta descreve por que você pode querer usar uma ou outra.
Jason Wheeler
7
@KNU sim, .jar, .ware .eararquivos são arquivos zip simples, portanto, capaz de ser aberto por qualquer programa que pode lidar com arquivos .zip comuns.
acdcjunior
41
guerra - arquivo da web. É usado para implantar aplicativos da web de acordo com o padrão de servlet. É um arquivo jar que contém um diretório especial chamado WEB-INF e vários arquivos e diretórios dentro dele (web.xml, lib, classes), além de todo o HTML, JSP, imagens, CSS, JavaScript e outros recursos do aplicativo Web.
arquivo corporativo auricular. É usado para implantar aplicativos corporativos contendo EJBs, aplicativos da web e bibliotecas de terceiros. Também é um arquivo jar, possui um diretório especial chamado APP-INF que contém o arquivo application.xml e contém arquivos jar e war.
você quis dizer META-INF em vez do diretório APP-INF?
Zavael
26
Os arquivos WAR (archive da web) contêm arquivos de classe de servlet, JSPs (páginas de servlet Java), arquivos gráficos e HTML e outros arquivos de suporte.
Os arquivos EAR (archive corporativo) contêm os arquivos WAR junto com os arquivos JAR que contêm o código.
Pode haver outras coisas nesses arquivos, mas elas basicamente se destinam ao que elas significam: WAR para coisas do tipo Web, EAR para coisas do tipo Enterprise (WARs, código, conectores etc.).
No meu caso, eu sempre implanto o WAR com jars na pasta WEB-INF / lib e isso funciona. Então, por que devo usar o arquivo EAR?
swapyonubuntu
2
@swapyonubuntu, se você está apenas implantando um único aplicativo Web (mais especificamente, um único contexto de servlet), não há nada de errado em apenas fazer arquivos WAR. Os arquivos EAR são muito melhores para aplicativos empresariais completos, incluindo aqueles com muitos aplicativos da web.
21415
1
Nesta era de microsserviços, não faria mais sentido manter cada WAR completamente separado e implantar separadamente em vez de agrupá-los em um EAR monolítico?
Sayo Oladeji
18
Arquivos JAR
Um arquivo JAR (abreviação de Java Archive) permite a combinação de vários arquivos em um único. Arquivos com o '.jar'; A extensão é utilizada pelos desenvolvedores de software para distribuir classes Java e vários metadados. Eles também contêm bibliotecas e arquivos de recursos, bem como arquivos de acessórios (como arquivos de propriedades).
Os usuários podem extrair e criar arquivos JAR com o comando '.jar' do Java Development Kit (JDK). Ferramentas ZIP também podem ser usadas.
Os arquivos JAR possuem arquivos de manifesto opcionais. As entradas no arquivo de manifesto prescrevem o uso do arquivo JAR. Uma especificação de classe 'principal' para uma classe de arquivo indica o arquivo como um programa desanexado ou 'independente'.
Arquivos WAR
Os arquivos WAR (ou archive de aplicativos da Web) podem incluir arquivos XML (linguagem de marcação extensível), classes Java e páginas do servidor Java para fins de aplicativos da Internet. Também é empregado para marcar bibliotecas e páginas da Web que compõem um aplicativo da Web. Os arquivos com a extensão '.war' contêm o aplicativo Web para uso com contêineres de servidor ou JSP (Java Server Page). Possui JSP, HTML (Hypertext Markup Language), JavaScript e vários arquivos para criar os aplicativos da Web mencionados acima.
Um arquivo WAR é estruturado como tal para permitir diretórios e arquivos especiais. Também pode ter uma assinatura digital (semelhante à de um arquivo JAR) para mostrar a veracidade do código.
Arquivos EAR
Um arquivo EAR (Enterprise Archive) mescla arquivos JAR e WAR em um único archive. Esses arquivos com a extensão '.ear' têm um diretório para metadados. Os módulos são empacotados no arquivo morto para operação suave e simultânea dos diferentes módulos em um servidor de aplicativos.
O arquivo EAR também possui descritores de implementação (que são arquivos XML) que ditam efetivamente a implementação dos diferentes módulos.
tar (arquivos de fita) - O formato usado é o arquivo gravado em unidades seriais de fileName, fileSize, fileData - sem compactação. pode ser enorme
Jar (arquivo java) - técnicas de compactação usadas - geralmente contém informações sobre java, como arquivos de classe / java. Mas pode conter qualquer arquivo e estrutura de diretórios
war (arquivos de aplicativos da web) - semelhantes aos arquivos jar, possuem apenas uma estrutura de diretórios específica, conforme a especificação JSP / Servlet para fins de implementação
ear (arquivos corporativos) - semelhante aos arquivos jar. possui uma estrutura de diretórios que segue os requisitos do J2EE para que possa ser implementada nos servidores de aplicativos J2EE. - pode conter vários arquivos JAR e WAR
Os arquivos Ear fornecem mais opções para configurar a interação com o servidor de aplicativos.
Por exemplo: se a versão de hibernação do servidor de aplicativos for mais antiga que a fornecida por suas dependências, você poderá adicionar o seguinte ao ear-deployer-jboss-beans.xml para que o JBOSS isole os carregadores de classes e evite conflitos:
Isso garantirá que não haja conflito do carregador de classes entre seu aplicativo e o servidor de aplicativos.
Normalmente, o mecanismo do carregador de classes funciona assim:
Quando uma solicitação de carregamento de classe é apresentada a um carregador de classes, ele primeiro pede ao carregador de classes pai que atenda à solicitação. O pai, por sua vez, pede a classe pai até que a solicitação chegue ao topo da hierarquia. Se o carregador de classes na parte superior da hierarquia não puder atender à solicitação, o carregador de classes filho que o chamou será responsável por carregar a classe.
Ao isolar os carregadores de classes, o seu auricular não procurará no pai (= JBoss / outro AS classloader). Até onde eu sei, isso não é possível com arquivos de guerra.
KNU: Esse uso de um arquivo ear é mais válido do que apenas usá-lo porque "ele contém arquivos de classe Servlet, arquivos JSP, arquivos de suporte, arquivos GIF e HTML", conforme indicado na resposta aceita. Como os arquivos de guerra também podem conter gif, html, jsp, servlets, ... Se todos "responderem de acordo com sua força", talvez todos possamos nos tornar mais sábios sobre o assunto em questão.
Mark
Maven faz isso por você, não? Você pode especificar dependências por versão e elas serão incluídas na pasta / lib. (em um arquivo de guerra)
Sebas
Sim, mas o contêiner do servidor de aplicativos / servlet pode optar por substituí-los na pasta lib pelas libs que ele fornece em sua própria pasta lib. Isso pode impedir isso. Tudo depende do mecanismo de carregamento de classe usado.
Mark
6
O J2EE define três tipos de arquivos:
Java Archives (JAR) Um arquivo JAR encapsula uma ou mais classes Java, um manifesto e um descritor. Os arquivos JAR são o nível mais baixo de arquivamento. Os arquivos JAR são usados no J2EE para empacotar EJBs e aplicativos Java do lado do cliente.
Os arquivos WAR dos Arquivos da Web (WAR) são semelhantes aos arquivos JAR, exceto que são especificamente para aplicativos da Web criados a partir de Servlets, JSPs e classes de suporte.
Enterprise Archives (EAR) ”Um arquivo EAR contém todos os componentes que compõem um aplicativo J2EE específico.
Para facilitar o transporte do projeto, a implantação ficou fácil. precisa compactado em um arquivo. Grupo JAR (arquivo java) de arquivos .class
WAR (arquivo da web) - cada guerra representa um aplicativo da web - use apenas tecnologias relacionadas à web, como servlet, jsps podem ser usados. - pode ser executado no servidor Tomcat - aplicativo da web desenvolvido apenas por tecnologias relacionadas à web jsp servlet html js - representação de informações apenas sem transações.
EAR (arquivo corporativo) - cada orelha representa um aplicativo corporativo - podemos usar qualquer coisa do j2ee como o ejb, o jms pode ser usado com alegria. - pode ser executado no Glassfish como um servidor e não no servidor Tomcat. - aplicativo corporativo desenvolvido por qualquer tecnologia, como j2ee, como todos os aplicativos da web mais ejbs jms etc. - faz transações com representação de informações. por exemplo. Aplicativo do banco, aplicativo de telecomunicações
.JAR, .WAR and .EAR
Você também pode ver um vídeo tutorial. É muito simples ou mais compreensível. Ele irá explicar qual é a diferença entre .JAR, .WAR e .EAR Video Tutorial : Diferença entre .JAR, .WAR e .EARRespostas:
Do GeekInterview :
fonte
Um WAR (Web Archive) é um módulo que é carregado em um contêiner da Web de um Java Application Server . Um Java Application Server possui dois contêineres (ambientes de tempo de execução) - um é um contêiner da Web e o outro é um contêiner EJB.
O contêiner da Web hospeda aplicativos da Web com base no JSP ou na API Servlets - projetada especificamente para o processamento de solicitações da Web - para um estilo de solicitação / resposta da computação distribuída . Um contêiner da Web requer que o módulo da Web seja empacotado como um arquivo WAR - que é um arquivo JAR especial com um
web.xml
arquivo naWEB-INF
pastaUm contêiner EJB hospeda java beans corporativos com base na API EJB projetada para fornecer funcionalidade comercial estendida, como transações declarativas, segurança no nível do método declarativo e suporte a multiprotocolo - para um estilo RPC de computação distribuída . Os contêineres EJB exigem que os módulos EJB sejam compactados como arquivos JAR - eles têm um
ejb-jar.xml
arquivo naMETA-INF
pastaOs aplicativos corporativos podem consistir em um ou mais módulos que podem ser módulos da Web (compactados como um arquivo WAR), módulos EJB (compactados como um arquivo JAR) ou ambos. Os aplicativos corporativos são compactados como arquivos EAR - esses são arquivos JAR especiais que contêm um
application.xml
arquivo naMETA-INF
pasta.Basicamente, os arquivos EAR são um superconjunto que contém arquivos WAR e arquivos JAR . Os Java Application Servers permitem a implementação de módulos da web independentes em um arquivo WAR, embora internamente eles criem arquivos EAR como um wrapper em torno dos arquivos WAR. Contêineres da web independentes, como Tomcat e Jetty , não suportam arquivos EAR - esses não são servidores de aplicativos completos. Os aplicativos da Web nesses contêineres devem ser implementados apenas como arquivos WAR.
Nos servidores de aplicativos, os arquivos EAR contêm configurações como mapeamento de função de segurança do aplicativo, mapeamento de referência EJB e mapeamento de URL da raiz de contexto dos módulos da web.
Além dos módulos da Web e EJB, os arquivos EAR também podem conter módulos conectores empacotados como arquivos RAR e módulos clientes empacotados como arquivos JAR.
fonte
.jar
,.war
e.ear
arquivos são arquivos zip simples, portanto, capaz de ser aberto por qualquer programa que pode lidar com arquivos .zip comuns.guerra - arquivo da web. É usado para implantar aplicativos da web de acordo com o padrão de servlet. É um arquivo jar que contém um diretório especial chamado WEB-INF e vários arquivos e diretórios dentro dele (web.xml, lib, classes), além de todo o HTML, JSP, imagens, CSS, JavaScript e outros recursos do aplicativo Web.
arquivo corporativo auricular. É usado para implantar aplicativos corporativos contendo EJBs, aplicativos da web e bibliotecas de terceiros. Também é um arquivo jar, possui um diretório especial chamado APP-INF que contém o arquivo application.xml e contém arquivos jar e war.
fonte
Os arquivos WAR (archive da web) contêm arquivos de classe de servlet, JSPs (páginas de servlet Java), arquivos gráficos e HTML e outros arquivos de suporte.
Os arquivos EAR (archive corporativo) contêm os arquivos WAR junto com os arquivos JAR que contêm o código.
Pode haver outras coisas nesses arquivos, mas elas basicamente se destinam ao que elas significam: WAR para coisas do tipo Web, EAR para coisas do tipo Enterprise (WARs, código, conectores etc.).
fonte
Arquivos JAR
Um arquivo JAR (abreviação de Java Archive) permite a combinação de vários arquivos em um único. Arquivos com o '.jar'; A extensão é utilizada pelos desenvolvedores de software para distribuir classes Java e vários metadados. Eles também contêm bibliotecas e arquivos de recursos, bem como arquivos de acessórios (como arquivos de propriedades).
Os usuários podem extrair e criar arquivos JAR com o comando '.jar' do Java Development Kit (JDK). Ferramentas ZIP também podem ser usadas.
Os arquivos JAR possuem arquivos de manifesto opcionais. As entradas no arquivo de manifesto prescrevem o uso do arquivo JAR. Uma especificação de classe 'principal' para uma classe de arquivo indica o arquivo como um programa desanexado ou 'independente'.
Arquivos WAR
Os arquivos WAR (ou archive de aplicativos da Web) podem incluir arquivos XML (linguagem de marcação extensível), classes Java e páginas do servidor Java para fins de aplicativos da Internet. Também é empregado para marcar bibliotecas e páginas da Web que compõem um aplicativo da Web. Os arquivos com a extensão '.war' contêm o aplicativo Web para uso com contêineres de servidor ou JSP (Java Server Page). Possui JSP, HTML (Hypertext Markup Language), JavaScript e vários arquivos para criar os aplicativos da Web mencionados acima.
Um arquivo WAR é estruturado como tal para permitir diretórios e arquivos especiais. Também pode ter uma assinatura digital (semelhante à de um arquivo JAR) para mostrar a veracidade do código.
Arquivos EAR
Um arquivo EAR (Enterprise Archive) mescla arquivos JAR e WAR em um único archive. Esses arquivos com a extensão '.ear' têm um diretório para metadados. Os módulos são empacotados no arquivo morto para operação suave e simultânea dos diferentes módulos em um servidor de aplicativos.
O arquivo EAR também possui descritores de implementação (que são arquivos XML) que ditam efetivamente a implementação dos diferentes módulos.
fonte
Consulte: http://www.wellho.net/mouth/754_tar-jar-war-ear-sar-files.html
tar (arquivos de fita) - O formato usado é o arquivo gravado em unidades seriais de fileName, fileSize, fileData - sem compactação. pode ser enorme
Jar (arquivo java) - técnicas de compactação usadas - geralmente contém informações sobre java, como arquivos de classe / java. Mas pode conter qualquer arquivo e estrutura de diretórios
war (arquivos de aplicativos da web) - semelhantes aos arquivos jar, possuem apenas uma estrutura de diretórios específica, conforme a especificação JSP / Servlet para fins de implementação
ear (arquivos corporativos) - semelhante aos arquivos jar. possui uma estrutura de diretórios que segue os requisitos do J2EE para que possa ser implementada nos servidores de aplicativos J2EE. - pode conter vários arquivos JAR e WAR
fonte
Os arquivos Ear fornecem mais opções para configurar a interação com o servidor de aplicativos.
Por exemplo: se a versão de hibernação do servidor de aplicativos for mais antiga que a fornecida por suas dependências, você poderá adicionar o seguinte ao ear-deployer-jboss-beans.xml para que o JBOSS isole os carregadores de classes e evite conflitos:
ou para src / main / application / META-INF / jboss-app.xml:
Isso garantirá que não haja conflito do carregador de classes entre seu aplicativo e o servidor de aplicativos.
Normalmente, o mecanismo do carregador de classes funciona assim:
Ao isolar os carregadores de classes, o seu auricular não procurará no pai (= JBoss / outro AS classloader). Até onde eu sei, isso não é possível com arquivos de guerra.
fonte
O J2EE define três tipos de arquivos:
Java Archives (JAR) Um arquivo JAR encapsula uma ou mais classes Java, um manifesto e um descritor. Os arquivos JAR são o nível mais baixo de arquivamento. Os arquivos JAR são usados no J2EE para empacotar EJBs e aplicativos Java do lado do cliente.
Os arquivos WAR dos Arquivos da Web (WAR) são semelhantes aos arquivos JAR, exceto que são especificamente para aplicativos da Web criados a partir de Servlets, JSPs e classes de suporte.
Enterprise Archives (EAR) ”Um arquivo EAR contém todos os componentes que compõem um aplicativo J2EE específico.
fonte
Para facilitar o transporte do projeto, a implantação ficou fácil. precisa compactado em um arquivo. Grupo JAR (arquivo java) de arquivos .class
WAR (arquivo da web) - cada guerra representa um aplicativo da web - use apenas tecnologias relacionadas à web, como servlet, jsps podem ser usados. - pode ser executado no servidor Tomcat - aplicativo da web desenvolvido apenas por tecnologias relacionadas à web jsp servlet html js - representação de informações apenas sem transações.
EAR (arquivo corporativo) - cada orelha representa um aplicativo corporativo - podemos usar qualquer coisa do j2ee como o ejb, o jms pode ser usado com alegria. - pode ser executado no Glassfish como um servidor e não no servidor Tomcat. - aplicativo corporativo desenvolvido por qualquer tecnologia, como j2ee, como todos os aplicativos da web mais ejbs jms etc. - faz transações com representação de informações. por exemplo. Aplicativo do banco, aplicativo de telecomunicações
fonte