Tomcat, JBoss 및 Glassfish의 차이점은 무엇입니까?


445

Enterprise Java를 살펴보기 시작했으며 다음에 나오는 책에서는 JBoss를 사용한다고 언급합니다. Netbeans는 Glassfish와 함께 제공됩니다. 나는 과거에 Tomcat을 사용했습니다.

이 세 프로그램의 차이점은 무엇입니까?



70
이러한 질문은 오픈 소스의 '저주'입니다. 때로는 거의 똑같은 일을하는 선택이 너무 많습니다. 초보자에게는 분석으로 마비로 이어질 수 있습니다. Eclipse는 지배적 인 IDE이지만 구매할 가치가있는 거의 모든 책은 netbeans를 사용하여 개발하고 가르치고 있습니다. 대부분의 비즈니스에서 실제로 Jboss를 사용하는 것을 보았을 때 Glassfish를 사용합니다. 각 컨테이너를 사용하는 데는 학습 곡선이 있으며 초보자에게는 매우 실망 스러울 수 있습니다.
user798719

이제 [WildFly] ( en.wikipedia.org/wiki/WildFly ) 로 알려진 JBoss 와 JBoss는 WildFly를 개발 한 회사입니다.
Chaminda Bandara

답변:


516

Tomcat은 서블릿 컨테이너 일뿐입니다. 즉 서블릿 및 JSP 사양 만 구현합니다. Glassfish와 JBoss는 완전한 Java EE 서버 (EJB, JMS 등 ... 포함)이며 Glassfish는 최신 Java EE 6 스택의 참조 구현이지만 2010 년 JBoss는 아직 완전히 지원하지 않았습니다.


77
독자들에게 JBoss는 이제 GlassFish와 같은 Java EE 6 Full Profile 인증을 받았습니다 . 또한 Tomcat은 이제 TomEE를 통해 Java EE 6 웹 프로파일 인증을 받았으며 EJB, CDI, JSF, JPA 등을 지원합니다.
David Blevins

10
@DavidBlevins 그래서 지금 차이점은 무엇입니까?
aldo.roman.nurena

23
@ aldo.roman.nurena 차이점이 거의 없습니다. GlassFish와 JBoss는 모두 Java EE Full Profile을 지원하므로 JAX-RPC 및 CORBA와 같은 레거시 기술을 지원합니다. 우리는 이것들을 Tomcat의 Java EE 버전에 포함시키지 않았지만, 현재의 모든 기술은 JAX-RS, JAX-WS, JMS, CDI, JPA, JSF, EJB, JTA 등과 같습니다.
David Blevins

@DavidBlevins JBoss와 Glassfish 중에서 선택하려면 프로덕션 환경에 어떤 것이 더 좋습니까? 이를 이해하는 데 사용할 수있는 참조 정보가 있습니까?
Sudhakar Chavali

1
stackoverflow에서 편집하는 것은 현실에서 너무 멀어지는 답변을 수정하는 올바른 방법입니다.
Warren P

358

Tomcat은 단순히 HTTP 서버 및 Java 서블릿 컨테이너입니다. JBoss 및 GlassFish는 EJB 컨테이너 및 해당 스택의 다른 모든 기능을 포함하여 완전한 Java EE 응용 프로그램 서버입니다. 반면 Tomcat은 메모리 공간이 적어 (~ 60-70MB) Java Java 서버는 수백 메가에 달합니다. Tomcat은 간단한 웹 애플리케이션 또는 전체 Java EE 서버가 필요하지 않은 Spring과 같은 프레임 워크를 사용하는 애플리케이션에 매우 인기가 있습니다. 움직이는 부품이 적기 때문에 Tomcat 서버 관리가 훨씬 쉽습니다.

그러나 완전한 Java EE 스택 (또는 Tomcat에 쉽게 연결할 수있는 최소한 하나 이상의 조각)이 필요한 애플리케이션의 경우 JBoss와 GlassFish는 가장 인기있는 오픈 소스 제품 중 하나입니다 (세 번째는 Apache Geronimo입니다) (무료 버전의 IBM WebSphere가 빌드되는 경우). JBoss는 더 크고 깊은 사용자 커뮤니티와보다 성숙한 코드베이스를 가지고 있습니다. 그러나 JBoss는 현재 Java EE 사양을 구현할 때 GlassFish보다 상당히 뒤떨어집니다. 또한 GUI 기반 관리 시스템을 선호하는 사람들에게는 GlassFish의 관리 콘솔이 매우 매끄럽지 만 JBoss의 대부분의 관리는 명령 줄 및 텍스트 편집기로 수행됩니다. GlassFish는 Sun / Oracle에서 바로 얻을 수있는 모든 이점을 제공합니다. JBoss는 Sun / Oracle의 통제하에 있지 않으며 모든 장점을 제공합니다.


3
나는 유효성을 검사하지는 않았지만 일부 는 일반 프로젝트의 경우 EE 6 컨테이너가 Spring + 종속성보다 25 % 적은 메모리를 사용할 수 있다고 주장 합니다 .
Arjan

2
+1, 훌륭한 답변, @Arjan의 의견을 구독합니다. 실제로 이러한 서버 자체에서 사용되는 메모리는 배포 된 응용 프로그램에 필요한 메모리의 양과 비교할 때 중요하지 않습니다 (그리고 사용되는 기술에 크게 의존합니다. 스프링은 다소 of memory hog)
Shivan Dragon

10
"서블릿 컨테이너"와 "JEE 서버"에 대한 토론은 항상 "봄"과 "EJB / JSF"에 대한 토론으로 바뀌는 것 같습니다. 나는 JEE를 몇 년 동안 사용해 왔으며 고객이 지불 할 때 항상 기쁘다. 그러나 내 생각은 다음과 같다. [1] 양쪽의 대부분의 벤치 마크는 바이어스 소스에서 나 왔으며, 나는 두 스택 사이에 큰 리소스 차이를 발견 한 적이 없다. [2] Spring은 JEE "standards"보다 훨씬 이식성이 뛰어나다. 서버를 전환하는 것은 항상 고통스럽고 마지막은 아니지만 ...
Steve Perkins

7
... [3] Spring 및 Hibernate의 사용자 커뮤니티는 순수한 JEE 사양의 사용자 커뮤니티를 절대적으로 뒤엎습니다. Spring에 문제가 발생하여 StackOverflow에 대한 질문을 게시하면 수백 명의 사람들이 읽을 수 있으며 몇 분 안에 확실한 답변을 얻을 수 있습니다. JEE에 관한 질문을하면, 12 명이 읽게 될 것입니다. 그리고 반은 당신이받는 유일한 응답은 "그것은 저에게 효과적입니다!"입니다. JEE 표준은 항상 하루가 늦고 달러가 짧은 것처럼 보이며 실제 앱에서 문제가 발생하면 외로움을 느낍니다.
Steve Perkins 1

1
음 ... 작년 기준으로 Tomcat은 13MB, GlassFish 53MB 및 JBoss 127MB였습니다. 그 JavaEE 서버 (GlassFish 및 JBoss)는 수백 메가로 생각하지 않습니다. WebLogic 또는 WebSphere에 대해 이야기하고 있다면 GB에 관한 것입니다. zeroturnaround.com/rebellabs/…에있는
j는

81

Java EE 엔터프라이즈 응용 프로그램 에는 GlassFish를 사용해야 합니다 . 고려해야 할 사항 :

웹 서버 수단 : (일반적으로 브라우저에서) 처리 HTTP 요청.

서블릿 컨테이너 (예 : 톰캣 ) 수단 : 그것은 서블릿 및 JSP를 처리 할 수 있습니다.

응용 프로그램 서버 (예를 들어, 글래스 피쉬 ) 수단 : 그것은 자바 EE 애플리케이션 (일반적으로 서블릿 / JSP와 EJB를 모두)를 관리 할 수 있습니다 *.


Tomcat -Apache 커뮤니티가 운영합니다-오픈 소스이며 두 가지 특징이 있습니다.

  1. Tomcat-웹 프로파일 -경량이며 서블릿 컨테이너이며 EJB, JMS 등과 같은 Java EE 기능을 지원하지 않습니다.
  2. Tomcat EE- 인증 된 Java EE 컨테이너이며 모든 Java EE 기술을 지원합니다.

상업적 지원이 없음 (커뮤니티 지원 만 해당)

JBoss -RedHat에서 실행 JavaEE에 대한 전체 스택 지원이며 인증 된 Java EE 컨테이너입니다. 내부적으로 웹 컨테이너로 Tomcat이 포함됩니다. 이것은 또한 두 가지 맛이 있습니다.

  1. Application Server (AS)라는 커뮤니티 버전 -커뮤니티 지원 만 제공됩니다.
  2. EAP (Enterprise Application Server) -이를 위해 서브 스크립 션 기반 라이센스를 보유 할 수 있습니다 (서버에있는 코어 수를 기반으로합니다).

Glassfish -Oracle에 의해 실행 또한 전체 스택 인증 Java EE 컨테이너입니다. 여기에는 자체 웹 컨테이너가 있습니다 (Tomcat 아님). 이것은 Oracle 자체에서 제공되므로 모든 새로운 사양은 Glassfish로 먼저 테스트 및 구현됩니다. 따라서 항상 최신 사양을 지원합니다. 지원 모델을 알지 못합니다.


2
요즘 (2018 년 1 분기) Glassfish는 실제로 실제로 큰 역할을하지 않습니다. 사실상 표준 JBoss가 아닙니까?
소크라테스

14

jboss와 glassfish는 톰캣과 같은 서블릿 컨테이너를 포함하지만 두 응용 프로그램 서버 (jboss와 glassfish)도 콩 컨테이너를 제공합니다 (그리고 상상할 수있는 몇 가지 다른 것들)


2
Glassfish는 Tomcat이 할 수있는 모든 것을 할 수 있지만 그것이 Tomcat을 "포함"한다는 의미는 아닙니다. Glassfish에는 자체 웹 컨테이너가 있습니다.
Martin

5
더 명확하게 말하면, "like tomcat"은 옳지 만 JBoss는 실제로 서블릿 컨테이너 구현으로 Tomcat을 포함합니다.
Chucky

@Chucky 더 이상
NimChimpsky

8

JBoss와 Glassfish는 기본적으로 완전한 Java EE Application Server 인 반면 Tomcat은 서블릿 컨테이너 일뿐입니다. JBoss, Glassfish뿐만 아니라 WebSphere, WebLogic 등 Tomcat과 Jetty의 주요 차이점은 전체 앱 서버가 제공하는 기능이었습니다. 풀 스택 Java EE 앱 서버를 보유한 경우 선택한 공급 업체의 모든 구현을 활용할 수 있으며 EJB, JTA, CDI (JAVA EE 6+), JPA, JSF, JSP / Servlet을 활용할 수 있습니다. 등등. 반면 Tomcat을 사용하면 JSP / 서블릿 만 활용할 수 있습니다. 그러나 Spring 및 Guice와 같은 고급 프레임 워크를 사용하면 풀 스택 애플리케이션 서버를 사용하는 주요 이점 중 많은 부분을 완화 할 수 있으며이 프레임 워크 중 하나를 Spring Ecosystem을 사용하여 가정하면


8

이 답변을 읽을 때 Tomcat을 사용하는 것은 약간 실망스러운 것 같습니다. 그러나 가장 언급하지 않은 것은 tomcat과 동일하거나 거의 동일한 유스 케이스에 도달 할 수 있지만 Maven 또는 사용하는 시스템을 포함하여 필요한 라이브러리를 추가해야한다는 것입니다.

매우 작은 구성 노력으로 JPA, EJB로 Tomcat을 실행했습니다.


1
@MarcoOttina 내 경험으로는, 네. 고도로 구성 가능한 웹 서버입니다. 현대 웹 응용 프로그램을 작성하는 많은 사람들이 Spring / Spring Boot와 함께 사용하고 있다고 생각합니다. Java를 사용하면서 몇 년 동안 나는 생태계에 대한 요구 사항이 없었기 때문에 여전히 생태계 (특히 모든 JEE)에 혼란스러워합니다. 따라서 오늘 여기에 끝납니다 :)
jocull

4

JBoss와 Tomcat은 모두 Java 서블릿 애플리케이션 서버이지만 JBoss는 훨씬 더 많습니다. 이 둘의 실질적인 차이점은 JBoss가 Enterprise JavaBeans 및 엔터프라이즈 Java 응용 프로그램을 개발하는 개발자에게 유용한 기타 기술을 포함하여 완전한 Java EE (Java Enterprise Edition) 스택을 제공한다는 것입니다.

Tomcat은 훨씬 더 제한적입니다. JBoss는 서블릿 컨테이너와 웹 서버를 포함하는 Java EE 스택이고, Tomcat은 대부분 서블릿 컨테이너와 웹 서버입니다.


3

Apache Tomcat은 Enterprise Java 응용 프로그램 (JEE)을 지원하지 않는 유일한 서버 릿 컨테이너입니다. JBoss와 Glassfish는 JEE 응용 프로그램을 지원하지만 JBOSS 서버보다 훨씬 무거운 Glassfish : Reference Slide

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.