2013-05-14 26 views
9

Là người mới làm quen với thế giới lập trình Java, câu hỏi này luôn boggled tâm trí của tôi. Lần đầu tiên tôi tin rằng tất cả các tệp Java được nén thành applets và sau đó chạy, nhưng tôi sớm nhận ra rằng điều này không phải luôn luôn như vậy. Ai đó có thể giải thích cho tôi cách chúng ta thực sự đan xen các ứng dụng Java của chúng ta vào một sản phẩm thực sự của cuộc sống hàng ngày?Các ứng dụng Java được triển khai như thế nào trong "thế giới thực"?

TL; DR: Làm cách nào để chúng tôi triển khai mã của chúng tôi để sử dụng thực tế?

+6

Trong 14 năm qua, tôi chỉ triển khai Server Side Java (không sử dụng applet) Hôm nay, tôi nghi ngờ applet là một tỷ lệ phần trăm nhỏ của tất cả các chương trình Java. –

+0

Xem http://docs.oracle.com/javase/tutorial/deployment/, http://docs.oracle.com/javaee/6/tutorial/doc/bnaby.html –

Trả lời

19

Tùy thuộc vào ứng dụng. Có nhiều tùy chọn tùy thuộc vào cách bạn muốn người dùng sử dụng ứng dụng của mình. Thông thường nó được đóng gói như một cái lọ hoặc một lọ chuyên dụng (chiến tranh, tai).

Về lý thuyết, bạn có thể nén cấu trúc thư mục thô bằng các tệp .class trong đó và cung cấp tập lệnh/hướng dẫn shell chạy lệnh java cho người dùng. Tôi không khuyên bạn nên điều này bởi vì nó là loại không chuyên nghiệp và yêu cầu bạn phải duy trì một kịch bản shell cho mỗi hệ điều hành bạn muốn để có thể chạy chương trình trên.

Jar files được sử dụng để đóng gói thư viện nhưng bạn cũng có thể có tệp kê khai trong đó có nội dung "Khi ai đó nhấp đúp/thực hiện việc này, hãy chạy lớp này". Lớp đó có thể khởi động GUI hoặc là nhiệm vụ không đầu đáp ứng các tham số, v.v.

Bạn có thể có applets, như bạn đã nói. Các chương trình này được chạy trong trình duyệt của người dùng.

Bạn có thể có một war file, là cách để đóng gói ứng dụng web. Bạn đưa nó cho một máy chủ web và nó biết cách triển khai nó để bạn có thể truy cập các trang web. Máy chủ web/vùng chứa mẫu là tomcat hoặc jetty.

Bạn có thể có ear file có thể chứa các tệp chiến tranh khác bên trong. Điều này được sử dụng cho các ứng dụng cần các phần khác của hàm javaee (ejbs, hàng đợi jms, v.v.). Ví dụ về máy chủ ứng dụng là jboss hoặc glassfish.

Ngoài ra còn có java web start ứng dụng. Đây là những ứng dụng bạn có thể chạy bằng cách truy cập một trang web nhưng chúng được tải xuống máy tính của bạn và chạy trên máy tính của người dùng (thay vì phụ trợ của máy chủ, như trong chiến tranh/tai).

Ngoài ra còn có javafx. Tôi không biết gì về điều đó. By skimming the FAQ, có vẻ như câu trả lời của Java là Adobe's Flex. Bạn cấu hình các thành phần giao diện người dùng với cấu hình xml. Tôi không chắc chắn những gì các ứng dụng JavaFX định dạng sử dụng, nhưng nó nói, "Triển khai trên máy tính để bàn hoặc trong trình duyệt".


Như Sotirios Delimanolis đã đề cập trong nhận xét bên dưới, bạn có thể tạo những tệp này bằng hệ thống xây dựng như Ant hoặc Maven. Bạn cũng có thể xây dựng chúng "bằng tay" với các công cụ đi kèm với java/javaee sdk. Ví dụ, bạn cần có lệnh jar trong đường dẫn nếu bạn đã cài đặt sdk. Dưới đây là một số chi tiết của những xây dựng hệ thống:

  • Maven
    1. cấp cao (bạn nói với nó những gì để xây dựng, không làm thế nào để xây dựng nó)
    2. nhiều hơn chỉ là một hệ thống xây dựng. Nó cũng có quản lý phụ thuộc vv
    3. khăng khăng (nó sử dụng quy ước về cấu hình, mỗi tập tin cấu hình tạo ra 1 vật, vv)
  • Ant
    1. mức thấp (bạn nói với nó như thế nào để xây dựng mọi thứ)
    2. Flexible
    3. file Config có thể làm bất cứ điều gì bạn muốn, xây dựng như nhiều hiện vật như bạn muốn
    4. Dễ học
  • Công cụ SDK
    1. Luôn được cập nhật. EG: Rất hiếm khi, maven/ant có thể không có khả năng thiết lập một tùy chọn cấu hình
    2. Khó nhớ lệnh
    3. mức rất thấp
    4. Bằng cách riêng của mình, không lặp lại (EG: trừ khi bạn xây dựng một kịch bản, bạn sẽ có để gõ lệnh jar mình mỗi lần)
+0

@Tdorno NP, cho tôi biết nếu bạn có bất kỳ câu hỏi nào khác –

+0

Chúng tôi có sử dụng ứng dụng bên ngoài để gói các tệp Java của chúng tôi hoặc là cái gì đó có thể được thực hiện trực tiếp thông qua một IDE? – Tdorno

+0

Bạn cũng có thể làm điều đó trực tiếp trong IDE. –

1

Tạo một bình thực thi, một cuộc chiến bị rơi vào máy chủ web hoặc thư viện được một dự án khác sử dụng là một trong hai dự án trước đó.

+1

một cuộc chiến bị rơi vào máy chủ web ... Chiến tranh là gì? – Tdorno

+0

http://stackoverflow.com/questions/5871053/java-war-vs-jar-what-is-the-difference – orangegoat

1

Nếu ứng dụng có nghĩa là chạy trên máy khách, ứng dụng được đóng gói dưới dạng tệp JAR thực thi, sau đó được đóng gói dưới dạng Gói ứng dụng (Mac), có thể được bao bọc trong exe (Windows) hoặc ghép nối với tập lệnh thực thi sẽ khởi động JAR và đặt bất kỳ đối số VM được yêu cầu nào.

Nếu nó là một phần của ứng dụng web, thì nó sẽ được đóng gói như một WAR hoặc EAR và được đặt vào vị trí thích hợp trên máy chủ web.

Nếu nó chỉ đơn giản là một thư viện, thì nó thường được đóng gói như một JAR (không thực thi được) và được phân phối như vậy để tích hợp vào các dự án lớn hơn.

applet và sau đó chạy, nhưng tôi nhanh chóng nhận ra rằng đây không phải là luôn luôn như vậy

Trên thực tế, applet rất hiếm hiện nay và việc sử dụng chúng không được khuyến khích.

4
  • Applet bao giờ thực sự ưa chuộng và rất ít được sử dụng hiện nay.
  • Các ứng dụng đơn giản có thể được triển khai dưới dạng tệp "thực thi" JAR, về cơ bản là lưu trữ ZIP với siêu dữ liệu bổ sung cho JVM biết lớp nào chứa phương thức chính để chạy. Chúng có thể được chạy trên dòng lệnh bằng cách sử dụng tùy chọn -jar, hoặc trong hầu hết các môi trường máy tính để bàn bằng cách nhấn đúp (điều này đòi hỏi một JVM phải được cài đặt là tốt).
  • Ứng dụng dành cho máy tính để bàn có thể được triển khai thông qua Java Web Start hoặc trình cài đặt như IzPack hoặc Install4J, nhưng các ứng dụng dành cho máy tính để bàn Java cũng không phổ biến.
  • Hầu hết các phần mềm Java hiện chỉ chạy trên các máy chủ (máy chủ web hoặc máy chủ ứng dụng). Chúng thường được triển khai dưới dạng các tệp WAR hoặc EAR cũng là các tệp lưu trữ ZIP chứa các lớp và các tài nguyên khác. Các ứng dụng này sau đó chạy bên trong một thành phần máy chủ theo các tiêu chuẩn Servlet hoặc EJB.
+0

Xem thêm thông tin [JWS. trang] (http://stackoverflow.com/tags/java-web-start/info) tại đây tại SO. –

Các vấn đề liên quan