O que exatamente é o Java EE?

162

Faço o Java SE há alguns anos e passo para o Java EE. No entanto, tenho alguns problemas para entender alguns aspectos do Java EE.

  1. O Java EE é apenas uma especificação? O que quero dizer é: EJB Java EE?

  2. As implementações diferentes do EJB / Spring do Java EE?

Lamento perguntar, mas tenho algumas dificuldades para entender o que é o Java EE.

Alguém poderia explicar o que é Java EE? E EJB?

Frank Zimmer
fonte
2
Você deve cortar essa pergunta em duas perguntas, uma é duplicada e a outra acho que não foi respondida no link.
Kheldar
2
Na verdade, você leu o wiki [java-ee] ?
Paŭlo Ebermann

Respostas:

187

O Java EE é apenas uma especificação? O que quero dizer é: EJB Java EE?

Java EE é realmente uma especificação abstrata . Qualquer pessoa está aberta para desenvolver e fornecer uma implementação funcional da especificação. As implementações concretas são os chamados servidores de aplicativos, como WildFly , TomEE , GlassFish , Liberty , WebLogic etc. Também existem contêineres de servlets que implementam apenas a parte JSP / Servlet da enorme API Java EE, como Tomcat , Jetty , etc.

Nós, os desenvolvedores Java EE, deve escrever código utilizando a especificação (ou seja, importar apenas javax.* as classes em nosso código em vez de classes específicas de implementação, como org.jboss.wildfly.*, com.sun.glassfish.*, etc) e, em seguida, nós vamos ser capazes de executar nosso código em qualquer aplicação (assim, em qualquer servidor de aplicação). Se você conhece o JDBC, é basicamente o mesmo conceito de como os drivers JDBC funcionam. Veja também ao Em termos mais simples, o que é uma fábrica?

O download do Java EE SDK do Oracle.com contém basicamente o servidor GlassFish ao longo de várias documentações e exemplos e, opcionalmente, também o NetBeans IDE. Você não precisa se deseja um servidor e / ou IDE diferente.

O EJB faz parte da especificação Java EE. Olha, está na API Java EE . Os servidores de aplicativos Java EE completos suportam isso imediatamente, mas os contêineres JSP / Servlet simples não.

Veja também:


As implementações diferentes do EJB / Spring do Java EE?

Não, como dito, o EJB faz parte do Java EE. O Spring é uma estrutura independente que substitui e aprimora muitas partes do Java EE. O Spring não requer necessariamente que o Java EE seja executado. Um contêiner de servlet básico como o Tomcat já é suficiente. Simplificando, o Spring é um concorrente do Java EE. Por exemplo, "Spring" (autônomo) compete com EJB / JTA, Spring MVC com JSF / JAX-RS, Spring DI / IoC / AOP com CDI, Spring Security com JAAS / JASPIC, etc.

Nos tempos antigos do J2EE / EJB2, a API do EJB2 era terrível de implementar e manter. A primavera era então uma alternativa muito melhor ao EJB2. Mas desde o EJB3 (Java EE 5), a API do EJB foi muito aprimorada com base nas lições aprendidas com o Spring. Desde CDI (Java EE 6), não há realmente uma razão para olhar novamente outra estrutura, como o Spring, para tornar os desenvolvedores mais fáceis e desenvolver, entre outros, a camada de serviço.

Somente quando você estiver usando um contêiner de servlet básico como o Tomcat e não puder passar para um servidor Java EE, o Spring será mais atraente, pois será mais fácil instalar o Spring no Tomcat. Não é possível instalar, por exemplo, um contêiner EJB no Tomcat sem modificar o próprio servidor, você basicamente reinventaria o TomEE.

Veja também:

BalusC
fonte
2
Portanto, o Java EE pode ser definido como definindo qual suporte deve existir para que um aplicativo JEE típico seja executado?
James P.
4
@ James: Sim. Tudo na API Java EE é abstrato. A API do Java SE também possui várias partes abstratas, por exemplo, JDBC, JAXP, JAXB, etc.
BalusC
3
"Não há realmente uma razão para olhar novamente para outra estrutura como a Spring para tornar os desenvolvedores mais fáceis." -> Informação verdadeiramente valiosa.
jacktrades
@ BalusC: Olá, o link oficial do Sun Java EE .... está quebrado, se você fornecer um link semelhante a esse, será útil para alguém.
Abdul Rahman
Para executar a estrutura completa do Spring, o contêiner Servlet seria suficiente, o contêiner Servlet é [servidor da Web + contêiner da Web (implementa a API do servlet)] onde, para executar o Java EE, você precisa de um servidor de aplicativos como o Glassfish. O contêiner do servlet não seria suficiente. O contêiner de servlet é um subconjunto do servidor de aplicativos. Como eu entendo isso?
overexchange
11

O Java Enterprise Edition (Java EE) é uma especificação abrangente que faz referência a várias outras especificações mais detalhadas, das quais o Enterprise JavaBeans (EJB) é uma das mais importantes.

Ler isto - explica a diferença entre Java EE e Spring

Obrigado...

Prabath Siriwardena
fonte
4
  • Origem - Java 2 Platform, Enterprise Edition (J2EE) define o padrão para o desenvolvimento de aplicativos corporativos de várias camadas baseados em componentes. O J2EE simplifica a criação de aplicativos corporativos portáteis, escaláveis ​​e que se integram facilmente aos aplicativos e dados herdados.

  • Origem - A tecnologia Enterprise JavaBeans (EJB) é a arquitetura do componente do lado do servidor para Java Platform, Enterprise Edition (Java EE). A tecnologia EJB permite o desenvolvimento rápido e simplificado de aplicativos distribuídos, transacionais, seguros e portáteis baseados na tecnologia Java.

  • O Java EE é apenas uma especificação? O que quero dizer é: EJB Java EE?

    • Java EE é uma especificação.

    • EJB é a arquitetura de componentes do lado do servidor para Java EE

  • As implementações diferentes do EJB / Spring do Java EE?

    • O EJB e o Spring são estruturas diferentes após o Java EE.
Srikanth Venkatesh
fonte
6
Talvez não seja muito útil citar texto antigo (2005) de uma versão antiga da especificação (J2EE). A OP solicitou especificamente o Java EE, que é a encarnação moderna do J2EE.
Arjan Tijms
-5

Simplificando - JavaEE é uma plataforma.

É composto de muitas especificações, que são apenas APIs. As implementações concretas específicas dessas APIs são as chamadas 'Implementação de referência'

  1. EJB é apenas uma especificação dentro da plataforma JavaEE
  2. Não, o Spring é uma estrutura de aplicativos que pode permitir que você tenha suporte para desenvolver aplicativos JavaEE

EJB é Enterprise Java Beans

Desenvolvedor de software
fonte
4
Esta resposta não adiciona nada às respostas anteriores. Além disso, não é preciso: apenas uma implementação concreta é Referência, as outras não. Menor: o Spring se integra ao JavaEE, mas pode funcionar sem ele.
Tair 6/15
@tair Sim, apenas uma implementação concreta é considerada a 'Referência', por exemplo, a JPA possui inúmeras implementações, mas apenas o EclipseLink é o RI. Quando mencionei o RI, eu estava significando as diferentes APIs. Eu acho que você não entendeu minha resposta acima. Além disso, sim, o Spring se integra ao JavaEE, que é o que eu mencionei acima.
SoftwareDeveloper