2010-09-29 11 views
366

Tôi bắt đầu xem xét Enterprise Java và cuốn sách tôi đang theo dõi đề cập rằng nó sẽ sử dụng JBoss. Netbeans tàu với Glassfish. Tôi đã sử dụng Tomcat trong quá khứ.Sự khác nhau giữa Tomcat, JBoss và Glassfish là gì?

Sự khác nhau giữa ba chương trình này là gì?

+6

1. http://stackoverflow.com/questions/173504/why-use-glassfish-instead-of-apache-whats-it-strengths-and-weaknesses 2. http: // stackoverflow.com/questions/327793/how-would-you-so sánh-apache-tomcat-glassfish-as-production-servers – pramodc84

+59

những câu hỏi này là 'lời nguyền' của mã nguồn mở. Đôi khi có quá nhiều lựa chọn làm gần giống như vậy. Đối với người mới, nó có thể dẫn đến tê liệt bằng cách phân tích. Eclipse là IDE chủ yếu nhưng hầu như tất cả các sách đáng mua đều sử dụng netbeans để phát triển và dạy. Nó sử dụng Glassfish khi tôi đã nhìn thấy hầu hết các doanh nghiệp sử dụng Jboss trong cuộc sống thực. Có những đường cong học tập để sử dụng mỗi container, và nó có thể rất bực bội cho người mới. – user798719

+0

Bây giờ JBoss được gọi là [WildFly] (https://en.wikipedia.org/wiki/WildFly) và JBoss là công ty phát triển WildFly. –

Trả lời

435

Tomcat chỉ là một thùng chứa servlet, nghĩa là nó chỉ thực hiện các đặc tả servlets và jsp. Glassfish và JBoss là các máy chủ Java EE đầy đủ (bao gồm các công cụ như EJB, JMS, ...), với Glassfish là việc triển khai tham chiếu của ngăn xếp Java EE 6 mới nhất, nhưng JBoss trong năm 2010 vẫn chưa hỗ trợ đầy đủ.

+36

bạn đang trả lời giống như một cú đánh đầu !!! tuyệt vời!!! – BlaShadow

+67

Lưu ý cho người đọc, [JBoss hiện đã được chứng nhận đầy đủ về Java EE 6] (http://planet.jboss.org/post/jboss_as_7_1_0_final_thunder_released_java_ee_6_full_profile_certified) như GlassFish. Tomcat bây giờ là [Java EE 6 Web Profile được chứng nhận thông qua TomEE] (https://blogs.apache.org/foundation/entry/the_apache_software_foundation_announces17) và hỗ trợ EJB, CDI, JSF, JPA, và nhiều hơn nữa. –

+9

@DavidBlevins vì vậy bây giờ sự khác biệt là gì? –

12

JBoss và Glassfish bao gồm một container servlet (như tomcat), tuy nhiên hai máy chủ ứng dụng (JBoss và Glassfish) cũng cung cấp một container đậu (và một vài thứ khác là tốt Tôi tưởng tượng)

+2

Glassfish có thể làm bất cứ điều gì Tomcat có thể nhưng điều đó không có nghĩa là "bao gồm" Tomcat. Glassfish có thùng chứa web riêng của nó. – Martin

+4

Để rõ ràng hơn, "như tomcat" là đúng, nhưng JBoss thực sự nhúng Tomcat cho việc triển khai vùng chứa servlet của nó. – Chucky

+0

@Chucky không còn nữa – NimChimpsky

312

Tomcat chỉ đơn thuần là một HTTP máy chủ và thùng chứa servlet Java. JBoss và GlassFish là các máy chủ ứng dụng Java EE đầy đủ, bao gồm một thùng chứa EJB và tất cả các tính năng khác của ngăn xếp đó. Mặt khác, Tomcat có bộ nhớ nhẹ hơn (~ 60-70 MB), trong khi các máy chủ Java EE này có trọng lượng hàng trăm megabyte. Tomcat rất phổ biến cho các ứng dụng web đơn giản, hoặc các ứng dụng sử dụng các khung công tác như Spring không yêu cầu một máy chủ Java EE đầy đủ. Quản trị máy chủ Tomcat được cho là dễ dàng hơn, vì có ít bộ phận chuyển động hơn.

Tuy nhiên, đối với các ứng dụng yêu cầu ngăn xếp Java EE đầy đủ (hoặc ít nhất nhiều phần có thể dễ dàng được thêm vào Tomcat) ... JBoss và GlassFish là hai trong số các dịch vụ nguồn mở phổ biến nhất (thứ ba một là Apache Geronimo, khi mà phiên bản miễn phí của IBM WebSphere được xây dựng). JBoss có một cộng đồng người dùng lớn hơn và sâu hơn, và một codebase trưởng thành hơn. Tuy nhiên, JBoss chậm đáng kể đằng sau GlassFish trong việc thực hiện các thông số kỹ thuật Java EE hiện tại. Ngoài ra, đối với những người thích hệ thống quản trị dựa trên GUI ... Bảng điều khiển quản trị của GlassFish cực kỳ khéo léo, trong khi hầu hết quản trị trong JBoss được thực hiện bằng một trình soạn thảo văn bản và dòng lệnh. GlassFish xuất phát trực tiếp từ Sun/Oracle, với tất cả các ưu điểm có thể cung cấp. JBoss KHÔNG nằm dưới sự kiểm soát của Sun/Oracle, với tất cả những lợi thế mà THAT có thể cung cấp.

+5

Đó cũng là một câu trả lời khá sắc nét! – Chucky

+3

Tôi chưa xác thực, nhưng [một số yêu cầu] (https://blogs.oracle.com/arungupta/entry/why_java_ee_6_is) rằng đối với một dự án thông thường, một thùng chứa EE 6 có thể sử dụng bộ nhớ ít hơn 25% * so với Spring + phụ thuộc. – Arjan

+2

+1, câu trả lời tuyệt vời, mặc dù tôi đăng ký nhận xét của @ Arjan: thực sự bộ nhớ được sử dụng bởi các máy chủ này không quan trọng so với dung lượng bộ nhớ mà ứng dụng triển khai sẽ cần (và điều đó phụ thuộc rất nhiều vào các công nghệ được sử dụng. phần nào của một bộ nhớ hog) –

3

Cả JBoss và Tomcat đều là các máy chủ ứng dụng Java servlet, nhưng JBoss thì còn hơn thế nữa. Sự khác biệt đáng kể giữa hai là JBoss cung cấp một Java Enterprise Edition (Java EE) đầy đủ, bao gồm Enterprise JavaBeans và nhiều công nghệ khác hữu ích cho các nhà phát triển làm việc trên các ứng dụng Java doanh nghiệp.

Tomcat bị hạn chế hơn nhiều. Một cách để nghĩ về nó là JBoss là một ngăn xếp Java EE bao gồm một thùng chứa servlet và máy chủ web, trong khi Tomcat, hầu hết là một thùng chứa servlet và máy chủ web.

4

JBoss và Glassfish về cơ bản là đầy đủ Máy chủ ứng dụng Java EE trong khi Tomcat chỉ là một thùng chứa Servlet. Sự khác biệt chính giữa JBoss, Glassfish nhưng cũng là WebSphere, WebLogic và như vậy đối với Tomcat cũng như Jetty, nằm trong chức năng mà một máy chủ ứng dụng cung cấp đầy đủ. Khi bạn có một máy chủ ứng dụng Java EE ngăn xếp đầy đủ, bạn có thể có lợi cho tất cả việc triển khai nhà cung cấp mà bạn chọn, và bạn có thể hưởng lợi từ EJB, JTA, CDI (JAVA EE 6+), JPA, JSF, JSP/Servlet và vân vân. Với Tomcat, bạn chỉ có thể hưởng lợi từ JSP/Servlet. Tuy nhiên, với những khung công tác tiên tiến như Spring và Guice, nhiều lợi thế chính của việc sử dụng một máy chủ ứng dụng stack đầy đủ có thể được giảm thiểu, và với giả định về một khung công tác này với Spring Ecosystem, bạn có thể hưởng lợi từ nhiều sub dự án mà trong kinh nghiệm làm việc của tôi cho phép tôi để lại việc sử dụng một máy chủ ứng dụng stack đầy đủ trong lợi của máy chủ ứng dụng nhẹ như tomcat.

54

Bạn nên sử dụng GlassFish dành cho các ứng dụng doanh nghiệp Java EE. Một số điều cần xem xét:

Một web server phương tiện: Xử lý các yêu cầu HTTP (thường là từ trình duyệt).

Một Servlet container (ví dụ Tomcat) có nghĩa là: Nó có thể xử lý servlets & JSP.

Một Application Server (ví dụ GlassFish) có nghĩa là: * Nó có thể quản lý ứng dụng Java EE (thường là cả servlet/JSP và EJB).


Tomcat - được điều hành bởi cộng đồng Apache - Mã nguồn mở và có hai hương vị Tomcat - hồ sơ Web - trọng lượng nhẹ mà là thùng chứa chỉ servlet và không hỗ trợ Java EE tính năng như EJB, JMS vv Tomcat EE - Đây là một thùng chứa Java EE được chứng nhận, điều này hỗ trợ tất cả các công nghệ Java EE.

Không hỗ trợ thương mại có sẵn (chỉ hỗ trợ cộng đồng)

JBoss - Chạy bởi RedHat Đây là một chồng hỗ trợ đầy đủ cho JavaEE và nó là một chứng nhận Java EE container. Điều này bao gồm Tomcat dưới dạng trang web nội bộ. này cũng có hai hương vị phiên bản cộng đồng gọi là Application Server (AS) - điều này sẽ chỉ có hỗ trợ cộng đồng Enterprise Application Server (EAP) - Đối với điều này, bạn có thể có thuê bao giấy phép dựa (Nó dựa trên số lượng Cores mà bạn có trong bạn máy chủ.)

Glassfish - Chạy bởi Oracle Đây cũng là thùng chứa Java EE được chứng nhận ngăn xếp đầy đủ. Điều này có chứa web riêng của mình (không phải Tomcat). Điều này xuất phát từ chính Oracle, vì vậy tất cả các thông số kỹ thuật mới sẽ được kiểm tra và triển khai với Glassfish trước. Vì vậy, luôn luôn nó sẽ hỗ trợ các thông số kỹ thuật mới nhất. Tôi không biết về các mô hình hỗ trợ của nó.

+0

Tôi có quyền nói rằng, hiện nay (quý 1 năm 2018) Glassfish không thực sự đóng một vai trò lớn trong thực tế? Không phải là JBoss tiêu chuẩn thực tế sao? – Socrates

1

Apache tomcat chỉ là một thùng chứa serverlet chỉ nó không hỗ trợ cho các ứng dụng doanh nghiệp Java (JEE). JBoss và Glassfish đang hỗ trợ cho ứng dụng JEE nhưng Glassfish nặng hơn nhiều so với máy chủ JBOSS: Reference Slide

1

Dường như một chút chán nản khi sử dụng Tomcat khi bạn đọc những câu trả lời này. Tuy nhiên điều mà hầu hết không đề cập đến là bạn có thể tới trường hợp sử dụng trùng hoặc gần như giống hệt với tomcat nhưng điều đó đòi hỏi bạn phải thêm các thư viện cần thiết (thông qua Maven hoặc bất cứ điều gì bao gồm hệ thống bạn sử dụng).

Tôi đã được chạy tomcat với JPA, EJB với những nỗ lực cấu hình rất nhỏ.