What is the difference (or relation) between JLS, JSR and JEP?
Asked Answered
S

1

49

What is the difference (or relation) between these three?

Sanitary answered 11/7, 2018 at 9:48 Comment(3)
The names speak for themselves.Seiber
Read JEP 1Kinelski
Look up the difference between 'specification' and 'request' and 'proposal'.Heeley
E
92

Some people think that it is simply a matter of what the words mean. I think there is more to it than that, but let us start with the words.

In the general context:

  • A specification is a document that specifies (or defines) something.
  • A request is statement (written or verbal) asking for something.
  • A proposal is a statement (written or verbal) putting forward something to be considered.

As you can see, the plain English meanings of these words themselves don't help a lot. We need more context. In this case, the context is in the pages you linked to.

Java Language Specification, JLS

This is the official specification for the Java Language. The JLS specifies the syntax for the Java programming language and other rules that say what is or is not a valid Java program. It also specifies what a program means; i.e. what happens when you run a (valid) program.

Java Specification Request, JSR

A JSR is a document created as part of the Java Community Process (JCP) that is setting the scope for a team of people to develop a new specification. These specifications are (AFAIK) always Java related, but they frequently address things that are not going to be core Java SE or Java EE technology. A typical JSR's subject material is a relatively mature technology; i.e. on that is in a state that can be specified. (If you try produce a specification too early, then you typically end up with a bad spec. Other things can lead to that too.)

Java Enhancement Proposal, JEP

A JEP is a document that is proposing an enhancement to Java core technology. These proposals are typically for enhancements that are not ready to be specified yet. As the JEP-1 document explains, JEPs may call for exploration of novel (even "whacky") ideas. Generally speaking, prototyping will be required to separate the viable and non-viable ideas and clarify them to the point where a specification can be produced.

So the relationship between JEPs, JSRs and specifications is like this:

  1. JEPs propose and develop experimental ideas to the point where they could be specified. Not all JEPs come to fruition.

  2. JSRs take mature ideas (e.g. resulting from a JEP), and produce a new specification, or modifications to an existing specification. Not all JSRs come to fruition.

  3. A specification is a common work product of a JSR. (Others include source code of interfaces, and reference implementations.) The JLS is an example of a specification. Others include the JVM specification (JVMS), the Servlet and JSP specifications, the EJB specifications and so on.

Expansile answered 11/7, 2018 at 13:25 Comment(1)
Thanks! I was not able understand the relation between them. Which comes first and which later. It got clear by relations #1, #2 #3 in your answer. It might be very basic and simple for people actually working closely with these processes but for someone like me who is just an user of JDK, this was very confusing.Sanitary

© 2022 - 2024 — McMap. All rights reserved.