2016-09-03 3 views
0

예를 들어 Servlet 사양 (버전은 중요하지 않음)을 예로 들어보십시오. 그것은 사양을 설명하는 대형 PDF 파일과 함께 제공됩니다. API (인터페이스 및 클래스)는 javax.servlet.* 패키지 구조에 속하며 프로그래머는이를 사용합니다. 예를 들어 서블릿을 작성할 때 종종 우리는 extends javax.servlet.http.HttpServlet을 자주 사용합니다.Java 사양 및 해당 API (인터페이스 + 클래스)

내 질문 : API 클래스 및 인터페이스 (javax.servlet.*)는 이러한 "공급 업체별"(서블릿 컨테이너의 각 공급 업체에서 구현 됨)이거나 이러한 자체 사양의 일부이므로 각 서블릿 컨테이너 공급 업체에서만 사용됩니다.)?

사양은 실질적으로 항상 사양 구현 자 (RI)와 함께 제공되며 사양 멤버가 만들고 무료로 사용할 수 있습니다 (추상 클래스의 메서드 구현과 같이 자유롭게 수정할 수 있음)?

+0

'javax.servlet. *'의 명세가 단일 문서에 있으므로 벤더에 따라 다를 수 있습니다. 확실히 이것은 명백한 것인가? – EJP

+0

내 질문을 편집하여 RI 부분을 추가했습니다. –

답변

2

패키지는 사양의 일부이므로 공급 업체에 따라 다릅니다. 이것의 이점은 구현에 독립적 인 코드를 작성할 수 있다는 것입니다. 즉, 스펙을 구현하는 컨테이너에서 실행될 수 있습니다. 하나의 구현이 버그가있는 경우 소스 코드를 변경하지 않고 새로운 구현으로 이동할 수 있습니다.

this question을 살펴보십시오.

+0

감사합니다. 당신이 말하는 질문은 내 것과 관련이 있습니다. 필자는 동일한 질문을합니다. 즉, 사양에서 패키지 이름과 인터페이스를 프로그래머가 사용할 수 있다고 언급하고 있습니다. "실제 API는 JavaDoc입니다."물론 사양은 구현을 결정하지는 않지만 사용할 수 있어야합니다. 코더 코더는 구체적이고 완전한 인터페이스 및 클래스 이름을 필요로합니다. –

+0

@StephanvanHoof Jörg W Mittag는 매우 정교한 답을 제공한다고 생각합니다. 사양이 원하는 것입니다. 그것이 매우 개방적이거나 매우 정확한지를 선택하십시오. Java-land에서 스펙은 종종 패키지/인터페이스/클래스 이름을 포함합니다. –