Jakarta EE
Jakarta EE , anteriormente Java Platform, Enterprise Edition (Java EE), é a especificação de uma arquitetura de software para a execução baseada em transações de aplicativos programados em Java e especialmente aplicativos web . É uma das principais plataformas que disputam o mercado de middleware . Maior concorrente é o .NET - plataforma da Microsoft .
A especificação define componentes de software e serviços que são criados principalmente na linguagem de programação Java. O objetivo da especificação é fornecer uma estrutura geralmente aceita para ser capaz de desenvolver aplicações distribuídas e multicamadas com base em componentes modulares . Interfaces claramente definidas entre os componentes e contêineres devem garantir que os componentes de software de diferentes fabricantes sejam interoperáveis, caso cumpram a especificação, e que o aplicativo distribuído seja facilmente escalonável .
Os componentes da especificação "Java Platform, Enterprise Edition" foram desenvolvidos dentro do Java Community Process por várias empresas e finalmente disponibilizados ao público na forma de um documento e uma implementação de referência. As especificações futuras serão disponibilizadas como Eclipse Jakarta EE Platform como parte do projeto Eclipse Foundation EE4J , incluindo implementação de referência, Technology Compatibility Kit (TCK) e tutorial.
Versões prévias
Plataforma Eclipse Jakarta EE - versões Eclipse EE4J
A "Java Platform, Enterprise Edition, v 8", incluindo o Technology Compatibility Kit (TCK) e a implementação de referência GlassFish , foi entregue à Eclipse Foundation pela Oracle e o projeto EE4J foi fundado lá. Este desenvolve, coordena e publica a Plataforma Eclipse Jakarta EE .
Naquela época, a Eclipse Foundation e a Oracle não haviam feito um acordo sobre os direitos de nomenclatura para Java e o namespace técnico associado, o que foi resolvido em 2019 com a renomeação da versão em Jakarta.
Java Platform, Enterprise Edition - versões Java Community Process sob a direção da Oracle
Até e incluindo a versão 8, a plataforma Java EE foi desenvolvida, coordenada e publicada com o Java Community Process sob a gestão de especificações da Oracle . Outras versões não aparecerão com este processo e sob esta orientação.
A versão da especificação Java EE é a versão 8.0.
O novo nome da especificação é Java Platform, Enterprise Edition , Java EE abreviado [ ˈdʒɑːvə ˌiːˈiː ]. Isso substitui a abreviatura anterior J2EE [ ˌdʒeɪˈtuː ˌiːˈiː ] ( Java 2 Platform, Enterprise Edition ).
| versão | Nome completo | Data de publicação do lançamento final |
|---|---|---|
| 1.0 | Java 2 Platform Enterprise Edition, v 1.0 | Dezembro de 1999 |
| 1,2 | Java 2 Platform Enterprise Edition, v 1.2 | 2000 |
| 1.2.1 | Java 2 Platform Enterprise Edition, v 1.2.1 | 23 de maio de 2000 |
| 1,3 | Java 2 Platform Enterprise Edition, v 1.3 | 24 de setembro de 2001 |
| 1,4 | Java 2 Platform Enterprise Edition, v 1.4 | 24 de novembro de 2003 |
| 5 | Plataforma Java, Enterprise Edition, v 5 | 11 de maio de 2006 |
| 6º | Plataforma Java, Enterprise Edition, v 6 | 10 de dezembro de 2009 |
| 7º | Plataforma Java, Enterprise Edition, v 7 | 12 de maio de 2013 |
| 8º | Plataforma Java, Enterprise Edition, v 8 | 18 de setembro de 2017 |
Em seguida, as versões seguiram:
- Jakarta EE 8 (2019), versão totalmente compatível com Java Platform, Enterprise Edition, v 8
- Jakarta EE 9 (2020)
- Jakarta EE 9.1 (2021)
A infraestrutura
Os componentes do Jakarta EE requerem uma infraestrutura especial como um ambiente de tempo de execução , o chamado Jakarta EE Application Server . Este servidor fornece infraestrutura técnica, como
- Segurança,
- Gestão de transações ,
- Serviços de nome e diretório ,
- Comunicação entre os componentes do Jakarta EE ,
- Serviços de persistência para armazenamento de longo prazo de objetos Java,
- Gerenciamento dos componentes ao longo de todo o ciclo de vida (incluindo instanciação ),
- Suporte de instalação ( implantação )
à disposição. Além disso, o servidor encapsula o acesso aos recursos do sistema operacional subjacente (sistema de arquivos, rede, ...).
Um servidor Jakarta EE é dividido em vários sistemas lógicos. Eles são chamados de contêineres . A especificação atual requer os seguintes contêineres:
- um contêiner EJB como um ambiente de execução para Jakarta Enterprise Beans
- um contêiner da web como um ambiente de tempo de execução para Jakarta Servlets e Jakarta Server Pages (JSP)
- um contêiner JCA como um ambiente de tempo de execução para conectores JCA . Isso não é definido explicitamente, mas na verdade todo fabricante de servidor de aplicativos deve implementá-lo. Porque as restrições são definidas em Jakarta Enterprise Beans (EJB) e no contêiner da web, que não se aplicam ao ambiente de tempo de execução JCA. Isso inclui, por exemplo, iniciar threads ou ler e gravar arquivos, etc.
- um provedor JMS como um sistema de gerenciamento para filas de mensagens.
Numerosas implementações para servidores Jakarta EE estão disponíveis, algumas proprietárias , algumas na forma de soluções de código aberto disponíveis gratuitamente (por exemplo, WildFly ). Uma implementação de referência é fornecida pela Eclipse Foundation . Deve-se observar que nem todos os servidores atendem totalmente às especificações Jakarta EE. No entanto, Oracle e Eclipse publicam uma lista de servidores atualmente certificados para cada versão.
Um sistema de gerenciamento de banco de dados (DBMS) é usado como um componente de infraestrutura adicional para o armazenamento persistente de dados . Este pode ser um sistema relacional ou um sistema comparável, como um OODBMS . Os sistemas de gerenciamento de banco de dados geralmente são conectados por meio de um driver JDBC .
O acesso do lado do cliente a um aplicativo Jakarta EE geralmente ocorre por meio de um navegador , mas os clientes do aplicativo (aplicativos Java, componentes CORBA , clientes de serviço da web ) também são comuns.
APIs importantes
As APIs Jakarta EE contêm várias tecnologias que estendem ou substituem a funcionalidade da API Java SE básica . Além dos nomes atuais, os nomes antigos também são fornecidos na tabela.
| Nome e abreviatura | Descrição | J2EE 1.4 | Java EE 5 | Java EE 6 | Java EE 7 | Java EE 8 |
|---|---|---|---|---|---|---|
| Jakarta Enterprise Beans (EJB), anteriormente Enterprise JavaBeans | conter a lógica de negócios de um aplicativo corporativo ou permitir acesso a dados persistentes. Os grãos são executados em um contêiner EJB . Existem três tipos diferentes de EJBs:
|
sim (2,1) | sim (3,0) | sim (3,1) | sim (3,2) | sim (3,2) |
| Jakarta Servlet , anteriormente Java Servlet | geralmente permite a extensão de servidores cujo protocolo é baseado em solicitações e respostas. Os servlets são usados principalmente em conexão com o protocolo de transferência de hipertexto (HTTP), onde vivem em um contêiner da web e respondem a solicitações de navegadores da web . | sim (2,4) | sim (2,5) | sim (3,0) | sim (3,1) | sim (4,0) |
| Jakarta Server Pages (JSP), anteriormente JavaServer Pages | são documentos de texto que consistem, por um lado, em texto estático e, por outro lado, em elementos de texto dinâmicos - os elementos JSP. As páginas JSP são convertidas de forma transparente em um servlet pelo contêiner da web. | sim (2,0) | sim (2,1) | sim (2,2) | sim (2,3) | sim (2,3) |
| Serviços da Web (WS) | definir interfaces para EJBs que podem ser claramente identificadas com um Uniform Resource Identifier (URI) e cujas interfaces podem ser definidas, descritas e encontradas como artefatos XML. | sim (1.0) | sim (1,2) | sim (1,3) | sim (1,4) | sim (1,4) |
| Java Naming and Directory Interface (JNDI) | é uma interface comum com a qual todas as classes Java podem acessar serviços de nome e diretório. Em particular, o acesso aos componentes Java EE é garantido via JNDI. | sim (1,2) | sim (1,2) | sim (1,2 SE) | sim (1,2 SE) | sim (1,2 SE) |
| Jakarta Messaging (JMS), anteriormente Java Message Service | é uma API para processamento de mensagens assíncronas. | sim (1,1) | sim (1,1) | sim (1,1) | sim (2,0) | sim (2,0) |
| Jakarta Transactions API (JTA), anteriormente Java Transaction API | permite que o aplicativo controle o gerenciamento de transações. JTA é a interface Java para monitores de transação . Por padrão, essa interface é implementada pelo Java Transaction Service (JTS), que fornece uma interface para o CORBA Object Transaction Service (OTS). | sim (1.0.1B) | sim (1,1) | sim (1,1) | sim (1,2) | sim (1,2) |
| Serviço de autenticação e autorização Java (JAAS) | é uma API Java que permite que serviços de autenticação e direitos de acesso sejam fornecidos em programas Java. O JAAS implementa um Módulo de Autenticação Pluggable (PAM) padrão e, por meio desse módulo, suporta autenticação simples e autorização baseada no usuário . | sim (1.0) | sim (1.0) | sim (1.0) | sim (1.0) | sim (1.0) |
| Jakarta Mail , anteriormente JavaMail | permite o acesso a serviços de e-mail, como B. SMTP , POP3 ou IMAP . | sim (1,2) | sim (1,4) | sim (1,4) | sim (1,5) | sim (1,6) |
| Jakarta XML Binding (JAXB), anteriormente Java Architecture for XML Binding | permite que um esquema XML seja vinculado diretamente às classes Java. Oficialmente, era necessário apenas a partir do Java EE versão 1.5, mas pode já ser compatível antes disso. | não | sim (2,0) | sim (2,2) | sim (2,2) | sim (2,2) |
| API Java para processamento XML (JAXP) | ajuda o desenvolvedor a editar documentos XML . | sim (1,2) | sim (1,3) | sim (1,4 (SE)) | sim (1,4 (SE)) | sim (1,4 (SE)) |
| Jakarta XML RPC (JAX-RPC), anteriormente Java API para RPC baseado em XML | permite o acesso remoto a serviços RPC . | sim (1.0) | sim (1,1) | sim (1,1) | sim (1,1) | sim (1,1) |
| Jakarta RESTful Web Services (JAX-RS), anteriormente Java API para RESTful Web Services | não | não | sim (1,1) | sim (2,0) | sim (2,1) | |
| API Java para registros XML (JAXR) | serve para garantir o acesso transparente aos chamados registros de negócios, como ebXML ou um diretório baseado em UDDI . | sim (1.0) | sim (1.0) | sim (1.0) | sim (1.0) | sim (1.0) |
| Contrato de Autorização Java para Contêineres (JACC) | define várias diretrizes de segurança para os vários contêineres Java EE. | sim (1.0) | sim (1,1) | sim (1,4) | sim (1,5) | sim (1,5) |
| Jakarta Connectors (JCA), anteriormente conhecido como J2EE Connector Architecture | serve para integrar outros sistemas de forma transparente (palavra-chave: EAI ). | sim (1,5) | sim (1,5) | sim (1,6) | sim (1,7) | sim (1,7) |
| JavaBeans Activation Framework (JAF) | oferece a possibilidade de reconhecer diferentes dados com base no cabeçalho MIME . | sim (1.0) | sim (1,1) | sim (1,1) | sim (1,1) | sim (1,1) |
| Jakarta XML Web Services (JAX-WS), anteriormente Java API para XML Web Services | ajuda a criar serviços da web e clientes associados que se comunicam via XML , por ex. B. via SOAP . | não | sim (2,0) | sim (2,2) | sim (2,2) | sim (2,2) |
| Metadados de serviço da web | descreve serviços da web com anotações Java | não | sim (2,0) | sim (2,1) | sim (2,1) | sim (2,1) |
| Jakarta Persistence API (JPA), anteriormente Java Persistence API | fornece uma interface uniforme e independente de banco de dados para mapeamento relacional de objetos e trabalho com entidades . | não | sim (1.0) | sim (2,0) | sim (2,1) | sim (2,2) |
| API de streaming para XML (StAX) | é um processamento XML baseado em cursor, além dos analisadores DOM e SAX | não | sim (1.0) | sim (1.0) | sim (1.0) | sim (1.0) |
| Jakarta Server Faces (JSF), anteriormente JavaServer Faces | é usado para integrar componentes para interfaces de usuário em sites e para definir a navegação. | não | sim (1,2) | sim (2,0) | sim (2,2) | sim (2,3) |
| Linguagem de expressão (EL) | não | não | sim (2,2) | sim (3,0) | sim (3,0) | |
| Jakarta Standard Tag Library (JSTL), anteriormente JavaServer Pages Standard Tag Library | é uma coleção de tags JSP para estruturação, XML, SQL , internacionalização e assim por diante | não | sim (1,2) | sim (1,2) | sim (1,2) | sim (1,2) |
| Contextos e injeção de dependência (CDI) | é uma técnica para definir campos de acordo com o princípio de inversão de controle . Ele permite que o desenvolvedor combine diferentes contextos técnicos entre si. Ele também conecta JSF com EJB. | não | não | sim (1.0) | sim (1,2) | sim (2,0) |
| API Java para WebSocket (WebSocket) | Usa WebSockets para enviar mensagens para aplicativos de navegador JavaScript a partir de processos Java em execução no lado do servidor. | não | não | não | sim (1.0) | sim (1,1) |
| API Java para processamento JSON (JSON-P) | não | não | não | sim (1.0) | sim (1,1) | |
| Aplicativos em lote para plataformas Java (lote) | não | não | não | sim (1.0) | sim (1.0) | |
| Validação de feijão | não | não | sim (1.0) | sim (1,1) | sim (2,0) | |
| Feijões gerenciados | não | não | sim (1.0) | sim (1.0) | sim (1.0) | |
| Utilitários de simultaneidade para Java EE | não | não | não | sim (1.0) | sim (1.0) | |
| Interceptores | não | não | sim (1,1) | sim (1,2) | sim (1,2) | |
| Anotações comuns para a plataforma Java | não | não | sim (1,1) | sim (1,2) | sim (1,3) | |
| Interface do provedor de serviços de autenticação para contêineres (JASPIC) | não | não | sim (1.0) | sim (1,1) | sim (1,1) | |
| API Enterprise Edition Management | não | não | sim (1,1) | sim (1,1) | sim (1,1) | |
| API Enterprise Edition Deployment | não | não | sim (1,2) | sim (1,2) | sim (1,2) | |
| API de segurança Java EE | não | não | não | não | sim (1.0) |
Implementações
Uma implementação do padrão Jakarta EE também pode ser certificada pela Oracle para a respectiva versão. Isso confirma a compatibilidade básica dos aplicativos entre os servidores. No entanto, na prática, muitas vezes acontece que portar um aplicativo de um servidor Jakarta EE para outro está associado a problemas. Bibliotecas dependentes do fabricante às vezes são usadas inconscientemente.
Servidores Jakarta EE completos
O status atual da certificação (de acordo com o Oracle TCK) é dado entre colchetes.
Servidor de código aberto
- Apache Geronimo (usa Apache Tomcat ou Jetty ) (Java EE 6 Full Profile e Web Profile)
- WildFly (anteriormente JBoss) ( Apache Tomcat ou Undertow) (Java EE 8 Full Profile e Web Profile, Jakarta EE 8 Full Profile)
- JOnAS (usa Apache Tomcat ou Jetty ) (Java EE 6 Web Profile)
- GlassFish (Java EE 8 Perfil Completo e Perfil da Web, Jakarta EE 8 Perfil Completo e Perfil da Web)
- Payara Server (Jakarta EE 8 Full Profile)
- Open Liberty (Jakarta EE 8 Perfil Completo e Perfil da Web)
Servidores comerciais
- ATG Dynamo Application Server (DAS) (Java EE 1.3)
- Oracle WebLogic desde a aquisição da BEA pela Oracle em 2008 (Java EE 7 Full Profile)
- Servidor de aplicativos Oracle (Java EE 5)
- Servidor de aplicativos Orion
- Servidor de aplicativos SAP NetWeaver (Java EE 5)
- SAP Cloud Platform (Java EE 7 Web Profile)
- IBM WebSphere Application Server (WAS) (Java EE 8 Full Profile e Web Profile)
- JBoss EAP (Java EE 8 Full Profile e Web Profile)
Distribuição de servidores Jakarta EE
Em 2007, o seguinte número de usuários de servidores Java EE conhecidos foi publicado. Em Usuários, você encontra o número de empresas e organizações que licenciaram o respectivo servidor ou, no caso da JBoss, celebraram um contrato de manutenção . A JBoss estima que haja um total de 10.000 usuários da JBoss Enterprise Application Platform.
| Servidor Jakarta EE | Número de usuários |
|---|---|
| IBM WebSphere Application Server | 75.000 |
| Oracle Application Server | 32.000 |
| BEA WebLogic | 15.000 |
| Servidor de aplicativos SAP NetWeaver | 12.000 |
| Servidor de aplicativos SUN Sun Java System (GlassFish) | 3.000 |
| Servidor de aplicativos JBoss (WildFly) | 1.000 |
Contêiner da web separado (servlet / contêiner JSP)
Contêiner EJB separado
- Apache OpenEJB - Código Aberto
Outras plataformas Java
Veja também
literatura
- Alexander Salvanos: Desenvolvendo profissionalmente com Java EE 8 . Rheinwerk Verlag, 2018, ISBN 978-3-836-24353-7 .
- Alexander Salvanos: Desenvolvendo profissionalmente com Java EE 7 . Galileo Press, 2014, ISBN 978-3-8362-2004-0 .
- Bill Shannon, Mark Hapner, Vlada Matena: Java 2 Platform, Enterprise Edition . Addison-Wesley, 2000, ISBN 0-201-70456-0 .
- Inderjeet Singh, Beth Stearns, Mark Johnson: Projetando Aplicativos Corporativos com a Plataforma J2EE . 2ª Edição. Addison-Wesley, 2002, ISBN 0-201-78790-3 .
- Inderjeet Singh, Sean Brydon, Greg Murray: Projetando Web Services com a plataforma J2EE 1.4 . Addison-Wesley, 17 de junho de 2004, ISBN 0-321-20521-9 .
- Jason Hunter, William Crawford: Java Servlet Programming . 2ª edição. O'Reilly, 1 de abril de 2001, ISBN 0-596-00040-5 .
- Bruce W. Perry: Java Servlet & JSP Cookbook . O'Reilly, 1 de janeiro de 2004, ISBN 0-596-00572-5 .
- Hans Bergsten: JavaServer Pages . 3ª edição. O'Reilly, 1 de dezembro de 2003, ISBN 0-596-00563-6 .
- Marty Hall, Larry Brown: Servlets principais e páginas JavaServer . Prentice Hall PTR, 2004, ISBN 0-13-089340-4 .
- Richard Monson-Haefel, Bill Burke, Sacha Labourey: Enterprise JavaBeans . 4ª edição. O'Reilly, 30 de junho de 2004, ISBN 0-596-00530-X .
- Kevin Boone: Tecnologia Applied Enterprise JavaBeans . Prentice Hall PTR, 1 de dezembro de 2002, ISBN 0-13-044915-6 .
- Richard Monson-Haefel, David A. Chappell: Java Message Service . O'Reilly, 1 de dezembro de 2000, ISBN 0-596-00068-5 .
- Rahul Sharma, Beth Stearns, Tony Ng: Arquitetura do Conector J2EE e Integração de Aplicativos Corporativos . Addison-Wesley, 1 de dezembro de 2000, ISBN 0-201-77580-8 .
- Jonathan Bruce, Jon Ellis, Maydene Fisher: Tutorial e referência da API JDBC . 3. Edição. Addison-Wesley, 2003, ISBN 0-321-17384-8 .
- Rosanna Lee, Scott Seligman: Referência e tutorial da API JNDI . Addison-Wesley, 1 de junho de 2000, ISBN 0-201-70502-8 .
- Steve J. Perry: Extensões de gerenciamento Java . O'Reilly, julho de 2002, ISBN 0-596-00245-9 .
- Genender: Enterprise Java Servlets . Addison-Wesley, ISBN 0-201-70921-X .
Links da web
- Especificações atuais para Java EE Oracle, Inglês
- Site oficial do Java EE da Oracle, inglês
- Site oficial do Eclipse Enterprise for Java (EE4J) da Eclipse Foundation, Inglês
- Tutorial oficial do Java EE 6 da Oracle, inglês
- Eric Jendrock et al.: The Java EE 7 Tutorial. Oracle, setembro de 2014, acessado em 19 de fevereiro de 2015 (inglês, também disponível como JEETT [PDF]).
Evidência individual
- ↑ Christopher Guindon: Eclipse GlassFish 5.1 é lançado | A Fundação Eclipse. Recuperado em 5 de abril de 2019 .
- ↑ Heise online: O servidor de aplicativos GlassFish 5.1 prepara a mudança para Jakarta EE. Recuperado em 5 de abril de 2019 .
- ^ Wayne Beaton: Eclipse Jakarta EE TCK. 22 de maio de 2018, acessado em 5 de abril de 2019 .
- ^ Wayne Beaton: Eclipse GlassFish. 10 de maio de 2018, acessado em 5 de abril de 2019 .
- ^ Will Lyons: Antecedentes da contribuição da Oracle para Jakarta EE. 24 de abril de 2018, acessado em 5 de abril de 2019 .
- ↑ Wayne Beaton: EE4J FAQ | A Fundação Eclipse. Recuperado em 5 de abril de 2019 .
- ↑ Wayne Beaton: Eclipse EE4J. 24 de outubro de 2017, acessado em 5 de abril de 2019 .
- ↑ heise online: Jakarta EE: Eclipse Foundation assume a responsabilidade pelo Enterprise Java. Recuperado em 5 de abril de 2019 .
- ^ Wayne Beaton: Eclipse Jakarta EE Platform. 27 de junho de 2018, acessado em 5 de abril de 2019 .
- ^ Mike Milinkovich: Atualização sobre os direitos de Jakarta EE para marcas registradas do Java. In: Life at Eclipse. 3 de maio de 2019, acessado em 14 de maio de 2019 .
- ↑ Lars Röwekamp: Jakarta EE: O começo do fim ou a chance de um novo começo? In: heise developer. Recuperado em 14 de maio de 2019 .
- ↑ Wayne Beaton: EE4J FAQ | A Fundação Eclipse. Recuperado em 5 de abril de 2019 .
- ↑ Java EE 8 foi lançado oficialmente
- ↑ a b c d e f g h i Compatibilidade com Java EE. Recuperado em 4 de abril de 2019 .
- ↑ uma b c d e Jacarta EE produtos compatíveis. Recuperado em 11 de outubro de 2019 .
- ↑ Lista de especificações de API (JSRs) na Oracle
- ^ John R. Rymer: The Forrester Wave ™: Plataformas de servidor de aplicativos, terceiro trimestre de 2007 . Ed.: Forrester Research . 11 de julho de 2007.