Specification, Request, Proposal의 (개발 용어가 아닌) 일반적으로 사용되는 단어의 뜻은 다음과 같다.
명세서(Specification)는 무언가를 문서로 구체화하는 것 또는 정의하는 것이다.
요청(Request)은 무언가를 요청하기 위해 쓰거나 말하는 것이다.
제안(Proposal)은 무언가 결정되어야 하는 것에 대해 쓰거나 말하는 것이다.
위의 문장에서 보듯 명세서(specification), 요청(request), 제안(proposal)과 같은 일반 영어 단어들의 뜻이 실제로 도움이 되진 않는다. 이 경우엔 자바 내에서 사용되는 것에 맞게 문맥을 확인해야 한다.
자바 언어 명세서(Java Language Specification, JLS)
자바 언어의 명세서를 뜻한다. JLS는 자바 프로그래밍 언어를 위한 문법과 정상적인/비정상적인 규칙들을 보여준다. 그리고 정상적인 프로그램을 실행하기위한 프로그램 방법들도 보여준다.
자바 요청 명세서(Java Specification Request, JSR)
JSR은 자바 커뮤니티 프로세스(JCP, Java Community Process)의 새 명세를 만들기 위해 구성된 팀원들을 위해 만들어진 문서다. 내가 알기로 이 명세들은 항상 자바와 관련되어있지만 때론 명세들이 Java SE 또는 Java EE 기술의 핵심이 되지는 않는다. 일반적인 JSR의 주제는 이미 성숙된 기술과 관련이 있다. 다시 말해서 분류될 수 있는 상태에 있다. (일반적으로 당신이 명세를 너무 일찍 공급한다면 안좋은 명세가 된다. 다른 것들 또한 마찬가지다.)
자바 강화 제안(Java Enhancement Proposal, JEP)
JEP는 자바 코어 기술을 강화하기위한 제안 문서다. 이 제안들은 대부분 명세로 정리할 상태가 아니다. JEP-0 문서에 따르면 JEP들은 (독특한 생각들을 포함한)새로운 생각들에 대한 탐험이라 불린다. 일반적으로 실행 가능한 것과 실행 불가능한 것들을 나누고 명세가 생성될 수 있는 지점까지 명확하게 하기 위해 프로토타이핑(시제품 제작)이 필요하다.
JEP, JSR, 명세(specification)의 관계는 다음과 같다.
JEP는 실험적인 생각들을 JEP로 만들수 있는 상태까지 제안하고 개발한다. 모든 JEP가 결과로 나오지는 않는다.
JSR들은 생각을 발전시켜서(예 : JEP로부터 결과 획득) 새 명세를 생산하거나 만들어진 명세를 수정한다. 모든 JSR이 결과로 나오지는 않는다.
명세는 JSR의 공동 작업 결과물이다. 어떤 결과물은 인터페이스, 구현체 참조 코드를 포함한다. JLS는 명세의 예시다. 어떤 결과물은 JVM 명세, 서블릿(Servlet), JSP(Java Server Page), EJB(Enterprise Java Bean) 명세 또는 그 외의 것들을 포함한다.
원문 : stackoverflow.com/questions/51282326/what-is-the-difference-or-relation-between-jls-jsr-and-jep