Java EE - o que é isso?
Java EE é uma plataforma construída sobre Java SE que fornece uma API e um ambiente de tempo de execução para desenvolver e executar aplicativos de rede em larga escala, multicamadas, escaláveis, confiáveis e seguros. Esses aplicativos são chamados de aplicativos corporativos porque resolvem problemas enfrentados por grandes empresas. No entanto, não são apenas as grandes corporações e agências governamentais que podem se beneficiar desses tipos de aplicativos e dos benefícios que o Java EE oferece. As soluções que a plataforma Java EE oferece são úteis, e às vezes simplesmente necessárias, para desenvolvedores individuais e pequenas organizações.Desenvolvimento JavaEE
Java EE é desenvolvido através do Java Community Process (JCP), formado em 1998. Ele permite que as partes interessadas participem na definição de versões futuras das especificações da plataforma da linguagem Java. A base deste processo é o JSR (Java Specification Request), documentos formais que descrevem as especificações e tecnologias que se propõem a serem adicionadas à plataforma Java. Tais solicitações são feitas por membros da comunidade - desenvolvedores e empresas comuns. Estes últimos incluem Oracle, Red Hat, IBM, Apache e muitos outros. Aqueles. os caras propõem novos recursos e novidades para consideração que gostariam de incluir em Java. E então eles realizam uma votação, com base na qual é tomada uma decisão sobre o que incluir na próxima versão. O histórico da versão do Java EE é assim:- J2EE 1.2 (dezembro de 1999)
- J2EE 1.3 (setembro de 2001)
- J2EE 1.4 (novembro de 2003)
- Java EE 5 (maio de 2006)
- Java EE 6 (dezembro de 2009)
- Java EE 7 (maio)
- Java EE 8 (agosto de 2017)
- Jacarta EE 8 (setembro de 2019)
Arquitetura de aplicativos Java EE
Uma breve introdução. Para facilitar o entendimento, vamos falar sobre a estrutura das aplicações Java EE e alguns dos termos que utilizaremos mais adiante. Os aplicativos Java EE possuem uma estrutura que possui duas qualidades principais:- Em primeiro lugar, multinível. Os aplicativos Java EE são multicamadas e falaremos sobre isso com mais detalhes;
- em segundo lugar, aninhamento. Existe um servidor Java EE (ou servidor de aplicativos), com contêineres de componentes localizados dentro dele. Esses contêineres abrigam (bingo!) componentes.
Níveis de aplicação
Aplicativos multicamadas são aplicativos divididos de acordo com princípios funcionais em módulos isolados (níveis, camadas). Normalmente (inclusive no contexto do desenvolvimento Java EE), os aplicativos corporativos são divididos em três níveis:- cliente;
- nível médio;
- nível de acesso aos dados.
-
A camada cliente é uma aplicação que solicita dados do servidor Java EE (camada intermediária). O servidor, por sua vez, processa a solicitação do cliente e retorna uma resposta a ela. O aplicativo cliente pode ser um navegador, um aplicativo independente (móvel ou desktop) ou outros aplicativos de servidor sem interface gráfica.
-
O nível médio é dividido, por sua vez, em nível web e nível de lógica de negócios.
-
A camada web consiste em alguns componentes que fornecem interação entre os clientes e a camada lógica de negócios.
As seguintes tecnologias Java EE são usadas no nível da web:
- Tecnologia JavaServer Faces (JSF);
- Páginas de Servidor Java (JSP);
- Linguagem de Expressão (EL);
- Servlets;
- Contextos e injeção de dependência para Java EE (CDI).
-
A camada de lógica de negócios consiste em componentes que implementam toda a lógica de negócios da aplicação. Lógica de negócios é um código que fornece funcionalidades que atendem às necessidades de alguma área de negócios específica (setor financeiro, bancário, comércio eletrônico). Este nível pode ser considerado o núcleo de todo o sistema.
Tecnologias envolvidas neste nível:
- Enterprise JavaBeans (EJB);
- Serviços web RESTful JAX-RS;
- Entidades da API de persistência Java;
- Serviço de mensagens Java.
-
-
Nível de acesso aos dados. Este nível é às vezes chamado de nível de sistemas de informação empresarial (EIS). O EIS consiste em vários servidores de banco de dados, sistemas de planejamento de recursos empresariais ERP (Enterprise Resource Planning) e outras fontes de dados. A camada de lógica de negócios acessa essa camada para obter dados.
Neste nível você pode encontrar tecnologias como:
- API de conectividade de banco de dados Java (JDBC);
- API de persistência Java;
- Arquitetura do conector Java EE;
- API de transação Java (JTA).
Servidores de aplicativos, contêineres, componentes
Vamos dar uma olhada na definição de Java EE da Wikipedia. Java EE é um conjunto de especificações e documentação relacionada para a linguagem Java, descrevendo a arquitetura da plataforma do servidor para tarefas de médias e grandes empresas. Para entender melhor o que significa “conjunto de especificações” neste contexto, vamos fazer uma analogia com uma interface Java. A própria interface Java é desprovida de funcionalidade. Simplesmente define algum contrato segundo o qual alguma funcionalidade é implementada. Mas outras classes implementam a interface. Além disso, uma interface pode ter várias implementações, cada uma das quais pode diferir uma da outra em alguns detalhes. A especificação é exatamente a mesma. Naked Java EE é apenas um conjunto de especificações. Estas especificações são implementadas por vários servidores Java EE. Um servidor Java EE é um aplicativo de servidor que implementa as APIs da plataforma Java EE e fornece serviços Java EE padrão. Os servidores Java EE às vezes são chamados de servidores de aplicativos. Os dados do servidor podem conter componentes de aplicativo, cada um correspondendo ao seu próprio nível em uma hierarquia multinível. O servidor Java EE fornece vários serviços para esses componentes na forma de um contêiner. Os contêineres são a interface entre os componentes que eles hospedam e a funcionalidade independente de plataforma de baixo nível que dá suporte ao componente. Os contêineres fornecem serviços específicos aos componentes que hospedam. Por exemplo, gerenciamento do ciclo de vida de desenvolvimento, injeção de dependência, simultaneidade, etc. Os contêineres escondem a complexidade técnica e aumentam a portabilidade. Existem quatro tipos diferentes de contêineres em Java EE :-
Os contêineres de miniaplicativos são implementados pela maioria dos navegadores. Ao desenvolver miniaplicativos, você pode se concentrar no lado visual do aplicativo, enquanto o contêiner fornece um ambiente seguro.
-
O Application Client Container (ACC) contém um conjunto de classes Java, bibliotecas e outros arquivos necessários para implementar recursos como injeção, gerenciamento de segurança e serviços de nomenclatura em aplicativos Java SE.
-
O contêiner da web fornece os serviços principais para gerenciar e executar componentes da web (servlets, componentes EJB Lite, páginas JSP, filtros, listeners, páginas JSF e serviços da web). É responsável por instanciar, inicializar e invocar servlets e dar suporte aos protocolos HTTP e HTTPS. Este contêiner é usado para servir páginas da web para navegadores clientes.
-
O contêiner EJB (Enterprise Java Bean) é responsável por gerenciar e executar os componentes do modelo EJB que contêm a camada lógica de negócios da aplicação. Ele cria novas entidades de bean EJB, gerencia seu ciclo de vida e fornece serviços como transação, segurança, simultaneidade, distribuição, nomenclatura ou recursos de invocação assíncrona.
-
Applets são aplicativos de interface gráfica do usuário (GUI) executados em um navegador. Eles aproveitam a rica API Swing para produzir interfaces de usuário poderosas.
-
Aplicativos são programas executados no lado do cliente. Eles normalmente são interface gráfica do usuário (GUI) e usados para processamento em lote.
-
Aplicativos Web (compostos por servlets e seus filtros, ouvintes de eventos da Web, páginas JSP e JSF) - são executados em um contêiner da Web e respondem a solicitações HTTP de clientes da Web. Os servlets também suportam terminais de serviço da web SOAP e RESTful.
-
Aplicativos corporativos (construídos com Enterprise Java Beans, Java Message Service, Java Transaction API, Chamadas Assíncronas, Time Services) são executados em um contêiner EJB. EJBs gerenciados por contêiner lidam com lógica de negócios transacional. Eles podem ser acessados local ou remotamente via RMI (ou HTTP para serviços web SOAP e RESTful).
Tecnologias
Então, resolvemos a arquitetura. A estrutura geral deve ser clara. No processo de descrição dos componentes arquitetônicos, abordamos algumas tecnologias Java EE, como EJB, JSP, etc. A tabela abaixo mostra as tecnologias utilizadas principalmente no nível do cliente:Tecnologia | Propósito |
---|---|
Servlets | Classes Java que processam dinamicamente solicitações de clientes e geram respostas (geralmente páginas HTML). |
Java Server Faces (JSF) | Uma estrutura para construir aplicações web com uma interface de usuário. Permite incluir componentes da interface do usuário (por exemplo, campos e botões) em uma página, transformar e validar esses componentes e armazenar esses dados no armazenamento do servidor. |
Tecnologia Java Server Faces Facelets | É um subtipo de aplicativo JSF que usa páginas XHTML em vez de páginas JSP |
Páginas de servidor Java (JSP) | Documentos de texto compilados em servlets. Permite adicionar conteúdo dinâmico a páginas estáticas (como páginas HTML) |
Biblioteca de tags padrão de páginas de servidor Java (JSTL) | Uma biblioteca de tags que encapsula a funcionalidade principal no contexto de páginas JSP. |
Linguagem de Expressão | Um conjunto de tags padrão usadas em páginas JSP e Facelets para acessar componentes Java EE. |
Contextos e injeção de dependência para Java EE (CDI) | Representa um conjunto de serviços fornecidos por contêineres Java EE para gerenciar o ciclo de vida dos componentes, bem como injetar componentes em objetos clientes de forma segura. |
Componentes Java Beans | Objetos que atuam como armazenamento temporário de dados para páginas de aplicativos. |
Tecnologia | Propósito |
---|---|
Componentes Enterprise Java Beans (enterprise bean) | EJBs são beans gerenciados que contêm a funcionalidade principal de um aplicativo. |
Serviços da Web RESTful JAX-RS | É uma API para desenvolvimento de serviços web que atendem ao estilo arquitetural REST. |
Terminais de serviço da web JAX-WS | API para criar e consumir serviços web SOAP. |
Entidades da API de persistência Java (JPA) | Uma API para acessar dados em armazenamentos de dados e converter esses dados em objetos da linguagem de programação Java e vice-versa. |
Beans gerenciados Java EE | Beans gerenciados que fornecem a lógica de negócios do aplicativo, mas não requerem recursos transacionais ou de segurança do EJB. |
Serviço de mensagens Java | A API Java Message Service (JMS) é um padrão de mensagens que permite que componentes de aplicativos Java EE criem, enviem, recebam e leiam mensagens. Isso garante comunicação distribuída, confiável e assíncrona entre componentes. |
Tecnologia | Propósito |
---|---|
A API de conectividade de banco de dados Java (JDBC) | API de baixo nível para acessar e recuperar dados de armazenamentos de dados. Um uso típico do JDBC é escrever consultas SQL em um banco de dados específico. |
A API de persistência Java | Uma API para acessar dados em armazenamentos de dados e converter esses dados em objetos da linguagem de programação Java e vice-versa. API de nível muito superior em comparação com JDBC. Esconde toda a complexidade do JDBC do desenvolvedor. |
A arquitetura do conector Java EE | API para conexão de outros recursos corporativos, como:
|
A API de transação Java (JTA) | Uma API para definir e gerenciar transações, incluindo transações distribuídas e transações em vários armazenamentos de dados. |
GO TO FULL VERSION