Sobre a JSR 339 para Web Services RESTful – JAX-RS 2.0 |
← Exemplo Spring Framework utilizando o módulo Batch
Comparativo entre frameworks Action Based (Spring MVC) e Component Based (JSF) →
Sobre a JSR 339 para Web Services RESTful – JAX-RS 2.0
Publicado em 5 de janeiro de 2017 por Evaldo Junior
Está é uma tradução e interpretação da especificação da JSR 339 – JAX-RS 2.0 – A API Java para Web Services RESTful.
JSRs: Solicitações de Especificação Java
JSR 339: JAX-RS 2.0: A API Java para Web Services
Seu status atual é de manutenção.
A versão atual em uso é a 2.9.
A versão atual do Contrato de Participação da Especificação Java é o 2.0.
Os líderes da especificação são: Santiago Pericasgeertsen e Marek Potociar, ambos da Oracle.
O Grupo de Especialistas é composto por :
Jan Algermissen, Adam Bien, Clinton L Combs, Bill De Hora, Markus Karg, Guilherme de Azevedo Silveira, Synodinos, Dionysios G., Julian Reschke;
Sastry Malladi do eBay;
Jian Wu Daí da IBM;
Santiago Pericasgeertsen e Marek Potociar da Oracle;
Florent Benoit do OW2;
Bill Burke da RedHat;
Sergey Beryozkin da Talend;
Colaboradores: nenhum
Boletim de Revisão de Manutenção
Revisão do Rascunho de Manutenção
Boletim de Aprovação Final
Projeto Final Proposto
Boletim de Revisão Pública
Esboço Antecipado 3
Esboço Antecipado 2
Esboço Antecipado
Formação de Grupo de Especialistas
JSR Revisão de Boletim
Estatus: Manutenção
Versão do JCP em uso: 2.9
Versão do Contrato de Participação de Especificação Java em uso: 2.0
Este JSR desenvolverá a próxima versão do JAX-RS, a API para serviços Web RESTful (Representação de Estado de Transferência) na Plataforma Java.
Transparência do Grupo de Peritos:
Rastreamento de Emissão
Atualizações para o JSR Original
O o que segue foi atualizado a partir da proposta original:
2.18 Forneça uma descrição dos termos comerciais para a Especificação, RI e TCK que serão aplicáveis quando este JSR for final.
Licença de especificação
O RI estará disponível para uso comercial sob a licença de código aberto CDDL 1.1, com a licença de código aberto GPLv2 com Classpath Exception, ou esta licença RI.
O RI estará disponível para uso não-comercial sob a licença de código aberto CDDL 1.1, ou a licença de código aberto GPLv2 com Classpath Exception.
Licença TCK
O TCK estará disponível para uso comercial sob esta licença TCK.
Conforme exigido pelo Acordo de Participação de Especificação de Java (JSPA), o TCK será licenciado sem nenhum custo sem apoio a qualificados sem fins lucrativos. O Programa de Bolsas de Estudo de Compatibilidade verificará essa qualificação. O apoio também pode ser fornecido gratuitamente com a aprovação da bolsa de estudos. Para obter mais informações, consulte: http://www.oracle.com/technetwork/java/index-137188.html
2012.02.09:
O líder de especificações e o grupo de especialistas transferiram o JSR para JCP 2.8.
2.19 Descreva o canal de comunicação que estabeleceu para que o público possa observar as deliberações do Grupo de Peritos, fornecer feedback e ver os arquivos de todas as comunicações do Grupo de Especialistas.
http://java.net/projects/jax-rs-spec/lists
2.20 Qual é o URL do Issue Tracker que o público pode ler, e como o log público causa problemas no Issue Tracker?
2.21 Indique a localização do arquivo de documentos acessível ao público que você criou para o Grupo de Especialistas.
http://java.net/projects/jax-rs-spec/downloads
Líderes de Epecificação: Santiago Pericas-Geertsen, Marek Potociar
2011.02.22:
Líderes de Especificação: Roberto Chinnici, Marek Potociar
Pedido de Especificação Java Original (JSR)
Identificação | Pedido | Contribuições
Seção 1. Identificação
NOTA: esta informação foi atualizada a partir desta proposta original.
Composição inicial do grupo de peritos:
Apoiam esta JSR:
Seção 2: Solicitação
2.1 Descreva a especificação proposta:
O recurso mais solicitado para o JAX-RS 2.0 é uma API de cliente: muitas, se não todas, as implementações do JAX-RS fornecem algum grau de suporte da API do cliente. Este JSR definirá duas APIs de cliente, ambas compatíveis com o estilo REST: uma API de baixo nível usando um padrão de construtor e um nível mais alto, alavancando o anterior. Mecanismos de segurança comuns também serão especificados. A API não definirá como as implementações de cliente HTTP, como HttpUrlConnection ou a biblioteca de cliente HTTP Apache, serão conectadas à API. A API suporta processamento de resposta síncrono e assíncrono. WebSocket ou HTTP processamento de fluxo de respostas estão fora do escopo para este JSR e será tratado em uma revisão futura do JAX-RS.
Hypermedia é uma característica muito importante de aplicações Web RESTful. JAX-RS 1.1 forneceu algum suporte básico para construção de URIs, mas este JSR irá definir uma maneira de criar e processar facilmente links associados a recursos em representações como cabeçalhos de links ou links dentro do corpo da entidade. Da mesma forma, no cliente será possível extrair links em representações e fazer outras solicitações de acordo com esses links.
Model-View-Controller (MVC) é um padrão comum em estruturas da Web, onde é usado predominantemente por aplicativos baseados em HTML. Adotando a terminologia MVC, as classes de recursos JAX-RS são comparáveis aos controladores. Este JSR especificará uma arquitetura MVC compatível com o modelo de programação JAX-RS. As Páginas de Servidor Java serão especificadas como um tipo de exibição. Será possível ligar outras tecnologias de visualização, por exemplo, FreeMarker ou StringTemplate.
O JAX-RS 1.1 tem suporte limitado para validação de parâmetros. Este JSR tornará possível validar um conjunto de parâmetros, como parâmetros de formulário ou consulta, e retornar uma resposta significativa no caso de falha na validação. A API primária utilizada para validação será a API de Validação de Beans.
JAX-RS 1.1 foi definido antes de JSR-330 foi especificado e como resultado não utiliza 330 anotações, como @Inject, tão eficazmente quanto poderia. Este JSR irá especificar a integração mais próxima com 330 anotações que potencialmente podem renderizar algumas anotações existentes no JAX-RS, como @Context, obsoletas ou redundantes.
O JAX-RS 1.1 define um modelo de resposta de solicitação síncrona no lado do servidor. Este JSR especificará um modelo de processamento de solicitação assíncrona simples de modo que uma resposta possa ser retornada assíncrona à solicitação. O Servlet 3.0 pode ser alavancado para permitir esse suporte, mas as implementações podem optar por usar outras APIs específicas de contêiner.
No JAX-RS 1.1, a negociação de conteúdo é conduzida principalmente pelo cliente usando o parâmetro "q" no cabeçalho Aceitar. Este JSR irá adicionar suporte para um equivalente do lado do servidor dele, "qs", para dar ao servidor mais dizendo na representação selecionada; O algoritmo de negociação de conteúdo na especificação JAX-RS existente será atualizado de modo a manter determinismo e compatibilidade entre implementações.
Esta JSR também fará melhorias na JSR na área de facilidade de utilização, e. Seguindo mais de perto o princípio do não repetir. Ele também irá corrigir qualquer número de bugs descobertos no JAX-RS 1.1.
Como mencionado acima, o suporte assíncrono para HTTP longo de votação, Comet e Web Sockets está fora do escopo para esta versão. Pretendemos abordar-lo em uma futura revisão da especificação JAX-RS.
2.2 Qual é a plataforma Java alvo? (Isto é, desktop, servidor, pessoal, incorporado, cartão, etc.)
Esta especificação é direcionada para Java SE 6.0 ou superior e Java EE 6 ou plataformas superiores.
2.3 Os Comitês Executivos gostariam de garantir que os apresentadores da JSR pensem sobre como a tecnologia proposta está relacionada a todas as edições da plataforma Java. Forneça detalhes aqui para quais edições de plataforma estão sendo segmentadas por este JSR e como este JSR considerou o relacionamento com as outras edições da plataforma.
Este JSR estará disponível autônomo. Também é alvo de inclusão na plataforma Java EE 7. Além disso, os produtos Java EE 6 poderão implementar JAX-RS 2.0 em vez de JAX-RS 1.1.
2.4 Esta JSR deve ser votada por ambas as Comissões Executivas?
Não. Apenas pela SE / EE EC.
2.5 Que necessidade da comunidade Java será abordada pela especificação proposta?
Ver 2.1 acima.
2.6 Por que essa necessidade não é atendida pelas especificações existentes?
2.7 Dê uma breve descrição da tecnologia ou tecnologias subjacentes:
2.8 Existe um nome de pacote proposto para a Especificação da API? (Isto é, algo de javapi, algo org., Etc.)
O JAX-RS 2.0 usará o mesmo nome do pacote como JAX-RS 1.1, ou seja, javax.ws.rs.
2.9 A especificação proposta tem alguma dependência em sistemas operacionais específicos, CPUs ou dispositivos de E/S que você conhece?
2.10 Há algum problema de segurança que não possa ser resolvido pelo modelo de segurança atual?
Não. Esta JSR alavancará os mecanismos de segurança HTTP existentes.
2.11 Há problemas de internacionalização ou de localização?
Este JSR usará o suporte I18N em Java SE.
2.12 Existem especificações existentes que possam ser tornadas obsoletas, obsoletas ou que necessitem de revisão como resultado deste trabalho?
2.13 Descreva o calendário previsto para o desenvolvimento desta especificação.
Jan 2011 Grupo de peritos formado
Q4 2011 Revisão pública
Q2 2012 Versão Final
2.14 Descreva o modelo de trabalho previsto para o grupo de peritos que trabalha no desenvolvimento desta especificação.
O principal meio de comunicação será o e-mail, com teleconferências e reuniões presenciais programadas conforme necessário. Solicitaremos feedback da comunidade e alavancaremos o modelo de desenvolvimento de código aberto.
2.15 Forneça respostas detalhadas à lista de verificação de transparência, certificando-se de incluir URLs conforme apropriado:
O JAX-RS 2.0 seguirá o mesmo modelo de trabalho do JAX-RS 1.0 / 1.1 (JSR-311). Em particular, um local do projeto será usado para rastrear todas as questões e disseminar informações sobre o andamento da JSR. Veja o projeto JSR-311 no java.net para mais detalhes sobre como o JAX-RS 1.0 foi executado.
- O público pode ler os nomes das pessoas no Grupo de Peritos.
Essas informações estarão na página do projeto para o JSR. Também fará parte de cada projeto de especificação.
- O negócio do Grupo de Peritos é regularmente reportado num alias publicamente legível.
O grupo de peritos conduzirá negócios em um apelido publicamente legível. Um alias particular será usado apenas para informações confidenciais do EG, conforme necessário.
- O cronograma para o JSR está disponível ao público, é atual, e eu atualizá-lo regularmente.
O cronograma estará disponível na página do projeto para o JSR.
- O público pode ler/escrever em um wiki para o meu JSR.
Usaremos uma lista de discussão pública para comentários.
- Eu li e respondo a postagens no quadro de discussão do meu JSR no jcp.org.
Seguiremos essas discussões e responderemos a elas ou redirecionamos os usuários para a lista de discussão de comentários públicos.
- Há um problema-rastreador para o meu JSR que o público pode ler.
Sim, será acessível a partir da página do projeto JSR.
- Falei em conferências e eventos sobre o meu JSR recentemente.
Sim, mais recentemente no JavaOne 2010 e Devoxx 2010.
- Estou usando processos open-source para o desenvolvimento do RI e / ou TCK.
Sim, a Implementação de Referência será desenvolvida como parte do Projeto Jersey. O RI final estará disponível na página de download.
- A guia Atualização para o meu JSR tem links e informações sobre todos os mecanismos de comunicação pública e sites para o desenvolvimento do meu JSR.
Ele irá apontar para a página do projeto para o JSR.
2.16 Descreva como o RI e TCK serão entregues, ou seja, como parte de um perfil ou edição de plataforma, ou stand-alone, ou ambos. Inclua informações sobre a versão do perfil ou da plataforma na sua resposta.
A implementação de referência será disponibilizada de forma autônoma e também como parte da implementação de referência para a plataforma Java EE 7. O TCK será disponibilizado autônomo e como parte do Java EE CTS.
2.17 Indique se as versões anteriores estão disponíveis autônomas e você está propondo agora em 2.13 para entregar apenas RI e TCK como parte de uma edição de perfil ou plataforma (ver seções 1.1.5 e 1.1.6 do documento JCP 2) .
Licença da Especificação
Seção 3: Contribuições
3.1 Faça uma lista de todos os documentos, especificações ou implementações existentes que descrevam a tecnologia. Inclua links para os documentos se eles estiverem disponíveis ao público.
3.2 Explicação de como esses itens podem ser usados como ponto de partida para o trabalho.
A especificação JAX-RS 1.1 será o ponto de partida para este trabalho.
Segue o link do texto original: https://jcp.org/en/jsr/detail?id=339
Segue o link do arquivo em formato pdf da última versão ofical da biblioteca JAX-RS: Java API for RESTful Web Services Download
Esta entrada foi publicada em Java EE, Plataforma Java. Adicione o link permanenteaos seus favoritos.