User:M3tainfo/Java Platform, Enterprise Edition: Difference between revisions

Content deleted Content added
No edit summary
Line 1:
{{java platforms}}
 
'''Java Platform, Enterprise Edition''' or '''Java EE''' is Oracle's enterprise [[Java (software platform)|Java]] computing [[Platform (computing)|platform]]. The platform provides an [[API]] and runtime environment for developing and running [[enterprise software]], including [[network service|network]] and [[web service]]s, and other large-scale, multi-tiered, scalable, reliable, and secure network applications. Java EE extends the [[Java Platform, Standard Edition]] (Java SE),<ref>{{cite web|url=http://docs.oracle.com/javaee/6/firstcup/doc/gkhoy.html |title=Differences between Java EE and Java SE - Your First Cup: An Introduction to the Java EE Platform |publisher=Docs.oracle.com |date=2012-04-01 |accessdate=2012-07-18}}</ref> providing an API for [[object-relational mapping]], [[Distributed computing|distributed]] and [[multitier architecture|multi-tier architectures]], and [[web services]]. The platform incorporates a design based largely on [[modularity (programming)|modular]] [[software component|component]]s running on an [[application server]]. Software for Java EE is primarily developed in the [[Java (programming language)|Java]] programming language. The platform emphasizes [[Convention over configuration]] <ref>http://jdevelopment.nl/minimal-3tier-java-ee-app-xml-config</ref> and [[Java annotation|annotations]] for configuration. Optionally [[XML]] can be used to override annotations or to deviate from the platform defaults.
 
== Version historyHistory ==
{{Main|Java EE version history}}
 
The platform was known as ''Java 2 Platform, Enterprise Edition'' or ''J2EE'' until the name was changed to ''Java Platform,
Enterprise Edition'' or ''Java EE'' in version 5. The current version is called ''Java EE 7''.
 
* J2EE 1.2 (December 12, 1999)
 
* J2EE 1.3 (September 24, 2001)
* J2EE 1.4 (November 11, 2003)
Line 16:
* Java EE 7 (May 28, 2013,<ref>http://jcp.org/en/jsr/detail?id=342</ref> but April 5, 2013 according to spec document. June 12, 2013 was the planned kickoff date<ref>https://blogs.oracle.com/java/entry/introducing_java_ee_7</ref>)
 
The ''Java EE 7'' platform incorporates a number of improvements and enhancements over previous versions, including support for
== Standards and specifications ==
the latest web standards such as HTML 5, Web Sockets and JSON as well as modern HTTP and REST web services using JAX-RS.
Dependency injection using CDI is now supported more broadly across the platform by APIs such as JMS and includes a new
interceptor mechanism.
 
Although ''Java EE 7'' does not require any new JDK features, upcoming APIs and standards are expected to be designed with Java
SE 8 language changes in mind. It is also expected that a future ''Java EE 8'' release will include support for cloud
environments and platforms.
 
The Java EE 7 platform adds first-class support for recent developments in web standards, including Web Sockets and JSON, which provide the underpinnings for HTML 5 support in Java EE. Java EE 7 also adds a modern HTTP client API as defined by JAX-RS 2.0.
 
Also new in the Java EE 7 platform is the Batch API, which provides a programming model for batch applications and a runtime for scheduling and executing jobs, and the Concurrency Utilities API, which provides asynchronous capabilities by means of managed executor service, managed scheduled executor service, managed thread factory, and context service.
 
The CDI dependency injection facility introduced in Java EE 6 is enhanced as well as more broadly utilized by the Java EE 7 platform technologies, and the managed bean model is further aligned to remove inconsistencies among Java EE component classes in aspects of CDI injection and interceptor support. The declarative transaction functionality introduced by EJB is been made available in a more general way through CDI interceptors, so that it may be leveraged by other managed beans. The Bean Validation facility is extended to the automatic validation of method invocations and likewise made available via CDI interceptors.
 
Java EE 7 also continues the "ease of development" focus of Java EE 5 and Java EE 6. Most notably, Java EE 7 includes a revised and greatly simplified JMS 2.0 API. Ease of development encompasses ease of configuration as well. To that end, Java EE 7 broadens the resource definition facilities introduced in Java EE 6 to encompass more of the standard platform resource types, and also provides default database and JMS connection factory resources. It also improves the configuration of application security, including new descriptors for security permissions. Java EE 7 further simplifies the platform by making optional the technologies that were identified as candidates for pruning in Java EE 6, namely: EJB Entity Beans, JAX-RPC 1.1, JAXR 1.0, and JSR-88 1.2.
 
Finally, Java EE 7 lays groundwork for enhancements to the platform for use in cloud environments in a future release. Such features include resource definition metadata, improved security configuration, and support for database schema generation via the Java Persistence API.
 
== Architecture ==
 
The Java EE architecture is based on ''Containers'' which are runtime environments that provide services to application
components. These include ''Web'', ''EJB'' and ''Application Client'' containers
 
=== Containers ===
 
Containers provide the runtime support for Java EE application components. Containers provide a federated view of the underlying Java EE APIs to the application components. Java EE application components never interact directly with other Java EE application components. They use the protocols and methods of the container for interacting with each other and with platform services.
 
The Containers, denoted by the separate rectangles, are Java EE runtime environments that provide required services to the application components represented in the upper half of the rectangle. The services provided are denoted by the boxes in the lower half of the rectangle. For example, the Application Client Container provides Java Message Service (JMS) APIs to Application Clients, as well as the other services represented. All these services are explained below. See Section EE.2.7, “Java EE Standard Services”.
 
The arrows represent required access to other parts of the Java EE platform. The Application Client Container provides Application Clients with direct access to the Java EE required Database through the Java API for connectivity with database systems, the JDBCTM API. Similar access to databases is provided to JSP pages, JSF applications, and servlets by the Web Container, and to enterprise beans by the EJB Container.
 
As indicated, the APIs of the JavaTM Platform, Standard Edition (Java SE), are supported by Java SE runtime environments for each type of application component.
 
This specification requires that containers provide a Java CompatibleTM runtime environment, as defined by the Java Platform, Standard Edition, v7 specification (Java SE).
 
==== Java EE Servers ====
 
Underlying a Java EE container is the server of which it is a part. A Java EE Product Provider typically implements the Java EE server-side functionality using an existing transaction processing infrastructure in combination with Java Platform, Standard Edition (Java SE) technology. The Java EE client functionality is typically built on Java SE technology.
 
==== Resource Adapters ====
 
A resource adapter is a system-level software component that typically implements network connectivity to an external resource manager. A resource adapter can extend the functionality of the Java EE platform either by implementing one of the Java EE standard service APIs (such as a JDBCTM driver), or by defining and implementing a resource adapter for a connector to an external application system.
 
==== Database ====
 
The Java EE platform requires a database, accessible through the JDBC API, for the storage of business data. The database is accessible from web components, enterprise beans, and application client components.
 
=== Profiles ===
 
A profile is a configuration of the Java EE platform targeted at a specific class of applications.
 
Profiles are not a new concept, nor are they unique to the Java EE platform. The Java Community Process Document (version 2.8) gives the following definition of a profile: “A Specification that references one of the Platform Edition Specifications and zero or more other JCP Specifications (that are not already a part of a Platform Edition Specification). APIs from the referenced Platform Edition must be included according to the referencing rules set out in that Platform Edition Specification. Other referenced specifications must be referenced in their entirety.”
 
All Java EE profiles share a set of common features, such as naming and resource injection, packaging rules, security requirements, etc. This guarantees a degree of uniformity across all products and, indirectly, applications that fall under the “Java EE platform” umbrella. This also ensures that developers who are familiar with a certain profile, or with the full platform, can move easily to other profiles, avoiding excessive compartmentalization of skills and experience.
 
Beyond the basic functionality outlined above, profiles are free to include any set of technologies that are part of the platform, provided that all rules in the present specification that pertain to the included technologies—either alone or in combination with others—are followed.
 
=== Components ===
 
The Java EE runtime environment defines four application component types that a Java EE product must support:
 
* Application clients are Java programming language programs that are typically GUI programs that execute on a desktop computer. Application clients offer a user experience similar to that of native applications and have access to all of the facilities of the Java EE middle tier.
 
* Applets are GUI components that typically execute in a web browser, but can execute in a variety of other applications or devices that support the applet programming model. Applets can be used to provide a powerful user interface for Java EE applications. (Simple HTML pages can also be used to provide a more limited user interface for Java EE applications.)
 
* Servlets, JSPpages, JSF applications, filters, and web event listeners typically execute in a web container and may respond to HTTP requests from web cli- ents. Servlets, JSP pages, JSF applications, and filters may be used to generate HTML pages that are an application’s user interface. They may also be used to generate XML or other format data that is consumed by other application components. A special kind of servlet provides support for web services using the SOAP/HTTP protocol. Servlets, pages created with the JavaServer Pages technology or JavaServer Faces technology, web filters, and web event listeners are referred to collectively in this specification as “web com- ponents.” Web applications are composed of web components and other data such as HTML pages. Web components execute in a web container. A web server includes a web container and other protocol support, security support, and so on, as required by Java EE specifications.
 
* Enterprise JavaBeans (EJB) components execute in a managed environment that supports transactions. Enterprise beans typically contain the business logic for a Java EE application. Enterprise beans may directly provide web services using the SOAP/HTTP protocol.
 
== Standards and Specifications ==
 
Java EE is defined by its [[Program specification|specification]]. As with other [[Java Community Process]] specifications, providers must meet certain conformance requirements in order to declare their products as ''Java EE compliant''.
 
Java EE includes several [[Application programming interface|API]] specifications, such as [[Java Database Connectivity|JDBC]], [[Remote Method Invocation|RMI]], [[e-mail]], [[Java Message Service|JMS]], [[web service]]s, [[XML]], etc., and defines how to coordinate them. Java EE also features some specifications unique to Java EE for components. These include [[Enterprise JavaBean]]s, [[Java EE Connector Architecture|Connectors]], [[servlet]]s, [[JavaServer Pages]] and several [[web service]] technologies. This allows developers to create [[enterprise software|enterprise applications]] that are [[Porting|portable]] and [[scalability|scalable]], and that integrate with legacy technologies. A Java EE [[application server]] can handle transactions, security, scalability, [[Concurrency (computer science)|concurrency]] and management of the components it is deploying, in order to enable developers to concentrate more on the business logic of the components rather than on infrastructure and integration tasks.
 
Java EE Specifications [https://java.net/projects/javaee-spec/pages/Home]
== General APIs ==
The Java EE APIs includes several technologies that extend the functionality of the base [[Java Platform, Standard Edition|Java SE]] [[Application programming interface|API]]s.
 
== Java EE Standard Services ==
* [http://docs.oracle.com/javaee/7/api Java EE 7 Platform Packages]
* [http://docs.oracle.com/javaee/6/api Java EE 6 Platform Packages]
* [http://docs.oracle.com/javaee/5/api Java EE 5 Platform Packages]
 
=== HTTP ===
 
The HTTP client-side API is defined by the java.net package. The HTTP server- side API is defined by the servlet, JSP, and JSF interfaces and by the web services support that is a part of the Java EE platform.
Java EE Specifications [https://java.net/projects/javaee-spec/pages/Home]
 
=== HTTPS ===
Most of the other Java EE specifications have project pages here as well:
 
Use of the HTTP protocol over the SSL protocol is supported by the same client and server APIs as HTTP.
 
=== Java Transaction API (JTA) ===
 
An application-level demarcation interface that is used by the container and application components to demarcate transaction boundaries.
 
=== RMI-IIOP ===
 
The RMI-IIOP subsystem is composed of APIs that allow for the use of RMI-style programming that is independent of the underlying protocol, as well as an implementation of those APIs that supports both the Java SE native RMI protocol (JRMP) and the CORBA IIOP protocol.
 
=== Java IDL ===
 
Java IDL allows Java EE application components to invoke external CORBA objects using the IIOP protocol.
 
=== JDBC API ===
 
The JDBC API is the API for connectivity with relational database systems.
 
=== Java Persistence API ===
 
The Java Persistence API is the standard API for the management of persistence and object/relational mapping.
 
=== Java Message Service (JMS) ===
 
The Java Message Service is a standard API for messaging that supports reliable point-to-point messaging as well as the publish-subscribe model.
 
=== Java Naming and Directory Interface (JNDI) ===
 
The JNDI API is the standard API for naming and directory access.
 
=== JavaMail ===
 
Many Internet applications require the ability to send email notifications, so the Java EE platform includes the JavaMail API along with a JavaMail service provider that allows an application component to send Internet mail.
 
=== JavaBeans Activation Framework (JAF) ===
 
The JAF API provides a framework for handling data in different MIME types, originating in different formats and locations. The JavaMail API makes use of the JAF API. The JAF API is included in Java SE and so is available to Java EE applications.
 
=== XML Processing ===
 
The Java API for XML Processing (JAXP) provides support for the industry standard SAX and DOM APIs for parsing XML documents, as well as support for XSLT transform engines.
 
=== Java EE Connector Architecture ===
 
The Connector architecture is a Java EE SPI that allows resource adapters that support access to Enterprise Information Systems to be plugged in to any Java EE product.
 
=== Security Services ===
 
The JavaTM Authentication and Authorization Service (JAAS) enables services to authenticate and enforce access controls upon users. It implements a Java technology version of the standard Pluggable Authentication Module (PAM) framework and supports user-based authorization. The JavaTM Authorization Service Provider Contract for Containers (JACC) defines a contract between a Java EE application server and an authorization service provider, allowing custom authorization service providers to be plugged into any Java EE product. The JavaTM Authentication Service Provider Interface for Containers (JASPIC) defines an SPI by which authentication providers implementing message authentication mechanisms may be integrated in client or server message processing containers or runtimes.
 
=== Web Services ===
 
Java EE provides full support for both clients of web services as well as web service endpoints.
 
=== Concurrency Utilities ===
 
The Concurrency Utilities for Java EE is a standard API for providing asynchronous capabilities to Java EE application components through the following types of objects: managed executor service, managed scheduled executor service, managed thread factory, and context service.
 
=== Batch ===
 
The Batch Applications for the Java Platform API (Batch) provides a programming model for batch applications and a runtime for scheduling and executing jobs.
 
=== Management ===
 
The Java 2 Platform, Enterprise Edition Management Specification defines APIs for managing Java EE servers using a special management enterprise bean.
 
=== Deployment ===
 
The Java 2 Platform, Enterprise Edition Deployment Specification defines a contract between deployment tools and Java EE products.
 
== Technologies and APIs ==
 
The Java EE APIs includes several technologies that extend the functionality of the base [[Java Platform, Standard Edition|Java SE]] [[Application programming interface|API]]s.
 
=== Servlets ===