This is a presentation given in a Java Open day conducted by Trainologic.
Trainologic shares its training content for free at trainologic.org you can find many more free full course there.
1. Java EE 6
The Future of Enterprise Applications
copyright 2008 trainologic LTD
2. Java EE 6
• Introduction.
• New Concepts.
• New Components.
• Q&A.
copyright 2008 trainologic LTD
3. Java EE 6
Introduction
• Java EE 5, was all about ease of development.
• The major change was made by moving to EJB 3.
• Java EE 6, A.K.A JSR 316, will make the use of Java EE
easier and more feasible in different environments.
3
copyright 2008 trainologic LTD
4. Java EE 6
Introduction
• The status of the JSR is Early Draft Review.
• Release is expected in May 09, but as we have already
learned, it might not be exactly on time...
4
copyright 2008 trainologic LTD
5. Java EE 6
Goals
5
copyright 2008 trainologic LTD
6. Java EE 6
Goals
• Easier to Use, Easier to Learn.
5
copyright 2008 trainologic LTD
7. Java EE 6
Goals
• Easier to Use, Easier to Learn.
Well, this is the usual stuff. What’s really new???
5
copyright 2008 trainologic LTD
8. Java EE 6
Goals
• Easier to Use, Easier to Learn.
Well, this is the usual stuff. What’s really new???
• Easier Extensibility - More ways to integrate
frameworks.
5
copyright 2008 trainologic LTD
9. Java EE 6
Goals
• Easier to Use, Easier to Learn.
Well, this is the usual stuff. What’s really new???
• Easier Extensibility - More ways to integrate
frameworks.
• Easier to Evolve - The size and wideness of the Java EE
has made it difficult to evolve. Profiles and Pruning
should take care of that.
5
copyright 2008 trainologic LTD
10. Java EE 6
Goals
• Easier to Use, Easier to Learn.
Well, this is the usual stuff. What’s really new???
• Easier Extensibility - More ways to integrate
frameworks.
• Easier to Evolve - The size and wideness of the Java EE
has made it difficult to evolve. Profiles and Pruning
should take care of that.
• SOA - Better support for SOA is also defined as a goal
of the new spec.
5
copyright 2008 trainologic LTD
11. Java EE 6
• Introduction.
• New Concepts.
• New Components.
• Q&A.
copyright 2008 trainologic LTD
12. Java EE 6
Extensibility
• During the lifetime of the Java EE platform, many
frameworks has evolved.
• Several of these frameworks became de-facto
standards, like Struts and Facelets.
• Integrating these frameworks with a Java EE
application is a pain.
• Java EE 6 plans to “relief” this pain.
7
copyright 2008 trainologic LTD
13. Java EE 6
Extensibility
• Java EE 6 Embraces the frameworks by supplying auto
discovery of Servlets, Servlet Filters and Web
Application Listeners.
• These are all widely used integration point for known
frameworks.
• The Connector Architecture SPI is expected to change
as well.
8
copyright 2008 trainologic LTD
14. Java EE 6
Profiles
• Java EE has became a huge platform.
• Most Java EE projects do not use major part of the
platform.
• For example, there are many cases where EJBs are not
in use while Servlets, Naming and JDBC are.
• Profiles tries to focus the Java EE platform towards
specific classes of applications.
9
copyright 2008 trainologic LTD
15. Java EE 6
Profiles
• “A profile is a configuration of the Java EE platform
targeted at a specific class of applications.” the Java EE 6
Specification, early draft.
• The idea is to identify typical uses of the platform and
create a profile that includes only the parts of the
platform which are relevant to the typical use.
10
copyright 2008 trainologic LTD
16. Java EE 6
Profiles
• So... is a profile just a bundle of Java EE sub
specifications?
• No, each profile must include the minimum set of
mandatory components and may add some other
components which are not part of Java EE.
• Moreover, a profile must implement the special
interactions between the different components, like
dependency injection.
11
copyright 2008 trainologic LTD
17. Java EE 6
Profiles
• Each profile is defined by the JCP as a separate JSR.
• The first profile is already defined by the Java EE 6
spec: The Web Profile.
• You have guessed correctly, it is for web applications.
12
copyright 2008 trainologic LTD
18. Java EE 6
Pruning
• As the Java EE platform is getting older, it is carrying
some pre-historic creatures like EJB Entity Beans on its
back.
• A process called pruning is starting with Java EE 6.
• Marking a component as pruned, means it is candidate
to become optional.
• Pruning is marked in the JavaDoc.
13
copyright 2008 trainologic LTD
19. Java EE 6
Pruning
• A component marked pruned at the current version
may become optional in the next version.
• It is for the comity of the next version to decide it the
component becomes optional or not.
• Current Pruning list:
JAX-RPC - Replaced by JAX-WS.
•
EJB Entity Beans - Replaced by JPA.
•
JAXR - API for XML Registries, never widely adopted.
•
JSR 88 - Deployment API, never widely adopted.
•
14
copyright 2008 trainologic LTD
20. Java EE 6
• Introduction.
• New Concepts.
• New Components.
• Q&A.
copyright 2008 trainologic LTD
22. Java EE 6
New Components
• As you can see, there is a long list of components.
• We will explore the most popular ones:
EJB
•
JPA
•
Servlets
•
JSF
•
17
copyright 2008 trainologic LTD
23. Java EE 6
EJB 3.1
• Stage: Public Review.
• The long waited Singleton bean has arrived.
• No Object Interface required.
• Asynchronous business methods.
• Standard global JNDI name:
java:global/app/module/bean#interface
•
18
copyright 2008 trainologic LTD
24. Java EE 6
EJB 3.1 - Singleton
• Up to version 3.1 there was no easy way to share data
throughout the application.
• The EJB 3.1 Singleton is an Application wide Singleton.
• Concurrency can be managed either by the container or
by the Bean Developer.
• Container Managed Concurrency enables Read/Write
Lock using annotations.
19
copyright 2008 trainologic LTD
26. Java EE 6
EJB 3.1 - Asynchronous
• In Java EE there is a rule in the specification forbidding
the developer from opening new threads.
• The “correct” way to perform asynchronous operations
in Java EE is using JMS. This is quite cumbersome...
• EJB 3.1 solves this problem by presenting the new
asynchronous method calls in session beans.
• Since the method returns before creating the return
value, it can either be void or return a Future.
21
copyright 2008 trainologic LTD
27. Java EE 6
EJB 3.1 - Asynchronous
@Stateless
public class OrderBillingServiceBean implements OrderBillingService {
...
@Asynchronous
public Future<OrderStatus> billOrder(Order order) {
try {
// Attempt to charge the order.
bill(order);
return new AsyncResult<OrderStatus>(OrderStatus.COMPLETE);
} catch (BillingException be) {
// Send email notification of billing failure.
notifyBillingFailure(be, order);
return new AsyncResult<OrderStatus>
(OrderStatus.BILLING_FAILED);
}
}
}
22
copyright 2008 trainologic LTD
28. Java EE 6
EJB 3.1 - Lite
• EJBs outside of the container.
• Subset of EJB 3.1
• Embeddable container API.
• Bootstrap on Java SE.
23
copyright 2008 trainologic LTD
29. Java EE 6
EJB 3.1 - Lite
24
copyright 2008 trainologic LTD
30. Java EE 6
JPA 2.0
• More sophisticated mapping options:
Access control in the property/field level.
•
Orphan Removal.
•
• Order Columns.
• Persisting non-entity collections.
25
copyright 2008 trainologic LTD
31. Java EE 6
JPA 2.0
• Relationships in embeddable objects.
• Unidirectional one to many with foreign key.
• Criteria API for Querying.
• Validation by JSR 303.
26
copyright 2008 trainologic LTD
32. Java EE 6
Servlets 3.0
• Stage: Public Review.
• Annotation based configuration.
• Auto-discovery of Servlets, Filters and Listeners.
• Modular web.xml.
• Asynchronous Support.
• Authentication API.
• HTTP-Only Cookies.
27
copyright 2008 trainologic LTD
33. Java EE 6
Servlets 3.0 - Annotations
• Like in EJB, deployment descriptors becomes
completely optional in Servlets 3.0
• All configuration can be defined using annotations.
• In case annotations and xml co-exist, the data in the
xml takes precedence over the data in the annotations.
28
copyright 2008 trainologic LTD
34. Java EE 6
Servlets 3.0 - Annotations
@Servlet(urlMappings={quot;/MyAppquot;})
public class MyServlet {
@GET
public void handleGet(HttpServletRequest req,
HttpServletResponse res) {
....
}
}
29
copyright 2008 trainologic LTD
35. Java EE 6
Servlets 3.0 - Asynchronous
Invocation
• Sometimes we need to perform a long running blocking
operation as a part of a Servlet request.
• Performing this kind of operation from the thread
running the servlet code is not efficient.
• This can cause a starvation in cases this operation
common.
• Asynchronous Invocation solves this problem by
releasing the original thread and passing the control to
another thread.
30
copyright 2008 trainologic LTD
36. Java EE 6
Servlets 3.0 - Asynchronous
Invocation
@WebServlet(quot;/fooquot; asyncSupported=true)
public class MyServlet extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse res) {
...
AsyncContext aCtx = request.startAsync(req, res);
ScheduledThreadPoolExecutor executor = new ThreadPoolExecutor(10);
executor.execute(new AsyncWebService(aCtx));
}
}
31
copyright 2008 trainologic LTD
37. Java EE 6
Servlets 3.0 - Asynchronous
Invocation
public class AsyncWebService implements Runnable {
AsyncContext ctx;
public AsyncWebService(AsyncContext ctx) {
this.ctx = ctx;
}
public void run() {
// Invoke web service and save result in request attribute
// Forward the request to render the result to a JSP.
ctx.forward(quot;/render.jspquot;);
}
}
32
copyright 2008 trainologic LTD
38. Java EE 6
JSF 2.0
• Stage: Public Review.
• ProjectStage, did anybody say ROR?
The value is set using JNDI or Context parameter.
•
Can be one of Production, Development, UnitTest,
•
SystemTest or Extension.
Then you can query for the stage using:
•
Application.getProjectStage()
33
copyright 2008 trainologic LTD
39. Java EE 6
JSF 2.0
• Better Resource management for components.
• Resource re-location.
• Both of these features enables component authors to
load their own resources like css, js scrips, images and
other resources.
34
copyright 2008 trainologic LTD
40. Java EE 6
JSF 2.0
• Enhanced flexible event mechanism.
• New Scope: View.
• Full Ajax support including partial processing and js
Library.
• Facelets.
35
copyright 2008 trainologic LTD
41. Thank You
Q&A
Gal Marder,
CEO, Trainologic LTD
copyright 2008 trainologic LTD