1.1 JSR INTRODUCTION
JSR stands for Java Specification Request and it is a formal document of specifications or any change requests of any new/ existing technology added in Java platform. For each technology like JSP/Servlets, Annotation based Validations also known as Bean Validations, Portlet , EJB,JDO etc a separate JSR has been added.
Every specification or modification has been submitted and reviewed by a community.
Each JSR is assigned a unique number. For example Bean Validation is JSR 303, Portlets are JSR 168/286. Similarly for Servlet 3.0 version it is JSR 315.
1.2 WHAT IS THERE IN JSR?
For each new technology, Oracle(Sun Micro Systems) produces a set of specifications and a reference implementation of that specification.
Note- Specification means it is a set of guidelines and not an implementation.
Below are the couple of examples of any specification are [These are just an examples to make the things clear and not a part of actual specifications]
a) All Servlets have to implement one specific interface.
b) Servlets must be instantiated at the time of application deployment.
1.3 JSR IMPLEMENTATION
If JSR is the specification then who implements these specifications?
It is the responsibility of the vendors to implement and follow what is there in JSR. By vendor we mean the servers or libraries like Apache, Weblogic, JBoss etc. So if any server claims to be a particular specification compliant then it means that the server obeys and provides the implementation of that specification.
All servers that claim to be a certain specification compliant means those servers provide a common behaviour (doesn’t matter how they implement it). This is the key of portability and since this is a specification, custom code can be easily ported on another server.