programacion orientada objetos lenguaje historia fundamentos ejemplos desde cero java java-ee

lenguaje - programacion orientada a objetos en java ejemplos



Fundamentos de Java EE (3)

He leído los artículos de wikipedia. He navegado por los tutoriales de Oracle. Busqué en Google, embotellado y Yahooed, y aún así, me estoy ahogando en los fundamentos más básicos de Java EE (5+).

  1. ¿Deben todas las arquitecturas Java EE involucrar a un servidor de aplicaciones, como JBoss o GlassFish, en algún momento? Básicamente, ¿el concepto del servidor de aplicaciones es fundamental para Java EE y por qué / por qué no?

  2. Más allá de los servidores de aplicaciones, ¿hay algún otro componente importante del que dependa una arquitectura Java EE? Si es así, ¿qué son y cómo se "ajustan" a la arquitectura y se relacionan con el servidor de aplicaciones?

  3. Realmente me estoy ahogando con el concepto de EJB. De todo lo que he podido encontrar en ellos, no puedo decir si EJB es una especificación que los desarrolladores deben usar (por lo que el cumplimiento de las especificaciones EJB produce una unidad de código que se puede llamar "bean"), o si es como cualquier otra biblioteca de Java, como JDBC o JMS .

    (a) En King''s English, sin usar conceptos avanzados o conceptos que ya se conocen o palabras de moda de marketing, ¿qué es EJB? ¿Puede proporcionar algunos ejemplos rápidos y sucios de (un) EJB?

    (b) ¿Cómo interactúa EJB / interactúa con un servidor de aplicaciones?

    (c) ¿Qué es un "contenedor" EJB, y qué hace?

  4. Me parece que hay muchos componentes de primer nivel que componen un backend de Java EE, y que para cada tipo de estos componentes, hay muchas variedades de código abierto y cerrado que usted, el ingeniero de sistemas, debe elegir.

    Al ver que ya estoy tan confundido sobre Java EE fundamental, a continuación hay una lista de algunos productos de los que he oído hablar. Simplemente estoy pidiendo a alguien que me ayude a clasificar estos productos para que pueda ver, a plena vista, cuáles son. Por ejemplo, si incluyo "GlassFish" y "JBoss", es posible que aparezcan en la categoría de "Servidores de aplicaciones". Si incluyo "Tomcat" y "WebSphere", pueden aparecer en "Servlet Engines", etc.

    La lista:

    • JBoss
    • Gerónimo
    • Embarcadero
    • GlassFish
    • Gato
    • Spring RabbitMQ
    • Spring GemFire
    • Primavera
    • Spring tc Server
    • Hibernar

5. ¿Cuál es la diferencia entre Java EE 6 y Java EE 6 "Perfil web"?


  1. No. Puede ejecutar varias partes de JavaEE en contenedores que no son servidores de aplicaciones. Servlets / JSP / JSF puede ejecutar en un contenedor de servlets. JPA: puedes usarlo con cualquier configuración.

  2. Todas las partes de la "familia" de JavaEE se pueden usar de forma independiente, es decir, fuera de los servidores de aplicaciones. Contenedores de servlets Proveedores de JMS. Gerentes de JTA. Incluso contenedores EJB.

  3. EJB antes de la versión 3 proporcionó un conjunto de interfaces que debe implementar para que sus clases sean administradas por el contenedor EJB. Desde 3.0, la especificación EJB define principalmente anotaciones (desde la perspectiva del desarrollador). Aparte de eso, es una especificación sobre cómo el contenedor EJB (parte de los servidores de aplicaciones) debe manejar sus EJB.

  4. Glassfish, JBoss y Geronimo (y algunos otros) son servidores de aplicaciones con todas las funciones. Los servidores Tomcat, Jetty y Spring tc son solo contenedores de servlets, solo manejan la parte servlet / jsp de JavaEE. Pueden tener características adicionales (como las características de supervisión de la empresa del servidor tc). Hibernate es una implementación de JPA - mapeo relacional de objetos (en resumen, usted trabaja con objetos en lugar de con JDBC). RabbitMQ es una cola de mensajes, y ni siquiera estoy seguro de que cumpla con la especificación JMS (parte de JavaEE). GemFire ​​no tiene nada que ver con JavaEE

  5. El "Perfil web" incluye solo algunas partes (las más utilizadas en aplicaciones web) de JavaEE - servlets, jsp, CDI, JPA, JSF, EJB (lite). No incluye elementos como JMS, JAX-WS, etc. Here hay una tabla de lo que está incluido y lo que no está incluido en el perfil web. La idea es que algunos servidores de aplicaciones serán certificados incluso si no implementan todas las especificaciones incluidas en JavaEE. Caucho Resin será un servidor de aplicaciones que solo admite el perfil web.


Bozho de hecho dio una excelente respuesta. Para algunos detalles adicionales sobre Java EE, la siguiente respuesta que di a otra pregunta podría ser relevante: Frameworks for Layering Reusable Architectures

También es posible que desee leer el artículo que edité en la wikipedia sobre EJB: http://en.wikipedia.org/wiki/Enterprise_JavaBean

Para agregar un poco a la sub-pregunta 3:

Puede ver un contenedor EJB como una especie de JVM extendida. La JVM ''normal'' ofrece el servicio de administración automática de la memoria para las clases de Java. El contenedor EJB ofrece servicios adicionales, como la administración automática de transacciones y la agrupación.

Para hacer una clase regular, un EJB es realmente simple. Solo tiene que agregar la anotación @Stateless:

@Stateless public class SomeBean { // ... }

Después de esto, todos los métodos en el bean son automáticamente transaccionales y las instancias de SomeBean se agrupan automáticamente en lugar de volverse a crear cuando sea necesario.

Una cosa importante es darse cuenta de que este tipo de "beans administrados" no se puede instanciar con el nuevo operador habitual. Deben inyectarse a través de una anotación. Si usa la analogía con la JVM normal nuevamente, podría decir que esta anotación es una especie de "nuevo operador gestionado":

public class SomeOtherManagedBean { @EJB SomeBean someBean; }

El truco es que la inyección aquí solo funciona en otros beans administrados. Desde un entorno no administrado, puede iniciar una instancia a través de una búsqueda JNDI.

En Java EE, los beans EJB están tradicionalmente destinados a contener solo la lógica empresarial pura. En la última versión de Java EE, Java EE 6, se ha intentado llevar el concepto de bean administrado en un modelo de componente unificado a todas las partes de la aplicación. Esto se hace a través de la especificación CDI, que también define un tipo de componente llamado simplemente "bean administrado". Es posible que el modelo EJB eventualmente se reequipará como un conjunto de anotaciones CDI.


Bozho dio una respuesta excelente a tu pregunta, así que solo añadiré esta única cosa.

La razón por la que estás luchando no es porque sea difícil de aprender, porque hay mucho que aprender y estás tratando de aprenderlos todos al mismo tiempo. Si los aprendiera de uno en uno, estarían bien.

La forma más fácil de comenzar es Servlet y JSP. La mayoría de las aplicaciones Java EE usan estas tecnologías y los desarrolladores novatos recibirán estas tareas en la mayoría de los proyectos, por lo que son prácticas. Servlet y JSP son especificaciones que le permiten generar principalmente páginas web con contenido dinámico (= variable). Tomcat es un contenedor web que implementa Servlet y JSP y proporciona un entorno de tiempo de ejecución para los componentes Servlet y JSP. Recomiendo Tomcat porque es de código abierto y tiene la mayor cuota de mercado.

Recomiendo Core Servlets y Javaserver Pages de Marty Hall para un libro para principiantes. Es una lectura muy fácil.