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

Image
Jakarta EE

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
Plataforma Java, Enterprise Edition, v 6 10 de dezembro de 2009
Plataforma Java, Enterprise Edition, v 7 12 de maio de 2013
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

Image
Estrutura esquemática da arquitetura conforme descrito na especificação J2EE 1.4

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

à 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:
  • Os beans de sessão, tanto com estado quanto sem estado, implementam a lógica de negócios e são mais acessíveis pelo cliente
  • Beans acionados por mensagem, ou MDB para abreviar, para processamento de mensagens JMS foram introduzidos recentemente na versão 2.1
  • Beans de entidade para mapear objetos de dados persistentes (obsoletos a partir da versão 3.0, pois os EJBs também podem ser usados ​​fora do contêiner por meio de separação )
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

Servidores comerciais

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

Evidência individual

  1. Christopher Guindon: Eclipse GlassFish 5.1 é lançado | A Fundação Eclipse. Recuperado em 5 de abril de 2019 .
  2. Heise online: O servidor de aplicativos GlassFish 5.1 prepara a mudança para Jakarta EE. Recuperado em 5 de abril de 2019 .
  3. ^ Wayne Beaton: Eclipse Jakarta EE TCK. 22 de maio de 2018, acessado em 5 de abril de 2019 .
  4. ^ Wayne Beaton: Eclipse GlassFish. 10 de maio de 2018, acessado em 5 de abril de 2019 .
  5. ^ Will Lyons: Antecedentes da contribuição da Oracle para Jakarta EE. 24 de abril de 2018, acessado em 5 de abril de 2019 .
  6. Wayne Beaton: EE4J FAQ | A Fundação Eclipse. Recuperado em 5 de abril de 2019 .
  7. Wayne Beaton: Eclipse EE4J. 24 de outubro de 2017, acessado em 5 de abril de 2019 .
  8. heise online: Jakarta EE: Eclipse Foundation assume a responsabilidade pelo Enterprise Java. Recuperado em 5 de abril de 2019 .
  9. ^ Wayne Beaton: Eclipse Jakarta EE Platform. 27 de junho de 2018, acessado em 5 de abril de 2019 .
  10. ^ 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 .
  11. 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 .
  12. Wayne Beaton: EE4J FAQ | A Fundação Eclipse. Recuperado em 5 de abril de 2019 .
  13. Java EE 8 foi lançado oficialmente
  14. a b c d e f g h i Compatibilidade com Java EE. Recuperado em 4 de abril de 2019 .
  15. uma b c d e Jacarta EE produtos compatíveis. Recuperado em 11 de outubro de 2019 .
  16. Lista de especificações de API (JSRs) na Oracle
  17. ^ John R. Rymer: The Forrester Wave ™: Plataformas de servidor de aplicativos, terceiro trimestre de 2007 . Ed.: Forrester Research . 11 de julho de 2007.