Java Specification Requests (JSR)

Introdução
Especificações JSR são documentos contendo descrições detalhadas de especificações a respeito da plataforma Java, isto é, não são implementações ou frameworks em si, mas normas a serem seguidas por quem deseja fabricar um fornecedor (seja uma biblioteca, seja um serviço, etc) de um recurso presente no ambiente Java.
 * Lista contendo todas as especificações Java (JSR);

Exemplo de aplicação de uma especificação JSR
Há alguns anos o framework Hibernate (mais utilizado hoje como camada de persistência de dados) foi desenvolvido e em pouco tempo se tornou muito popular. Ao mesmo tempo, havia a necessidade de substituir a camada de persistência composta por Entity Beans no EJB (Enterprise Java Bens) na plataforma J2EE.

Com isso, Sun desenvolveu uma especificação capaz de cobrir grande parte das necessidades de mapeamento relacional e de camadas de persistências de dados, a JPA (Java Persistence API (cuja versão mais recente está em JSR 317: JavaTM Persistence 2.0).

As versões mais recentes do Hibernate já atendem às normas da JPA, assim como outros frameworks semelhantes (OpenXava, por exemplo).

Ignorando os detalhes do exemplo acima, o que é necessário entender para uma prova de concurso é que a JSR não é um framework ou implementação, ou biblioteca, etc, mas sim um conjunto de especificações, que são documentos contendo normas ou requisitos a serem seguidas para se produzir uma API, por exemplo. Daí o nome Java Specification Requests (JSR).

Especificações Importantes
As especificações abaixo estão presentes na maioria dos concursos públicos de TI e merecem ser estudadas:
 * Portlets (JSR 168 e JSR 286);
 * Java Messaging System (JMS) (JSR 914);