Sự khác biệt giữa jar và chiến tranh trong Java


462

Sự khác biệt giữa a .jarvà một .wartập tin là gì?
Có phải chỉ là phần mở rộng tập tin hoặc có một cái gì đó nhiều hơn?

Câu trả lời:


387

Từ Mẹo Java: Sự khác biệt giữa tệp tai và tệp chiến tranh :

Các tệp này chỉ đơn giản là các tệp được nén bằng công cụ java jar. Những tập tin này được tạo ra cho các mục đích khác nhau. Dưới đây là mô tả của các tệp này:

  • Tệp .jar: Tệp .jar chứa các tệp thư viện, tài nguyên và phụ kiện như tệp thuộc tính.

  • Tệp .war: Tệp chiến tranh chứa ứng dụng web có thể được triển khai trên bất kỳ vùng chứa servlet / jsp nào. Tệp .war chứa jsp, html, javascript và các tệp khác cần thiết cho việc phát triển các ứng dụng web.


Mô tả chính thức của Sun / Oracle:


Bài viết trên Wikipedia:


10
Đang có một nghi ngờ là jsp và các tệp ứng dụng web bổ sung tại sao không thể ở trong tệp jar.
Emmanuel Angelo.R 10/12/13

@ EmmanuelAngelo.R Họ có thể - một tệp jar chỉ là một tệp zip. Nếu nó sẽ làm bất cứ điều gì hữu ích là một vấn đề khác, điều này phụ thuộc vào mã bạn muốn sử dụng tệp jar. Như một ví dụ thú vị, máy chủ Tích hợp liên tục Jenkins được phân phối dưới dạng tệp WAR, có thể chạy với "java -jar". Xem wiki.jenkins-ci.org/display/JENKINS/ Khăn để biết chi tiết.
Thorbjørn Ravn Andersen

77

Một .wartệp có cấu trúc cụ thể về vị trí của các tệp nhất định. Ngoài ra, có, nó chỉ là một .jar.


40

Bạn thêm các thành phần web vào một ứng dụng J2EE trong một gói được gọi là kho lưu trữ ứng dụng web (WAR), là một JAR tương tự như gói được sử dụng cho các thư viện lớp Java. Một WAR thường chứa các tài nguyên khác bên cạnh các thành phần web, bao gồm:

  • Các lớp tiện ích phía máy chủ (đậu cơ sở dữ liệu, giỏ mua hàng, v.v.).
  • Tài nguyên web tĩnh (tệp HTML, hình ảnh và âm thanh, v.v.)
  • Các lớp phía máy khách (applet và các lớp tiện ích)

Một WAR có cấu trúc thư mục phân cấp cụ thể. Thư mục cấp cao nhất của WAR là thư mục gốc của ứng dụng. Tài liệu gốc là nơi lưu trữ các trang JSP, các lớp và lưu trữ phía máy khách và các tài nguyên web tĩnh.

( nguồn )

Vì vậy, một .war là một .jar, nhưng nó chứa các thành phần ứng dụng web và được trình bày theo một cấu trúc cụ thể. Một .war được thiết kế để được triển khai đến một máy chủ ứng dụng web như Tomcat hoặc Jetty hoặc máy chủ Java EE như JBoss hoặc Glassfish.


1
Vậy điều này có nghĩa là nếu bạn đang xây dựng một ứng dụng máy chủ chỉ sử dụng các socket và không có bất kỳ UI nào thì không cần phải đóng gói nó như một tệp tin chiến tranh?
bot_bot

Thực tế bây giờ tôi đang đọc thêm một chút Tôi không cần Tomcat, tôi chỉ có thể xuất jar sang máy chủ và chạy trực tiếp từ đó.
bot_bot


15

Một .wartập tin là một ứng dụng Web Archive chạy bên trong một máy chủ ứng dụng trong khi .jarlà ứng dụng Java Archive chạy một ứng dụng desktop trên máy tính của người dùng.


14
Tuyên bố thứ hai không nhất thiết là đúng. Một jar cũng có thể bắt đầu một máy chủ web nhúng, ví dụ như với Spring Boot.
lốc xoáy

4
thậm chí câu nói đó không hoàn toàn đúng. Một jar cũng có thể chỉ là một thư viện mã được sử dụng bởi các ứng dụng khác. Nói cách khác, nó thậm chí có thể không chứa một lớp chính để chạy.
Kevin Welker

@KevinWelker đồng ý. Ngay cả trong năm 2011 (khi bài viết này được viết), một cái bình vẫn có thể đại diện cho một thư viện. Tuy nhiên, spring boot không xuất hiện để tôi có thể nhìn thấy thực tế là bạn có thể nhúng máy chủ web vào một cái bình như cơn lốc được đề cập.
intrepistar_88

@Kevin Welker, không phải "không hoàn toàn", tôi sẽ nói "không phải tất cả sự thật" vì whirlwin vừa đề cập đến một ngoại lệ, điều đó hoàn toàn đúng, phải không?
Alexei Martianov

12

Tệp chiến tranh là một tệp jar đặc biệt được sử dụng để đóng gói một ứng dụng web để giúp dễ dàng triển khai nó trên máy chủ ứng dụng. Nội dung của tệp tin chiến tranh phải tuân theo một cấu trúc xác định.


10

.jar và .war đều là các tệp lưu trữ được nén. Cả hai đều có thể có tệp kê khai META-INF / MANIFEST.MF tùy chọn chứa thông tin thông tin như phiên bản và các thuộc tính hướng dẫn như classpath và main-class cho JVM sẽ thực thi nó.

Tệp .war - Lưu trữ ứng dụng web dự định được thực thi bên trong 'Bộ chứa Servlet' và có thể bao gồm các tệp jar khác (tại thư mục WEB-INF / lib) các lớp đã biên dịch (tại WEB-INF / lớp (cũng có dịch vụ này)) .jsp tập tin hình ảnh, tập tin, vv Tất cả nội dung WAR có để tạo ra một mô-đun độc lập.


5

Về cơ bản cả tài liệu lưu trữ nén. chiến tranh được sử dụng cho ứng dụng web với cấu trúc thư mục cụ thể.


4

chiến tranh và jar là tài liệu lưu trữ cho các tập tin java. chiến tranh là lưu trữ web và họ đang chạy trên máy chủ web. jar là java lưu trữ.


1

Chiến tranh -

phân phối các ứng dụng web dựa trên Java. Một WAR có cấu trúc tệp giống như tệp JAR, là một tệp nén duy nhất chứa nhiều tệp được gói bên trong nó.

Bình -

Các tệp .jar chứa các thư viện, tài nguyên và tệp phụ kiện như tệp thuộc tính.

Các tệp WAR được sử dụng để kết hợp các tệp JSP, servlets, tệp lớp Java, tệp XML, thư viện javascript, thư viện JAR, trang web tĩnh và bất kỳ tài nguyên nào khác cần thiết để chạy ứng dụng.


0

Jar : - jar chỉ chứa. Class war : - war chứa html, js, css và. Class cũng có các trang jsp và servlets


0

Các tệp JAR cho phép đóng gói nhiều tệp để sử dụng nó làm thư viện, plugin hoặc bất kỳ loại ứng dụng nào. Mặt khác, các tệp WAR chỉ được sử dụng cho các ứng dụng web.

JAR có thể được tạo ra với bất kỳ cấu trúc mong muốn. Ngược lại, WAR có cấu trúc được xác định trước với các thư mục WEB-INF và META-INF.

Tệp JAR cho phép Môi trường chạy thi hành Java (JRE) triển khai toàn bộ ứng dụng bao gồm các lớp và các tài nguyên liên quan trong một yêu cầu. Mặt khác, tệp WAR cho phép kiểm tra và triển khai một ứng dụng web một cách dễ dàng.


0

Một phần mở rộng tệp JAR là .jar và được tạo bằng lệnh jar từ dấu nhắc lệnh (giống như lệnh javac được thực thi). Nói chung, tệp JAR chứa các tài nguyên liên quan đến Java như thư viện, lớp, v.v. Tệp JAR giống như tệp winzip ngoại trừ các tệp Jar độc lập với nền tảng.

Tệp WAR chỉ đơn giản là tệp JAR nhưng chỉ chứa các tệp Java liên quan đến Web như Servlets, JSP, HTML.

Để thực thi tệp WAR, cần có máy chủ Web hoặc bộ chứa Web, ví dụ: Tomcat hoặc Weblogic hoặc Websphere. Để thực thi một tệp JAR, JDK đơn giản là đủ.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.