Your SlideShare is downloading. ×
0
Java EE 6
Java EE 6
Java EE 6
Java EE 6
Java EE 6
Java EE 6
Java EE 6
Java EE 6
Java EE 6
Java EE 6
Java EE 6
Java EE 6
Java EE 6
Java EE 6
Java EE 6
Java EE 6
Java EE 6
Java EE 6
Java EE 6
Java EE 6
Java EE 6
Java EE 6
Java EE 6
Java EE 6
Java EE 6
Java EE 6
Java EE 6
Java EE 6
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Java EE 6

3,176

Published on

Platform overview and Highlights. Speaker: Roberto Chinnici, Spec Lead JSR 316

Platform overview and Highlights. Speaker: Roberto Chinnici, Spec Lead JSR 316

Published in: Technology
0 Comments
18 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
3,176
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
0
Comments
0
Likes
18
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Java EE 6 Platform Overview and Highlights Roberto Chinnici JSR-316 Specification Lead Sun Microsystems, Inc. 1
  • 2. Contents Goals • Features • Component JSRs • Highlights • Schedule • Sun Confidential: Internal Only 2
  • 3. Goals for the Java EE 6 Platform Easier to use • More flexible • Easier to learn • Easier to evolve going forward • Sun Confidential: Internal Only 3
  • 4. Profiles Platform Evolution Java EE 6 EJB Lite Ease of Restful WS Development Web Beans Java EE 5 Validation Web Extensibility Ease of Services Development J2EE 1.4 Annotations EJB 3.0 Web Services, Robustness Persistence API Management, J2EE 1.3 New and Deployment, Enterprise Updated CMP, Async. Java Platform Web Services Connector Connector Java EE 6 J2EE 1.2 Architecture Web Profile Servlet, JSP, EJB, JMS JPE RMI/IIOP Project Sun Confidential: Internal Only 4
  • 5. Major New Features in Java EE 6 Profiles • Pruning • Extensibility • More ease of development • Sun Confidential: Internal Only 5
  • 6. Profiles A profile is a targeted bundle of technologies • Rules set by the Java EE Platform spec • Profiles can be subsets, supersets, overlapping • Define immediately a Web Profile • JCP process for future profiles • Sun Confidential: Internal Only 6
  • 7. Pruning • Make some technologies optional • Same rules as proposed by Java SE > “pruned now, optional in the next release” • Pruned status will be marked out in the javadocs • Current pruning list: > JAX-RPC, EJB Entity Beans, JAXR, JSR-88 Sun Confidential: Internal Only 7
  • 8. Extensibility • Embrace open source libraries, frameworks • Full pluggability in the web container • No configuration needed for web frameworks > Discover servlet, servlet filters, listeners for a framework > Dynamically add servlets, filters to an application • Used to support scripting languages Sun Confidential: Internal Only 8
  • 9. Proposed Components (1) Full JSRs EJB 3.1 (JSR 318) PFD • PFD • JPA 2.0 (JSR 317) PR DONE Servlet 3.0 (JSR 315) • JSF 2.0 (JSR 314) PFD SOON • JAX-RS 1.0 (JSR 311) COMPLETED • Connector Architecture 1.6 (JSR 322) PFD • PR DONE Bean Validation 1.0 (JSR 303) • JCDI 1.0 (née Web Beans) (JSR 299) PR DONE • Sun Confidential: Internal Only 9
  • 10. Proposed Components (2) Maintenance Releases JAXB 2.2 COMPLETED • SOON • JAX-WS 2.2 SOON JSR-109 1.3 • JAX-RS 1.1 COMPLETED • EL 1.2 • JSP 1.2 • Authentication SPI 1.1 (JSR-196) COMPLETED • Common Annotations 1.1 (JSR-250) • Sun Confidential: Internal Only 10
  • 11. Web Profile • A fully functional mid-sized profile for web apps • Accepted: > Servlet 3.0, JSP 2.1, JSR-45, EL 1.2, JSTL 1.2, JSF 2.0 > EJB Lite 3.1, JTA 1.1, JPA 2.0, JSR-250 > Bean Validation 1.0 • Not decided yet: > Web Beans 1.0 • Out for now: > JAX-RS 1.1 Sun Confidential: Internal Only 11
  • 12. Servlet 3.0 Highlights (1) • Annotations to define web components > @WebServlet @WebFilter @WebListener • Greatly reduced editing of web.xml • File upload • Customizable session cookie configuration > ServletContext.getSessionCookieConfig method • Selectable session tracking modes > ServletContext.setSessionTrackingMode > ServletContext.getEffectiveSessionTrackingModes Sun Confidential: Internal Only 12
  • 13. Servlet 3.0 Highlights (2) • Modular web.xml using fragments > WEB-INF/lib/mylib.jar → META-INF/web-fragment.xml • New initializers for extensions > ServletContainerInitializer interface • Programmatic API for dynamic registration of servlets and filters > ServletContext.addServlet/addFilter methods • Ability to tweak servlet/filter configuration at startup > ServletRegistration interface Sun Confidential: Internal Only 13
  • 14. Servlet 3.0 Async Processing • Use cases: Comet, chat rooms, long waits • Opt-in system for servlets, filters > @WebServlet(asyncSupported=true) > @WebFilter(asyncSupported=true) • Enter async mode explicitly: > AsyncContext ctx = ServletRequest.startAsync(...) • Then: > ctx.dispatch(...) // to somebody else > ctx.start(Runnable) // to an async action > ctx.complete() // done processing Sun Confidential: Internal Only 14
  • 15. EJB 3.1 Highlights • Singleton beans > @Singleton • No-interface view • Calendar timers > @Schedule(dayOfWeek=“Fri”, hour=”12”) • Non-persistent timers > @Schedule(minute=”*/10”, hour=”*”, persistent=false) • Async business methods > @Asynchronous public Future<Result> compute(...) Sun Confidential: Internal Only 15
  • 16. EJB 3.1 Lite • Simple, modern subset of EJB for use outside of the full platform • Contents: Session beans (stateful, stateless, singletons) > Transaction and security attributes > Interceptors > ejb-jar.xml > • Embeddable container API • Bootstraps on Java SE • Beans looked up in JNDI by global name Sun Confidential: Internal Only 16
  • 17. EJB Components in a Web Module • EJB components can be defined directly inside a web module (war file) • Things to keep in mind: java:comp is shared by all components > A single class loader is used > Local view scoped to the web module > Descriptor WEB-INF/ejb-jar.xml > or META-INF/ejb-jar.xml in a jar inside WEB-INF/lib > No entity beans Sun Confidential: Internal Only 17
  • 18. Multiple JNDI scopes • Familiar with java:comp • Now adding: > java:module module-scoped, like inside a war file > java:application application-scoped > java:global scoped to multiple applications • Usable throughout > @Resource(name=”java:module/env/db”) DataSource db; • EJBs are automatically registered > java:global/myApp/myModule/MyBean!com.acme.MyInterface > java:module/MyBean // shorthand Sun Confidential: Internal Only 18
  • 19. JPA 2.0 Highlights • Metamodel API > OO view on entities, managed types, etc. > EntityManagerFactory.getMetaModel • Typesafe metamodel Generated by tools and stored in a persistence unit > Typesafe view of attributes, including collections > @Entity public class Order { … } > @TypesafeMetamodel public class Order_ { … } > • Criteria API to build queries in Java > Alternative to JPAQL Sun Confidential: Internal Only 19
  • 20. JPA 2.0 Criteria Query Example SELECT o.quantity, a.zipcode FROM Customer c JOIN c.orders o JOIN c.address a WHERE a.state = 'CA’ ORDER BY o.quantity, a.zipcode @PersistenceUnit EntityManagerFactory emf; QueryBuilder qb = emf.getQueryBuilder() CriteriaQuery q = qb.create(); Root<Customer> c = q.from(Customer.class); Join<Customer, Order> o = c.join(Customer_.orders); Join<Customer, Address> a = c.join(Customer_.address); q.where(qb.equal(a.get(Address_.state), quot;CAquot;)); q.orderBy(qb.asc(o.get(Order_.quantity)), qb.asc(a.get(Address_.zipcode))); q.select(o.get(Order_.quantity), a.get(Address_.zipcode)); Sun Confidential: Internal Only 20
  • 21. Bean Validation (JSR-303) • Now included in Java EE 6 • Integrated with JSF 2.0 and JPA 2.0 • Examples: > @NotNull @Size(max=40) private String streetName; > @NotNull @Valid private Country country; • TraversableResolver for object graph validation • Validation API * > Set<ConstraintViolation> Validator.validate(Object) • Validator and ValidatorFactory will be injectable Sun Confidential: Internal Only 21
  • 22. JCDI (formerly known as Web Beans) • Type-based dependency injection > @LoggedIn User user; > @Produces @LoggedIn User getLoggedInUser() { … } • Context management > @RequestScoped, @SessionScoped, @ConversationScoped, ... • Reflective API > Manager, Context, InjectionPoint • Heavy use of meta-annotations > @BindingType public @interface LoggedIn {} Sun Confidential: Internal Only 22
  • 23. JCDI Basics • Resolution is by bean type and binding type(s) > bean type + set(binding types) → bean Not string based! • @LoggedIn User = (User, @LoggedIn) → bean • Bean ≠ Class • Beans are enabled/disabled in batches via • deployment types • Put as much info as possible on bean class > @ConversationScoped @Current public class ShoppingCart {} Sun Confidential: Internal Only 23
  • 24. JCDI Example @ConversationScoped @Current public class ShoppingCart { … } @PayByCreditCard public class CreditCardPaymentProcessor implements PaymentProcessor {…} public class Checkout { private @Current ShoppingCart cart; private @PayByCreditCard PaymentProcessor payByCard; public void checkout() { … } } Sun Confidential: Internal Only 24
  • 25. Transparency • JAX-RS 1.0 was done completely in the open Public expert group mailing list and meeting minutes > Public issue tracker > Public spec drops > Open source reference implementation > • JSF 2.0 opened up its mailing list recently • All other Java EE JSRs to follow shortly • Commitment to transparency going forward > All Java EE 7 JSRs will be done in the open from the very beginning Sun Confidential: Internal Only 25
  • 26. Schedule Public review of all specs completed • Proposed final drafts in progress • Final release September 2009 • Implementation: GlassFish V3 • Sun Confidential: Internal Only 26
  • 27. Q&A Sun Confidential: Internal Only 27
  • 28. Java EE 6 Platform Overview and Highlights Roberto Chinnici roberto.chinnici@sun.com 28

×