2016-06-23 3 views
8

핵심 Java 및 Java EE에 대한 경험이 있습니다. 그래서 Java EE가 정확히 무엇인지 이해하기 위해 다양한 질문을 읽었습니까? 그리고 SO에 몇 가지 답변은 다음과 같습니다 what-exactly-is-java-ee,Java EE - 누가 사양을 구현합니까?

what-is-java-ee 좀 의심이 :

1) 자바 EE이를 구현 않습니다 단지 사양 인 경우? 응용 프로그램 서버 (예 : JBOSS, GlassFish)가 이러한 사양을 구현합니까?

2) 내가 맞으면 EJB 사양이 EJB 컨테이너에 의해 구현되며 EJB 컨테이너가 응용 프로그램 서버의 일부라고 생각합니다. 이제 개발자가 EJB 코드를 작성할 때 우리는 실제로 무엇을하고 있습니까? 내가 가진 의심은 EJB 컨테이너가 EJB 스펙을 구현했기 때문에 EJB의 "스펙 파트"를 오버라이드하는 것인가? 어떻게 EJB의 일부분은 EJB 컨테이너에 의해 구현되고 어떤 것은 개발자가 작성 하는가? 또는 EJB 컨테이너의 일부가 EJB의 일부를 제공해야하고 개발자가 개발해야하는 부분이 있습니까? 나는 이것을 어지럽히는 데 어려움을 겪고있다.

누구나 이해할 수 있습니까?

+2

1) 이미 중복으로 답변되었습니다. 2) Java EE 개발자 인 우리는 Java EE API의 최종 사용자입니다. – BalusC

답변

8

누구나 java ee 사양 (JSR342)을 구현하거나 누구나 jsr을 구현할 수 있습니다. 그들이 할 때, (구매 및 전달 후 Compatibility Test Suite) 주장과 호환 될 수있는 사양.응용 프로그램 서버에는 compatible with java ee 인 여러 공급 업체가 있지만 공급 업체는 전체 Java ee 사양을 구현하지 않습니다. 예를 들어, glassfish (Java ee 참조 구현)는 Red Hat의 CDI 구현을 사용합니다. 때로는 공급 업체가 java ee 사양을 구현하지 않고 glassfish를 가져 와서 해당 공급 업체별 라이브러리를 추가하고 이름으로 릴리스 할 수 있습니다. 호환성을 주장하기 위해서는 여전히 인증 프로세스를 거쳐 CTS를 실행해야합니다.

사양을 구현하는 모든 공급 업체를 확인하는 것은 모든 사람이 인증 프로세스를 거치지 않기 때문에 쉽지 않습니다. 예를 들어 Apache CXF은 자체적으로 인증되지 않고 Red Hat의 JBoss의 일부로 인증을받습니다.

각 사양에는 각 구현의 필수 동작을 정의하는 API와 작성된 pdf가 있습니다. 이것이 바로 EJB 코드를 작성할 때 사용합니다. 예를 들어 당신이 EJB를 만들 때 :

import javax.ejb.Singleton; 
@Singleton 
public class MySingleton{ 
    ... 
} 

@Singleton 주석은 사양의 일부이지만, MySingleton 클래스는 사양의 일부가 아니라, 당신의 EJB 코드입니다. 그런 다음 EJB 컨테이너는 클래스와 함께 수행 할 작업을 알고 있습니다.

+0

의견을 보내 주셔서 감사합니다. – CuriousMind

+0

우수 답변 – StuPointerException

1

예, RedHat와 같은 EJB 컨테이너 (응용 프로그램 서버) 공급 업체는 JBoss와 같은 제품에서 J2EE 사양을 구현합니다.

비즈니스 로직을 구현하는 것이 아닙니다 (원할 경우 "배관"만). 그것이 애플리케이션 개발자들이 들어오는 곳입니다.

Apache HTTPD 또는 nginx와 마찬가지로 HTTP 프로토콜 사양을 구현하지만 이는 웹 사이트가 아닙니다.

1

누구나 J2EE 사양을 구현할 수 있지만 직접 시도하지 않는 것이 좋습니다. 맞습니다. 일반적으로 J2EE 호환 컨테이너에서 애플리케이션을 실행할 수 있도록 애플리케이션 서버에 의해 구현됩니다. 또한 오픈 소스 라이브러리가 있습니다.이 라이브러리는 Tomcat에 결합되어 추가 될 때 명세를 구현합니다 (예를 들어 tomee 참조).

애플리케이션을 작성할 때 복잡한 애플리케이션을 작성하고 특정 요구 사항에 집중할 수있는 J2EE 환경의 이점을 활용합니다.

1

Java 사양의 경우 (Java EE, JSF, 기타 JSR) 일반적으로 스펙을 작성하는 동안 작성된 참조 구현이 있습니다 (Java EE의 경우 Glassfish). 그런 다음 자신의 구현을 작성할 수있는 다른 제공자가 있습니다. spec (종종 어떤면에서는 "더 나은"이라고 주장한다).

개발자는 스펙에 제공된 기능을 사용할 수있는 코드를 작성합니다. 그러면 규정 준수 구현에서 올바르게 실행됩니다.

1

1) 응용 프로그램 서버는 사양을 구현하고 서버를 릴리스하는 동안 구현 세부 정보를 제공합니다. JBOSS 7이 구현 한 다양한 JSR을 지정하는 link을 참조하십시오.

2) 응용 프로그램 서버에서 제공하는 구현을 사용하고있을 때 인스턴스는 서버에서 제공하는 구현에서 가져옵니다. 반대로 클래스를 재정의하면 재정의 클래스가 우리 작업에 제공됩니다.