2003 - 2007 DevelopIntelligence. History of Java EE. Java EE was not an “intent”
of the original Java design. It was more of a side-effect of the Java-web merger.
Building the Enterprise
The Tools of Java Enterprise Edition
©2003 - 2007 DevelopIntelligence LLC
Presentation Topics In this presentation, we will discuss: Overview of Java EE Java EE Platform Java EE Development
© 2003 - 2007 DevelopIntelligence
Objectives When we are done, you should be able to: Describe how Java EE and Java SE fit together List 3 technologies found in Java EE Describe the basic development lifecycle for a Java EE application
© 2003 - 2007 DevelopIntelligence
Overview of Java EE
A High-level Overview
©2003 - 2007 DevelopIntelligence LLC
What is Java EE? A community-defined extension to the Java SE platform Separate controlling specification Defined in context of extending Java SE to enterprise
An enterprise information systems platform Enables the development of Java-based middle-tier applications requiring “ility” characteristics Extends Write-Once-Run-Anywhere (WORA) to middleware
A standard architecture defining An application programming model An application execution platform © 2003 - 2007 DevelopIntelligence
History of Java EE Java EE was not an “intent” of the original Java design It was more of a side-effect of the Java-web merger Client-side web-based Java lost its luster and positioning to things like Flash Things like WORA, threading, networking, and security were desirable characteristics on the server-side But, Java didn’t have a formal server-side “platform”
Java EE was more “evolutionary” than revolutionary Initially addressed web-applications Quickly enhanced to address “middleware” Further enhanced to support Web services and SOA
© 2003 - 2007 DevelopIntelligence
Motivations for Java EE Provide an easy to use framework to build middle-ware applications that: Enables developers to focus on business logic instead of “integration” logic Creates middleware server transparency Removes complexities of large-scale distributed applications
Provide a managed execution environment that: Addresses “ility” characteristics Allows secure and protected side-by-side deployments Offers common “services” © 2003 - 2007 DevelopIntelligence
Industry Support Originally, Java EE was developed and maintained by Sun Today, Java EE is governed by the Java Community Process (JCP) Java EE its own Java Specification Request (JSR-244) Developed by an expert group represented by companies like: SAP, BEA, JBoss, IBM, Novell, Oracle, HP, Sun, Borland Each technology within Java EE is governed by an individual JSR, each with its own expert group
Current focus of Java EE community is simplification © 2003 - 2007 DevelopIntelligence
Application Programming Model Programming model adopts a “managed” model Design and implementation Lifecycle Transactions and security Deployment
Application implementation adheres to model Built around abstracted interactions with Java EE execution environment Interactions provided through Java EE platform APIs
© 2003 - 2007 DevelopIntelligence
Application Execution Platform Provides a “managed” execution environment Java EE compliant applications Execution environment is a realized implementation of the Java EE APIs Vendor implementation of the Java EE spec Includes core Java EE services Referred to as Java EE Application servers or containers
Relies on the Java SE platform Java EE is NOT an execution platform by itself Most Java EE application servers are implemented as Java SE platform applications © 2003 - 2007 DevelopIntelligence
Java EE Platform Diagram
App
App App Java EE APIs
App
Java EE API Implementations Java EE Application Server
Solaris
© 2003 - 2007 DevelopIntelligence
Java SE Platform Linux Windows Mac OS X
Java EE Platform
An Application Development Perspective
©2003 - 2007 DevelopIntelligence LLC
Java EE Platform Java EE Platform supports three primary application types Web applications EJB applications Enterprise applications
Each application type has its own set of characteristics Applications execute in “domain” relevant containers
© 2003 - 2007 DevelopIntelligence
Java EE Containers Java EE defines two primary types of containers: Web containers - managed environment for web applications EJB containers - managed environment for EJB applications
A compliant Java EE application server must provide an implementation for both types of containers Considered an “enterprise container” Containers function “on top of” the standard Java EE core services Each container type has its own set of characteristics © 2003 - 2007 DevelopIntelligence
Java EE Technologies
Enterprise Container Boundary
© 2003 - 2007 DevelopIntelligence
Java EE Server Technologies A major design motivation within Java EE is WORA Goal is to extend WORA into middleware Specifically at the Web and EJB container levels
There are two ways to create WORA: Define an application programming model and its supporting technologies Define a set of services to support the programming model
Java EE defines the supporting services as “Standard Services” Standard Services address everything from HTTP to database interactions A fully compliant Java EE server must support all Standard Services © 2003 - 2007 DevelopIntelligence
Java EE Standard Services Communication Email XML Processing Transactions Messaging Management
© 2003 - 2007 DevelopIntelligence
Database Naming and Directory Security Web Services Legacy systems Deployment
Container Technologies Remaining technologies defined in Java EE specification address application development Technologies are associated with an applicationcentric container Relatively clean separation of technologies between container types Technology sharing is at the Standard Services level
Technologies may exist as “standard” implementations or vendor implementations
© 2003 - 2007 DevelopIntelligence
Web Container Technologies Web containers provide “robust” web application environments A web container supports the following technologies: Servlets Filters Java Server Pages (JSP) JSP Standard Tag Library (JSTL) Java Server Faces (JSF)
© 2003 - 2007 DevelopIntelligence
EJB Container Technologies EJB containers provide state, workflow, and persistent application environments An EJB container supports the following technologies: Session Beans (SB) Stateful (SFSB) Stateless (SLSB)
Entity Beans (EB) Bean Managed Persistence (BMP) Container Managed Persistence (CMP)
Message Driven Beans (MDB) © 2003 - 2007 DevelopIntelligence
Java EE Application Diagram
JSP
JSF
SB
EB
Servlet
JSTL
MDB
WSI
Standard Services Java SE Platform Web Container & Technologies EJB Container & Technologies Enterprise Container Java EE Platform © 2003 - 2007 DevelopIntelligence
Java EE Development
©2003 - 2007 DevelopIntelligence LLC
Java EE Applications Java EE applications are built using components, modules, and deployment units The Java EE application structure provides: Functional encapsulation Reusability Simplified configuration Transportability
Modular-oriented development encourages Good Object oriented design Separation of functional concern Separation of development concern
Has been considered the “struggle” of Java EE © 2003 - 2007 DevelopIntelligence
Components and Modules Components enable application development Built using Java SE and Java EE technologies Components may be “homegrown” or third-party Components are grouped together as modules
Modules represent basic unit of a Java EE application One or more component per module Modules consist of same “component type” Modules are described by deployment descriptors Modules and deployment descriptors packaged together as deployment units © 2003 - 2007 DevelopIntelligence
Deployment Units Java EE applications may consist of A Single deployment unit Multiple deployment units packaged together as a single deployment unit
Deployment units are the standard way to package and deploy Java EE applications Leverage Java SE deployment concept Have strict structure governing contents
Java EE defines three deployment units: Web Application Archive (WAR) Java Archive (JAR) Enterprise Application Archive (EAR) © 2003 - 2007 DevelopIntelligence
Java EE Development Process
Creation
© 2003 - 2007 DevelopIntelligence
Assembly
Deployment
Java EE Development Roles Java EE application development process requires broad range of competencies Java development skills Source control / configuration skills System administration skills
To simplify “jack of all trades” skill requirement, Java EE specification defines set of Platform Roles Not all platform roles are realized within a software development organization © 2003 - 2007 DevelopIntelligence
Java EE Platform Roles Java EE Product Provider Application component provider Application assembler Deployer System Administrator Tool Provider System Component Provider
© 2003 - 2007 DevelopIntelligence
Summary Java EE platform defines an application programming model and an execution environment Java EE platform enables WORA in middleware Java EE is comprised of Standard Services, Web Technologies, and EJB Technologies Java EE uses a deployment unit strategy for application packaging and deployment
© 2003 - 2007 DevelopIntelligence
Resources Web Java EE Tutorial http://java.sun.com/javaee/5/docs/tutorial/doc/ Java EE Specification http://jcp.org/aboutJava/communityprocess/pfd/jsr244/
Books “Head First Servlets and JSP” : ISBN 0596005407 “Head First EJB” : ISBN 0596005717
© 2003 - 2007 DevelopIntelligence