Java EE Overview
Agenda
- What is Java EE?
 - Evolution of Enterprise Application Development Frameworks
 - Why Java EE?
 - Java EE Platform Architecture
 - How to get started
 
What is Java EE?

- Open and standard based platform for
 - developing, deploying and managing
 - n-tier, Web-enabled, server-centric, and component-based enterprise applications
 
The Java™ Platform
 

Evolution of Enterprise Application Development Frameworks
- Single tier
 - Two tier
 - Three tier
- RPC based
 - Remote object based
 
 - Three tier (HTML browser and Web server)
 - Proprietary application server
 - Standard application server
 
About Enterprise Applications
- Things that make up an enterprise application
- Presentation logic
 - Business logic
 - Data access logic (and data model)
 - System services
 
 - The evolution of enterprise application framework reflects
- How flexibly you want to make changes
 - Where the system services are coming from
 
 
Single Tier (Mainframe-based)

- Dumb terminals are directly connected to mainframe
 - Centralized model (as opposed distributed model)
 - Presentation, business logic, and data access are intertwined in one monolithic mainframe application
 
Single-Tier: Pros & Cons
- Pros:
- No client side management is required
 - Data consistency is easy to achieve
 
 - Cons:
- Functionality (presentation, data model, business logic) intertwined, difficult for updates and maintenance and code reuse
 
 
Two-Tier

- Fat clients talking to back end database
- SQL queries sent, raw data returned
 
 - Presentation,Business logic and Data Model processing logic in client application
 
-  Pro:
- DB product independence (compared to single-tier model)
 
 - Cons:
- Presentation, data model, business logic are intertwined (at client side), difficult for updates and maintenance
 - Data Model is “tightly coupled” to every client: If DB Schema changes, all clients break
 - Updates have to be deployed to all clients making System maintenance nightmare
 - DB connection for every client, thus difficult to scale
 - Raw data transferred to client for processing causes high network traffic
 
 
Three-Tier (RPC based)

- Thinner client: business & data model separated from presentation
- Business logic and data access logic reside in middle tier server while client handles presentation
 
 -  Middle tier server is now required to handle system services
- Concurrency control, threading, transaction, security, persistence, multiplexing, performance, etc.
 
 
Three-tier (RPC based): Pros & Cons
- Pro:
- Business logic can change more flexibly than 2-tier model
 - Most business logic reside in the middle-tier server
 
 - Cons:
- Complexity is introduced in the middle-tier server
 - Client and middle-tier server is more tightlycoupled (than the three-tier object based model)
 - Code is not really reusable (compared to object model based)
 
 
Three-Tier (Remote Object based)

-  Business logic and data model captured in objects
- Business logic and data model are now described in “abstraction” (interface language)
 
 - Object models used: CORBA, RMI, DCOM
- Interface language in CORBA is IDL
 - Interface language in RMI is Java interface
 
 
Three-tier (Remote Object based): Pros & Cons
- Pro:
- More loosely coupled than RPC model
 - Code could be more reusable
 
 - Cons:
- Complexity in the middle-tier still need to be addressed
 
 
Three-Tier (Web Server)

- Browser handles presentation logic
 - Browser talks Web server via HTTP protocol
 - Business logic and data model are handled by “dynamic contents generation” technologies (CGI, Servlet/JSP, ASP)
 
Three-tier (Web Server based): Pros & Cons
- Pro:
- Ubiquitous client types
 - Zero client management
 - Support various client devices 
- J2ME-enabled cell-phones
 
 
 - Cons:
- Complexity in the middle-tier still need to be addressed
 
 
Trends
- Moving from single-tier or two-tier to multitier architecture
 - Moving from monolithic model to objectbased application model
 - Moving from application-based client to HTML-based client
 
Single-tier vs. Multi-tier

Monolithic vs. Object-based

Outstanding Issues & Solution
- Complexity at the middle tier server still remains
 - Duplicate system services still need to be provided for the majority of enterprise applications
- Concurrency control, Transactions
 - Load-balancing, Security
 - Resource management, Connection pooling
 
 - How to solve this problem?
- Commonly shared container that handles the above system services
 - Proprietary versus Open-standard based
 
 
Proprietary Solution
- Use "component and container" model
- Components captures business logic
 - Container provides system services
 
 - The contract between components and container is defined in a well-defined but with proprietary manner
 - Problem of proprietary solution: Vendor lock-in
 - Example: Tuxedo, .NET
 
Open and Standard Solution
- Use "component and container" model in which container provides system services in a well-defined and as industry standard
 - Java EE is that standard that also provides portability of code because it is based on Java technology and standardbased Java programming APIs
 
Why Java EE?
Platform Value to Developers
- Can use any Java EE implementation for development and deployment
- Use production-quality standard implementation which is free for development/deployment
 - Use high-end commercial Java EE products for scalability and fault-tolerance
 
 - Vast amount of Java EE community resources
- Many Java EE related books, articles, tutorials, quality code you can use, best practice guidelines, design patterns etc.
 
 - Can use off-the-shelf 3rd-party business components
 
Platform Value to Vendors
- Vendors work together on specifications and then compete in implementations
- In the areas of Scalability, Performance, Reliability, Availability, Management and development tools, and so on
 
 - Freedom to innovate while maintaining the portability of applications
 - Do not have create/maintain their own proprietary APIs
 
Platform Value to Business Customers
- Application portability
 - Many implementation choices are possible based on various requirements
- Price (free to high-end), scalability (single CPU to clustered model), reliability, performance, tools, and more
 - Best of breed of applications and platforms
 
 - Large developer pool
 
Java EE APIs & Technologies
- Java EE 1.4 APIs and Technologies
 - J2SE 1.4 (improved)
 - JAX-RPC (new)
 - Web Service for Java EE
 - Java EE Management
 - Java EE Deployment
 - JMX 1.1
 - JMS 1.1
 - JTA 1.0
 - Servlet 2.4
 - JSP 2.0
 - EJB 2.1
 - JAXR
 - Connector 1.5
 - JACC
 - JAXP 1.2
 - JavaMail 1.3
 - JAF 1.0
 
Java EE 5
- JAX-WS 2.0 & JSR 181
 - Java Persistence
 - EJB 3.0
 - JAXB 2.0
 - JavaSever Faces 1.2 new to Platform
 - JSP 2.1 Unification w/ JSF 1.2
 - StAX Pull Parser new to Platform
 
J2EE is an End-to-End Architecture
The Java EE Platform Architecture

Java EE is End-to-End Solution

N-tier Java EE Architecture

Java EE Component & Container Architecture
Java EE Containers & Components

Containers and Components

- Containers do their work invisibly
- No complicated APIs
 - They control by interposition
 
 - Containers implement Java EE
- Look the same to components
 - Vendors making the containers have great freedom to innovate
 
 
Java EE Application Development & Deployment Life Cycle
- Write and compile component code
- Servlet, JSP, EJB
 
 - Write deployment descriptors for components
- From Java EE 5, you can use annotations
 
 - Assemble components into ready-todeployable package
 - Deploy the package on a server
 
Life-cycle Illustration

Java EE Development Roles
- Component provider
- Bean provider
 
 - Application assembler
 - Deployer
 - Platform provider
- Container provider
 
 - Tools provider
 - System administrator
 
The Deployment Descriptor
- Gives the container instructions on how to manage and control behaviors of the Java EE components
- Transaction
 - Security
 - Persistence
 
 - Allows declarative customization (as opposed to programming customization)
- XML file
 
 - Enables portability of code
 
Java EE Application Anatomies
Possible Java EE Application Anatomies

Java EE Application Anatomies
- 4-tier Java EE applications
- HTML client, JSP/Servlets, EJB, JDBC/Connector
 
 - 3-tier Java EE applications
- HTML client, JSP/Servlets, JDBC
 
 - 3-tier Java EE applications
- EJB standalone applications, EJB, JDBC/Connector
 
 - B2B Enterprise applications
- Java EE platform to Java EE platform through the exchange of JMS or XML-based messages
 
 
Which One to Use?
- Depends on several factors
- Requirements of applications
 - Availability of EJB tier
 - Availability of developer resource
 
 
How to Get Started
Step1: For Beginners and Intermediate Java EE Programmers
- Follow along with this course
 - Start using Java EE IDE of your choice
 - Try open source IDE's
- NetBeans IDE (netbeans.org)
 - Eclipse
 
 
Step2: Next Step (For Advanced Java EE Programmers)
- Learn practical open-source solutions
- Spring framework (for light-weight framework)
 - Hibernate (for O/R mapping)
 - JDO (for transparent persistence)
 - Struts, WebWork, Tapestry (for Web-tier frameworks)
 - JUnit (for unit testing)
 - Log4j (for logging)
 - Many more
 
 
Summary & Resources
Summary
- Java EE is the platform of choice for development and deployment of n-tier, web-based, transactional, componentbased enterprise applications
 - Java EE is standard-based architecture
 - Java EE is all about community
 - Java EE evolves according to the needs of the industry
 
