Java'da jar ve savaş arasındaki fark


462

A .jarve bir .wardosya arasındaki fark nedir ?
Sadece dosya uzantısı mı yoksa daha fazlası var mı?

Yanıtlar:


388

Gönderen Java İpuçları: kulak kavanoz ve savaş dosyaları arasındaki fark :

Bu dosyalar, java jar aracı kullanılarak sıkıştırılmış dosyalardır. Bu dosyalar farklı amaçlar için oluşturulur. İşte bu dosyaların açıklaması:

  • .jar dosyaları: .jar dosyaları , özellik dosyaları gibi kitaplıklar, kaynaklar ve aksesuar dosyaları içerir.

  • .war dosyaları: Savaş dosyası , herhangi bir sunucu uygulaması / jsp kapsayıcısında dağıtılabilen web uygulamasını içerir . .War dosyası jsp, html, javascript ve web uygulamalarının geliştirilmesi için gerekli diğer dosyaları içerir.


Resmi Sun / Oracle açıklamaları:


Wikipedia makaleleri:


10
Jsp ve ek web uygulama dosyaları olarak neden jar dosyasında olamaz gibi bir şüphe yaşıyorum.
Emmanuel Angelo.R

@ EmmanuelAngelo.R Yapabilirler - bir jar dosyası sadece bir zip dosyasıdır. Yararlı bir şey yapacaksa, jar dosyasını kullanmak istediğiniz koda bağlı olan başka bir konudur. İlginç bir örnek olarak Jenkins Continuous Integration sunucusu, "java -jar" ile çalıştırılabilen bir WAR dosyası olarak dağıtılmaktadır. Ayrıntılar için wiki.jenkins-ci.org/display/JENKINS/… adresine bakın.
Thorbjørn Ravn Andersen


40

Bir J2EE uygulamasına, Java sınıfı kitaplıkları için kullanılan pakete benzer bir JAR olan web uygulaması arşivi (WAR) adı verilen bir pakette web bileşenleri eklersiniz. WAR genellikle web bileşenlerinin yanı sıra aşağıdakiler de dahil olmak üzere başka kaynaklar içerir:

  • Sunucu tarafı yardımcı sınıflar (veritabanı çekirdekleri, alışveriş sepetleri vb.).
  • Statik web kaynakları (HTML, resim ve ses dosyaları vb.)
  • İstemci tarafı sınıfları (küçük uygulamalar ve yardımcı program sınıfları)

Bir WAR belirli bir hiyerarşik dizin yapısına sahiptir. WAR dosyasının en üst düzey dizini, uygulamanın belge köküdür. Belge kökü, JSP sayfalarının, istemci tarafı sınıfların ve arşivlerin ve statik web kaynaklarının depolandığı yerdir.

( kaynak )

Yani .war bir .jar'dır, ancak web uygulama bileşenleri içerir ve belirli bir yapıya göre düzenlenir. Bir .war, Tomcat veya Jetty gibi bir web uygulama sunucusuna veya JBoss veya Glassfish gibi bir Java EE sunucusuna dağıtılacak şekilde tasarlanmıştır.


1
Bu, yalnızca yuva kullanan ve herhangi bir kullanıcı arayüzü olmayan bir sunucu uygulaması oluşturuyorsanız, bir savaş dosyası olarak paketlenmesine gerek olmadığı anlamına mı geliyor?
bot_bot

Aslında şimdi biraz daha okuyorum Tomcat'e ihtiyacım yok, sadece kavanozu sunucuya aktarabilir ve doğrudan oradan çalıştırabilirim.
bot_bot


15

Bir .wardosya bir süre bir uygulama sunucusu içinde çalışan bir Web Uygulama Arşiv .jarbir kullanıcının makinesinde bir masaüstü uygulaması çalışan Java Uygulaması Arşiv.


14
İkinci ifade mutlaka doğru değildir. Bir kavanoz, örneğin Spring Boot gibi katıştırılmış bir web sunucusunu da başlatabilir.
whirlwin

4
bu ifade bile tamamen doğru değildir. Bir kavanoz, diğer uygulamalar tarafından kullanılacak bir kod kütüphanesi de olabilir. Başka bir deyişle, çalıştırmak için bir ana sınıf bile içermeyebilir.
Kevin Welker

@ KevinWelker kabul etti. 2011'de bile (bu yazı yazıldığında) bir kavanoz hala bir kütüphaneyi temsil edebilir. Ancak, bahar çizme etrafında değildi bu yüzden kasırga gibi bir kavanoza bir web sunucusu gömmek gerçeğini bakan görebilirsiniz.
intrepistar_88

@ Kevin Welker, "tamamen değil" değil, whirlwin'in sadece bir istisnadan bahsettiği için "tüm gerçek değil" diyebilirim, değil mi?
Alexei Martianov

12

Savaş dosyası, bir web uygulamasını bir uygulama sunucusunda konuşlandırmayı kolaylaştırmak için paketlemek için kullanılan özel bir jar dosyasıdır. Savaş dosyasının içeriği tanımlanmış bir yapıya uymalıdır.


10

.jar ve .war dosyaları sıkıştırılmış arşivlenmiş dosyalardır. Her ikisi de, sürüm oluşturma gibi bilgilendirici bilgiler içeren isteğe bağlı META-INF / MANIFEST.MF bildirim dosyasına ve onu çalıştıracak JVM için sınıfyolu ve ana sınıf gibi eğitici özelliklere sahip olabilir.

.war dosyası - 'Servlet Kabı' içinde yürütülmesi amaçlanan Web Uygulaması Arşivi ve diğer jar dosyalarını (WEB-INF / lib dizininde) derlenmiş sınıfları (WEB-INF / sınıflarında (sunucu uygulaması da oraya gider) içerebilir) .jsp bağımsız bir modül oluşturmak için var olan tüm WAR içeriği.


5

Temel olarak her iki sıkıştırılmış arşiv. war, belirli bir dizin yapısına sahip web uygulaması için kullanılır.


4

savaş ve kavanoz java dosyaları için arşivler. savaş web arşivi ve web sunucusunda çalışıyorlar. kavanoz java arşividir.


1

Savaş -

Java tabanlı web uygulamalarını dağıtabilir. WAR, içinde paketlenmiş birden fazla dosya içeren tek bir sıkıştırılmış dosya olan JAR dosyasıyla aynı dosya yapısına sahiptir.

Kavanoz -

.Jar dosyaları kitaplıklar, kaynaklar ve özellik dosyaları gibi aksesuar dosyaları içerir.

WAR dosyaları JSP'leri, sunucu uygulamalarını, Java sınıfı dosyalarını, XML dosyalarını, javascript kitaplıklarını, JAR kitaplıklarını, statik web sayfalarını ve uygulamayı çalıştırmak için gereken diğer kaynakları birleştirmek için kullanılır.


0

Kavanoz : - kavanoz sadece .class savaşı içerir : - savaş html, js, css ve .class içerir jsp ve sunucu uygulamaları sayfaları


0

JAR dosyaları, bir kütüphane, eklenti veya herhangi bir uygulama olarak kullanmak için birden fazla dosyanın paketlenmesine izin verir. Öte yandan, WAR dosyaları yalnızca web uygulamaları için kullanılır.

JAR istenilen herhangi bir yapı ile oluşturulabilir. Bunun aksine, WAR WEB-INF ve META-INF dizinleriyle önceden tanımlanmış bir yapıya sahiptir.

JAR dosyası, Java Çalışma Zamanı Ortamı'nın (JRE) sınıflar ve ilişkili kaynaklar dahil olmak üzere tüm uygulamayı tek bir istekte dağıtmasına olanak tanır. Öte yandan, bir WAR dosyası bir web uygulamasının kolayca test edilmesine ve dağıtılmasına izin verir.


0

Bir JAR dosya uzantısı .jar'dir ve komut isteminden jar komutu ile oluşturulur (örn. Javac komutu yürütülür). Genellikle, JAR dosyası kütüphaneler, sınıflar vb. Gibi Java ile ilgili kaynakları içerir. Jar dosyası platformdan bağımsız olması dışında winzip dosyası gibidir.

WAR dosyası yalnızca bir JAR dosyasıdır, ancak yalnızca Servlets, JSP, HTML gibi Web ile ilgili Java dosyalarını içerir.

WAR dosyasını yürütmek için, bir Web sunucusu veya Web kapsayıcısı gerekir; örneğin, Tomcat veya Weblogic veya Websphere. Bir JAR dosyasını çalıştırmak için basit JDK yeterlidir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.