Java EE 6 대 Spring 3 스택 [닫기]


90

지금 새 프로젝트를 시작하고 있습니다. 기술을 선택해야합니다. 가벼운 것이 필요하므로 EJB 또는 Seam이 없습니다. 반면에 JPA (Hibernate 또는 대안)와 IceFaces가있는 JSF가 필요합니다.

Tomcat에 배포 된 Spring 3의 이러한 스택이 좋은 선택이라고 생각하십니까? 아니면 Java EE 6 웹 애플리케이션이 더 좋을까요? Java EE 6이 아직 잘 문서화되지 않은 새로운 기술인 것이 두렵습니다. Tomcat은 Glassfish 3보다 유지 관리가 더 쉬운 것 같습니다.

당신의 의견은 무엇입니까? 경험이 있습니까?


8
빛을 원한다면 IceFaces 대신 primefaces.org 로 갈 것입니다 . 훨씬 빠르고 간결한 API입니다.
Shervin Asgari

1
현재 JEE6를 제공하는 Glassfish 만 있습니다. Resin은 JEE6 프로필을 천천히 구현하고 있으며 , 필요한 것에 따라 충분할 수 있습니다.
Thorbjørn Ravn Andersen

3
@ Thorbjørn 웹 프로필 만 원하는 경우 GlassFish v3 웹 프로필을 사용할 수 있습니다.
Pascal Thivent

@Pascal, Glassfish가 할 수 없다고 말하는 것이 아니라 웹 프로필로 살 수 있다면 JEE6를 얻을 수있는 Glassfish의 대안이 곧있을 것이라고 자세히 설명했습니다.
Thorbjørn Ravn Andersen

@ Thorbjørn 나는 @ Thorbjørn을 제거하는 것을 잊었다. :) 코멘트는 "full-stack"GFv3를 사용하는 것이 유일한 옵션이라고 가정하는 것처럼 보이는 OP에 대한 것이었다.
Pascal Thivent

답변:


101

가벼운 것이 필요하므로 EJB 또는 Seam이 없습니다.

EJB3 이후 EJB를 무겁게 만드는 이유를 설명해 주시겠습니까? 우리가 2004 년이 아니라는 사실을 알고 있습니까? 나는 빛에 대한 당신의 정의와 당신의 주장 을 읽고 싶습니다 (그리고 제가 몇 가지 확실한 말을 할 것이라 확신하기 때문에 기꺼이 제 답변을 업데이트하겠습니다).

반면에 JPA (Hibernate 또는 대안)와 IceFaces가있는 JSF가 필요합니다.

JSF 2.0, JPA 2.0, Bean 유효성 검사, EJB 3.1 Lite, CDI 등을 포함하는 Java EE 6 웹 프로필은이를 위해 완벽하며 GlassFish v3 웹 프로필 을 사용하여 Java EE 6 웹 프로필로 빌드 된 응용 프로그램을 실행할 수 있습니다. .

Tomcat에 배포 된 Spring 3의 이러한 스택이 좋은 선택이라고 생각하십니까? 아니면 Java EE 6 웹 애플리케이션이 더 좋을까요?

글쎄요, 저는 독점 컨테이너 (Spring) 보다는 비 독점 플랫폼 (Java EE) 에서 내 코드를 실행하는 아이디어를 좋아합니다 . 그리고 저는 Java EE 6이 충분히 좋다고 생각합니다 (그리고 이것은 완곡 어법, EJB 3.1 (Lite), JPA 2.0, JSF 2.0, CDI 킥 엉덩이입니다). 내가 JSF 회의론자 였지만 다시 한 번 살펴 보았고 CDI가 포함 된 JSF 2.0은 너무 다르기 때문에 비교할 수도 없습니다. 그리고 CDI를 보지 않았다면 그것이 흔들린다 고 말씀 드리겠습니다.

Java EE 6이 아직 잘 문서화되지 않은 새로운 기술인 것이 두렵습니다.

Java EE는 나에게 꽤 잘 문서화되어 있습니다. 이것은 무료 청구처럼 들립니다. 그리고 저를 믿거 나 말거나 저는 Spring이 복잡해지고 Java EE가 쉬워지는 것을 발견하기 시작합니다.

Tomcat은 Glassfish 3보다 유지 관리가 더 쉬운 것 같습니다.

뭔가 해봤 어? 특별한 문제가 있었습니까? 다시 말하지만 이것은 무료 청구처럼 들립니다.


2
저는 Drools, GraniteDS 등을 사용하여 JBoss에서 EJB3.0 + Seam으로 개발 된 평가자 빅 프로젝트 직후입니다. 나는 Seam 바위에 동의한다! 하지만 저는 개발의 50 %를 재배포, 서버 재시작, 배포 오류, 임시 디렉토리 정리 등에 투자했습니다. 반면에 JBoss Tools 성능은 정말 좋지 않았습니다 (정말-ctrl + space 및 10s 중단). 이로 인해 JEE6를 사용하지 않는 것이 좋습니다. Seam 프레임 워크에서 빌린 것처럼 보입니다. 서버의 경우 conecion pool, jndi, jms, jmx, ear deplyment에 대해 생각하고 싶지 않습니다. 몇 초 만에 WAR을 시작하고 실행할 무언가가 필요합니다.
Piotr Gwiazda

6
@peperg Gaving King은 CDI (Weld가 RI)의 사양 리더이므로 Seam과 CDI의 유사점을 찾을 수 있습니다. 그러나 CDI! = Seam, Java EE 6! = Seam, 당신의 인식은 잘못되었습니다. GlassFish v3 웹 프로필을 사용해 보면 놀랄 것입니다 (연결 풀이 정의되면 걱정할 것이별로 없습니다).
Pascal Thivent

8
사람들이 EJB가 무겁다 고 말하는 것은 무엇입니까?. 나는 EJB v3.1을 사용하고 있으며 단순히 주석이 달린 pojos입니다. 무겁다 고 말할 때 성능이나 무엇을 의미합니까?
arg20 2011 년

13
@ arg20-그것은 참으로 큰 질문이며 파스칼은이 맥락에서 "무거운"(또는 "가벼운")이라는 용어가 무엇을 의미하는지 설명하도록 정당하게 요청합니다. 아마도 Spring과 EJB 사이의 오래된 불화의 나머지 부분 일 것입니다. 초기에는 EJB1 & 2가 개념적으로 무거웠습니다. Remoting 및 Stateful Bean에 대한 과도한 강조, 엄청나게 장황한 XML 배포 설명자 및 구현해야하는 완전히 미친 양의 필요한 인터페이스는 매우 나쁜 평판을 얻었습니다. EJB3 (2006)에서 이것은 완전히 바뀌었지만 2004 년 봄을 위해 EJB를 떠난 사람들은 때때로 여전히 2004 년과 EJB2가 최신이라고 생각합니다.
Arjan Tijms

7
Spring의 about 페이지에 "우리는 J2EE가 사용하기 더 쉬워야한다고 믿습니다"라고 적혀 있습니다. 그들은 "Java EE"가 아니라 "J2EE"라는 용어를 사용하는데, 이것은 Java EE 5가 출시 된 이후로 정확한 이름이었습니다. 이 ... 그들에 대해 많이 말한다
토르 E. 실바 수자

32

JavaEE6를 사용하지 않았습니다.

그러나 저는 JavaEE 및 EJB의 모든 이전 버전에 의해 충분히 심하게 구타를 당하여 법적 표준이 아닌 사실상의 표준으로 자리 잡을 때까지 신뢰하지 않을 것입니다. 현재 Spring은 여전히 ​​사실상의 표준입니다.

한 번만 속여, 부끄러워. 날 두 번 속이고 부끄러워 세 번 속여, EJB.

일부는 Spring이 독점적이라고 주장 할 것입니다. 저는 JavaEE 사양의 공급 업체 구현이 그 이상은 아니지만 독점적이라고 주장합니다.

저는 최근에 JBoss에서 Weblogic으로 많은 Java 애플리케이션을 이동하는 주요 변환을 거쳤습니다. 모든 Spring / Hibernate 앱은 필요한 모든 라이브러리가 내장되어 있기 때문에 수정없이 이식되었습니다. JPA와 EJB 및 JSF를 사용하는 모든 앱은 이식에 재앙이었습니다. 애플리케이션 서버 간의 JPA, EJB 및 JSF 해석의 미묘한 차이로 인해 영구적으로 수정하는 데 필요한 모든 종류의 불쾌한 버그가 발생했습니다. JNDI 이름 지정과 같은 단순한 것조차도 AppServer마다 완전히 달랐습니다.

Spring은 구현입니다. JavaEE는 사양입니다. 그것은 엄청난 차이입니다. 사양이 100 % 밀폐되어 있고 공급 업체가 해당 사양을 구현하는 방식에 흔들림이 전혀없는 경우 사양을 사용하는 것이 좋습니다. 그러나 JavaEE 사양은 결코 그렇지 않습니다. JavaEE6가 더 밀폐 된 것일까 요? 모르겠어요. WAR에서 더 많이 패키징 할 수 있고 AppServer 라이브러리에 덜 의존할수록 응용 프로그램의 이식성이 향상되며 결국 Dot-NET이 아닌 Java를 사용하는 이유입니다.

사양이 완벽하더라도 모든 애플리케이션의 모든 기술 스택을 업그레이드하지 않고도 애플리케이션 서버를 업그레이드 할 수 있다면 좋을 것입니다. JBoss 4.2에서 JBoss 7.0으로 업그레이드하려면 최신 버전의 JSF가 모든 애플리케이션에 미치는 영향을 고려해야합니다. Spring-MVC (또는 Struts) 애플리케이션에 미치는 영향을 고려할 필요가 없습니다.


1
정확히 이것은 훌륭한 추론입니다.
Palesz

1
이 추론에 동의합니다. 컨테이너의 사양 구현에 대한 종속성과 관련하여 많은 문제가 발생했습니다. 임베디드 라이브러리로 인한 고통이 크게 줄어 듭니다. 사양의 철학적 선호 외에는 논쟁하기 어렵습니다.
Peter Porter 2012

멋진 추론. 그러나 JEE 6 이후에도 이것이 당신의 경험입니까? App Server의 사양 구현이 여전히 고통 스러울 수 있음을 이해합니다. 따라서 App Server 1에서 구현 한 동일한 사양은 간단하고 효율적일 수 있지만 App Server 2에는 적용되지 않을 수 있습니다
Soumya

1
+1. 또한 애플리케이션 서버는 운영의 일정에 따라 변경되며, 여기서 봄 / 최대 절전 모드는 개발자가 제어합니다. 대기업 환경에서 애플리케이션 서버를 업그레이드하는 것은 훨씬 더 큰 문제입니다.
Nathan Hughes

나는 Dot-Net에 대해 정말로 이해하지 못했습니다. 이는 Spring만큼 소유권이 있으며 Microsoft라는 단일 공급 업체에 의해 개발되었습니다. 설명해 주시겠습니까?
user1339260

23

상관 없습니다. Java EE 6은 충분하며 거기에있는 프로필 때문에 "무거운"것이 아닙니다. 웹 프로필 만 사용하게됩니다.

개인적으로 저는 Spring을 선호합니다. 하지만 Java EE 6에 대한 합리적인 주장이 부족합니다. :)

(댓글을 통해 상기했듯이- 필요한 구성 요소에 따라 RichFaces , ICEfaces 및 / 또는 PrimeFaces 를 사용해 볼 수 있습니다).


1
그래서 질문은 "풀 스택 Glassfish Application Server를 사용하는 것이 웹 프로필을 너무 사용하는 것이 합리적입니까?"입니다.
Piotr Gwiazda

1
@peperg 웹 프로필 만 원하는 경우 GlassFish v3 웹 프로필을 사용하십시오. 내 대답을 참조하십시오.
Pascal Thivent

여기에 몇 가지 주장을 게시했습니다. stackoverflow.com/questions/2822812/spring-3-0-vs-j2ee-6-0/… , 오히려 "생산에 들어가는 방법"관점에서 가져 왔습니다. 그래서 아마도 그것은 당신의 주장 저장소를 조금 채울 것입니다.
Oliver Drotbohm

@peperq, JBoss 6은 연휴에 출시되었습니다.
Thorbjørn Ravn Andersen 2011

17

최근에 내 클라이언트 할당 중 하나는 Spring Stack Vs Custom 프레임 워크 스택 Vs a Java EE 표준 평가와 관련이 있습니다. 한 달 간의 평가와 프로토 타이핑을 마친 후 저는 행복 할뿐만 아니라 Java EE 6 기능 세트에 놀랐습니다. 2011 년 이후의 새로운 "엔터프라이즈"프로젝트 아키텍처의 경우 Java EE 6 및 Seam 3 또는 곧 출시 될 Apache JSR299 확장 프로젝트와 같은 잠재적 확장을 사용합니다. Java EE 6 아키텍처는 간소화되었으며 지난 몇 년 동안 발전해온 많은 오픈 소스 아이디어 중 최고의 아이디어를 통합합니다.

이벤트 관리, 컨텍스트 및 DI, 인터셉터, 데코레이터, RESTful 웹 서비스, 내장형 컨테이너를 사용한 통합 테스트, 보안 등의 기능을 즉시 고려하십시오.

내 결과의 대부분은 유용 할 수있는 Java EE 6의 주요 개념을 설명하는 내 블로그에 게시됩니다 .

물론 프레임 워크를 선택하는 데있어 엄격하고 빠른 규칙은 없습니다. Java EE 6은 풍부한 대화 세션 상태를 필요로하지 않는 단순한 "웹 사이트"에 적합합니다. Grails 또는 Play를 선택하는 것이 좋습니다! 뼈대. 그러나 대화 형 웹 애플리케이션의 경우 Java EE 6이 적합하지 않은 이유를 더 잘 알 수 없습니다.


Java EE 6은 정말 느리고 glassfish 및 glassfish 웹 프로필은 jetty / tomcat / whatever와 비교하기 시작하는 데 정말 느립니다. 테스트, 포함 가능한 컨테이너도 정말 느립니다.
Palesz

15

이제 얼마 후 스택에 대한 경험이 있습니다.

  • Java EE 5 + Seam + GraniteDS + Flex
  • Spring 3 + Vaadin (GWT)
  • Spring 3 + JSF 2.0 (PrimeFaces)

내 공모는 다음과 같습니다.

  • Spring 3는 Seam (거의 Java EE 6)보다 훨씬 간단하며 Tomcat 및 Jetty에서 실행됩니다! (Maven 플러그인을 사용한 개발을위한 Jetty는 헛소리입니다).
  • 저는 Flex를 좋아합니다 (실제로 저는 Flex 개발자 였기 때문에 편견이 있습니다). 풍부한 인터페이스가 필요하고 FlashBuilder를 구입할 수 있다면 이것을 사용하지만 Spring + GraniteDS 또는 BlazeDs 백엔드를 사용하십시오. FlashBuilder를 구입할 수 없다면 시간을 낭비하지 마십시오.
  • Vaadin은 훌륭합니다!. 개발 프로세스는 Flex보다 간단하지만 HTML 혼란없이 쉽게 풍부한 애플리케이션을 만들 수 있습니다. 단일 JS 라인을 작성하지 않을 것입니다. CSS가 필요합니다 (Flex에서도 필요합니다). 따라서 응용 프로그램 인터페이스가 데스크톱 응용 프로그램처럼 작동하고 Flex를 사용할 수 없거나 사용하지 않으려는 경우 Vaadin을 사용하십시오. 경고! Vaadin은 브라우저에 대한 큰 JS 오버 헤드를 가지고 있습니다.
  • 더 간단한 웹 사이트와 같은 애플리케이션을 만드는 경우 JSF2.0 (위와 같이 스프링 백엔드 포함)을 사용합니다. 당신은 HTML과 싸워야 할 것입니다 (나는 싫어합니다) 그리고 풍부한 인터페이스를 만드는 것은 Vaadin (특히 레이아웃)보다 어려울 것입니다. 느린 브라우저 / 컴퓨터를위한 가벼운 HTML을 얻을 수 있습니다. 저는 PrimeFaces를 좋아합니다-쉽고 잘 문서화되어 있습니다. 두 번째 장소는 IceFaces입니다.
  • HTML (브라우저에 맞는 엔터프라이즈 애플리케이션을 만드는 대신)에 생명을 불어 넣어야하는 웹 사이트 (웹 애플리케이션이 아님)를 만드는 경우 Wicket (구성 요소 기반을 선호하는 경우 풀 태도) 또는 SpringMVC (템플릿 기반을 선호하는 경우)를 사용합니다. , 푸시 자세) 또는 그냥 Play! 뼈대. 풍부한 데이터 기반 구성 요소를 만드는 것은 훨씬 더 어렵지만 HTML의 각 태그를 제어 할 수 있습니다 (HTML / 그래픽 디자이너가 좋아할 것입니다).

21
자신의 대답은 ... 질문에 관련이 어떻게 표시되지 않습니다
페레 Villega에게

1
-1 Java EE 6을 언급하지 않았기 때문에이 답변을 받아들이는 것은 매우 부적절 해 보입니다. 또한 @Pascal Thievent의 신중한 검토 (그리고 훨씬 더 높은 투표율)에서 제기 된 포인트를 다루지 않습니다. 대답.
user359996

1
실제로 질문은 더 유효하지 않습니다. JEE 6는 이제 매우 성숙해졌지만 2010 년 3 월 질문을받은 것은 아닙니다.
Piotr Gwiazda

@PiotrGwiazda는 그 이후로 JEE 6이 어떤 방식으로 변경 되었습니까? 사람들은 다시 다음의 더 두려워했다, 그러나 그것은 기본적으로 같은 JEE 6이었다
ymajoros

1
JEE6 구현이 더 성숙하고 사용 가능하다는 것을 의미했습니다. JBoss 7은 이제 안정적이며 더 많은 구현을 사용할 수 있습니다. 이제 커뮤니티도 더 커졌습니다. 더 많은 도구와 라이브러리가 이제 JEE 6 스택을 지원합니다.
Piotr Gwiazda

8

Adam Bien의 Future Of Enterprise Java ... Is Clear (Java EE with / without Spring and Vice Versa)를 읽어 보세요. 나는 몇 가지 이유로 Spring을 선택할 것이며 다음은 그중 하나입니다 (게시물에서 댓글 중 하나를 재현).

'어떤 Java EE 6 서버에 대해 이야기하고 있는지 잘 모르겠습니다. Glassfish 인증 및 TMAX JEUS가 있습니다. Java EE 6 호환 버전의 WebSphere, WebLogic, JBoss 등이 생산되고 실제 응용 프로그램에 사용될 수 있으려면 꽤 오랜 시간이 걸립니다 (읽기 : 몇 년). Spring 3에는 Java 1.5 및 J2EE 1.4 만 필요하므로 거의 모든 환경에서 쉽게 사용할 수 있습니다.


6
거의 정확히 1 년이 지난 지금 Java EE 6을 지원하는 JBoss AS 6이 현재 프로덕션에 사용되고 있습니다.
Arjan Tijms 2011 년

8

내 의견은 다른 사람이 언급하지 않은 것, 즉 내 작업의 코드가 수십 년 동안 (문자 그대로) 유지되는 경향이 있으므로 유지 관리가 우리에게 매우 중요하다는 점에 기반합니다. 우리 자신의 코드와 우리가 사용하는 라이브러리의 유지 관리. 우리가 제어하는 ​​우리 자신의 코드이지만 우리가 사용하는 라이브러리가 위에서 언급 한 수십 년 이상 동안 다른 사람들 이 유지 관리하는 것이 우리의 관심사입니다 .

간단히 말해서,이를 달성하는 가장 좋은 방법은 원시 JVM까지 Sun 사양의 오픈 소스 구현을 사용하는 것이라고 결론지었습니다.

오픈 소스 구현 중 Apache Jakarta는 라이브러리를 유지하는 것으로 입증되었으며 최근 Sun은 Glassfish v3에 대한 고품질 구현을 생성하는 데 많은 작업을 수행했습니다. 어쨌든 우리는 또한 모든 모듈의 소스를 가지고 있으므로 다른 모든 모듈이 실패하면 우리가 직접 유지할 수 있습니다.

Sun 사양은 일반적으로 사양을 준수하는 구현이 쉽게 교환 될 수 있다는 것을 의미하는 매우 엄격한 의미입니다. 서블릿 컨테이너를 살펴보십시오.

이 특별한 경우에는 Java EE 6의 일부이기 때문에 JavaServer Faces를 살펴 보는 것이 좋습니다. 이는 매우 오랫동안 사용할 수 있고 유지 관리 될 것임을 의미합니다. 그런 다음 MyFaces Tomahawk를 사용하여 유용한 추가 기능을 제공하기로 선택했으며 이는 자카르타 프로젝트입니다.

JBoss Seam이나 다른 사람들에게는 잘못된 것이 없습니다. 그들의 초점은 우리에게 매우 중요한 유지 보수 문제에 덜 집중되어 있다는 것입니다.


Java EE 6의 Java ServerFaces 2는 JSF 1을 사용하여 Tomahawk가 필요로하는 작업을 자체적으로 수행 할 수 있다는 것이 밝혀졌습니다. 이것은 매우 유능한 프레임 워크입니다 (하지만 약간 XML이
많음

안타깝게도 사람들은 소프트웨어가 수십 년 동안 살도록 만들어졌고 장기적인 지원이 중요한 열쇠라는 사실을 잊는 경향이 있습니다.
timmz

6

이미 가지고 있다면 Spring을 사용하는 것을 볼 수 있지만 새 프로젝트의 경우 요점이 무엇입니까? Java EE 6 (ejb3, jsf2.0 등)으로 직접 이동합니다.

클라이언트가 Flex를 사용해도 괜찮다면 선택하십시오. BlazeDS 또는 이와 유사한 것을 사용하십시오. 해당 부분 (서버와 클라이언트간에 데이터 교환)에 더 많은 시간을 할애 할 수 있지만 양쪽에서 모든 권한을 가지고 있습니다.

브라우저를 죽이고 싶지 않다면 Vaadin을 사용하지 마십시오. 또한 페이지가 복잡해지면 코드를 살펴 보는 데 더 많은 시간을 할애합니다. 또한 사고 방식을 완전히 바꿔야하며 표준 프런트 엔드 개발에 대해 아는 모든 것은 낭비가 될 것입니다. HTML이나 JS를 사용할 필요가 없다는 주장은별로 의미가 없습니다. 사용하지 않더라도 여전히 알아야합니다. 결국 HTML과 JS로 렌더링됩니다. 그런 다음 디버깅을 시도하십시오. 간단한 작업을 위해 며칠이 있는지 확인하십시오. 게다가 html / js를 모르는 웹 개발자는 상상할 수 없습니다.

사람들이 Java EE를 직접 사용하는 대신 모든 추상화를 시도하는 이유를 이해하지 못합니다.


5

EJB가 2010 년에 헤비급이된다는 점에 대해 왜 여전히 소란 스럽습니까? 사람들이 Java EE 기술에서 업데이트되지 않는 것 같습니다. 한번 시도해보십시오. Java EE 6에서 작업이 얼마나 단순화되었는지에 놀라게 될 것입니다.


4

질문에 대한 답변은 프로젝트 요구 사항에 따라 다릅니다. 메시지 큐, 컨테이너 관리 글로벌 트랜잭션 등과 같은 Java EE 기능이 필요하지 않은 경우 tomcat + spring을 사용하십시오.

또한 경험을 통해 많은 웹 서비스 통합, 스케줄링, 메시지 대기열이 필요한 프로젝트는 일부 Java EE 스택을 사용하는 것이 가장 좋습니다. 좋은 점은 Spring을 사용하여 애플리케이션 서버에서 실행되는 Java EE 모듈과 여전히 통합 할 수 있다는 것입니다.

Java EE 6은 이전 릴리스와 매우 다르며 모든 것을 훨씬 쉽게 만듭니다. Java EE 6은 다양한 Java 커뮤니티의 최고의 아이디어를 결합합니다. 예를 들어 Spring 프레임 워크의 Rod Johnson은 Java EE 6에서 Dependency Injection JSR을 만드는 데 적극적으로 참여했습니다. 일부 조직에서 공급 업체 지원 등을 위해 중요 할 수있는 표준입니다.

GlassFish v3는 Java EE 6을 지원하며 매우 가볍고 매우 빠르게 시작됩니다. 나는 내 개발을 위해 glassfish v3를 사용하고 있으며 구성하기가 정말 쉽습니다. 서버를 그래픽으로 관리 할 수있는 매우 사용자 친화적 인 관리 콘솔이 함께 제공됩니다.

GlassfishV3 및 JSF 2를 사용하는 경우 Java EE 6의 CDI 기능을 활용하여 JSF에서 대화 (예 : 페이지와 같은 마법사)를 쉽게 작성할 수 있습니다.

하지만 Java EE 6을 사용하려면 새로운 API를 배워야합니다. 사용 가능한 기간에 따라 최선의 선택이 아닐 수 있습니다. Tomcat은 오랫동안 사용되어 왔으며 tomcat + spring 조합은 많은 웹 프로젝트에서 채택되어 많은 문서 / 포럼이 주변에 있음을 의미합니다.


나는 당신의 첫 문장에 동의하지 않습니다. 선택은 JMS 사용 여부에 관한 것이 아닙니다. 그리고 JSR-330이 Java EE 6에서 그다지 중요하다고 생각하지 않습니다 (정치적 이유로 더 많이 사용됨). 중요한 부분은 JSR-299 (CDI)입니다. 적어도 이것은 내 의견입니다.
Pascal Thivent

JSR330과 관련된 몇 가지 정치가 있다는 데 동의합니다. 그럼에도 불구하고 DI를 JEE 전용 기술로 만드는 것보다 Java (SE 또는 EE)에서 종속성 주입에 대한 공통 기반을 제공하므로 매우 중요합니다. 또한 Spring 프레임 워크와 Google Guice에서 지원하므로 Spring / Guice 코드를 JEE6으로 쉽게 이식하거나 그 반대의 경우도 마찬가지입니다. JSR299는 JSR330의 기능을 확장하도록 설계되었습니다. JEE6의 웹 애플리케이션의 경우 JSR299가 절대적으로 중요하다는 점에서 정확합니다. 이 두 JSR 덕분에 JEE6와 Spring은 모두 매우 유사한 프로그래밍 모델을 가지고 있습니다. 댓글 주셔서 감사합니다!
Raz

3

저는 Spring과 Java EE 6에서 일했습니다. 제 경험에서 말할 수있는 것은 오래된 JSP 또는 독점 Flex를 사용하는 경우 Spring에 머물러도 안전하다는 것입니다.

그러나 JSF로 진행하려면 Java EE 6으로 전환해야합니다. Java EE 6에서는 Facelet과 표준화 된 스크립트 라이브러리 및 구성 요소 라이브러리로 이동합니다. 더 이상 스크립트 비 호환성 및 구성 요소 라이브러리 매트릭스가 없습니다.

Spring MVC와 관련하여 프로젝트가 너무 커지지 않는 한 좋습니다. 거대한 엔터프라이즈 애플리케이션이라면 Java EE 6을 고수해야합니다. 이것이 고유 한 구성 요소 라이브러리와 리소스 번들을 순서대로 유지할 수있는 유일한 방법이기 때문입니다.


1
귀하의 의견에 감사드립니다. 내 선택은 Spring + Vaadin이었습니다.
Piotr Gwiazda

3

Java EE 풀 스택이 필요한 경우 GlassFish 3.1을 권장합니다. Java EE 6 (JBoss 6, WebLogic 10.3.4)의 일부 또는 전체를 구현하는 다른 Java EE 컨테이너에 비해 매우 빠르게 시작되며 재배포에는 몇 초가 걸리며 거의 모든 작업이 구성보다 관례에 따라 수행 될 수 있습니다. 매우 친숙합니다.

원하는 기능으로 Apache Tomcat 7.x를 사용자 정의 할 수있는 "Light"를 원합니다. 다음 라이브러리에서 많이 사용했습니다. Weld 1.1.0 (CDI) JPA 2.0 (Hibernate 3.6.x)-리소스 로컬 트랜잭션 만 JSF 2.x (Mojarra) RichFaces 4.0 BIRT 런타임

지난 10 년 동안 Java EE 개발자였으며 ​​(저는 초기 EJB, JSF 및 웹 기술에 시달림) Java EE 6은 매우 쉽고 잘 결합되어 있으며 현재 하드웨어가 원활하게 실행되므로 동기 부여 된 Spring이 더 이상 유효하지 않습니다.


1
나는 당신의 대답을 좋아합니다. 매우 합리적입니다. 질문을 게시했을 때 JEE6는 매우 어 렸고 Tomcat 7은 아직 완료되지 않았습니다. "동기 부여 된 Spring이 더 이상 유효하지 않은 원래의 이유"-사실이지만 CDI가있는 JEE6은 시간이 좀 필요합니다. 예를 들어 : Javamelody 모니터링은 Spring과 Guice에서 사용할 수 있습니다 (그것없이 애플리케이션에서 마모되는 것을 상상할 수 없습니다). EHcache는 Spring에서 사용할 수 있습니다 (캐싱 방법 결과를 의미합니다). 많은 써드 파티 라이브러리와 프레임 워크가 Spring과 쉽게 통합되지만 아직 JEE6와는 통합되지 않기 때문에 aspect 프로그래밍과 같은 많은 것들이 Spring에서 여전히 더 쉽다.
Piotr Gwiazda

1

나는 여전히 봄을 선호한다.

그리고 JSF를 전달합니다. 죽은 기술이라고 생각합니다. Spring MVC가 더 나은 대안이 될 것입니다. Flex도 마찬가지입니다. 계약 우선 XML 서비스의 관점에서 생각하면 UI에서 백엔드를 완전히 분리 할 수 ​​있습니다.


1
Java + Flex 및 PHP + Flex로 일부 응용 프로그램을 만들었으며 풍부한 인터페이스를위한 최상의 솔루션이라는 데 동의합니다. 하지만이 응용 프로그램에서는 Flex를 사용할 수 없습니다. (하지만 고급 인터페이스가 필요하므로 Spring MVC는 솔루션이 아닙니다. 루프에서 <tr> <td>보다 정렬 가능한 데이터 테이블에 대해 생각하고 싶습니다.
Piotr Gwiazda

1
@duffymo-플렉스가 좋은 선택인지 논쟁 할 수 있습니다. JSF는 확실히 죽지 않았습니다. 특히 리치 페이스, 프라임 페이스, 아이 스페이스 등과 같은 라이브러리가 있습니다.
Bozho

1
IceFaces에서 메뉴, 트리, 데이터 그리드를 생성하고 액션, 이벤트를 사용하며 페이지가 다시로드되는지 아니면 아약스 요청인지 생각하지 않습니다. 정렬 가능한 데이터 그리드 또는 아약스로드 트리는 내장 구성 요소입니다. Spring MVC에서는 HTML-테이블, 목록 등에서 작업합니다. 타사 자바 스크립트 프레임 워크를 사용하고 손으로 AJAX 마법을 만들어야합니다. Flex에서하고 싶지만 정치 / 비즈니스 결정입니다. 내 것이 아닙니다.
Piotr Gwiazda

1
제 현재의 두 JSF 프로젝트는 확실히 죽지 않았습니다.) 그리고 저는 Flex를 사용하는 것보다 RIA를 빌드하는 JSF 방식 ( "richfaces"의 "rich"가 그에 해당합니다)에 훨씬 더 만족합니다. 하나는 다음 주에 공개 될 예정입니다.
Bozho 2010 년

2
왜 당신이 여전히 Spring을 선호하는지 알고 싶습니다. Java EE 6은 정말 좋습니다. 개방형 플랫폼에서 실행하는 것이 Java의 미래에 중요하다고 생각하지 않습니까?
Pascal Thivent

0

glassfish v3와 Weld가 더 성숙해질 때까지 기다릴 수 없다면 Spring + Tomcat을 추천합니다. 현재 CDI 지원 애플리케이션으로 glassfish를 실행할 때 메모리 소비 / cpu로드와 관련된 몇 가지 문제가 있습니다.


0

모든 것을 읽지는 않았지만 이제 Java EE 6의 전쟁에서 EJB3를 사용할 수 있으므로 Tomcat에서 EJB3을 사용할 수 있다는 것을 알리기 위해서입니다 (제 생각에).


예, Java EE 6의 WAR에 EJB를 패키징 할 수 있지만 이것이 Tomcat에 이러한 WAR을 배포 할 수 있다는 의미는 아닙니다. 웹 프로필을 구현하는 컨테이너가 필요하지만 Tomcat은 그렇지 않습니다. 실제로 Tomcat 커뮤니티에는이를 구현할 계획이 없습니다 ( old.nabble.com/Java-EE-6-Web-Profile-td27715793.html 참조 ). 하지만 GlassFish v3 웹 프로필이 있고 Resin이있을 것입니다 ...
Pascal Thivent

2
업데이트 : TomEE + 프로젝트 tomee.apache.org/apache-tomee.html
gpilotino

-3

다음과 같은 이유로 Spring과 함께 Tomcat을 추천했습니다.

  1. Spring은 JSP를위한 백킹 빈을 생성 할 수 있습니다.
  2. Spring을 사용하여 JPA를 통해 객체를 유지합니다.

무거운 처리가 필요하지 않기 때문에 Tomcat을 선택하는 것이 좋습니다.


1
"헤비 웨이트 처리"? 자세히 설명해 주시겠습니까? 궁금해.
Pascal Thivent
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.