Your SlideShare is downloading. ×
Java EE 6 & GlassFish v3 at Vancouver JUG, Jan 26, 2010
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 & GlassFish v3 at Vancouver JUG, Jan 26, 2010

2,071

Published on

Java EE 6 & GlassFish v3 at Vancouver JUG, Jan 26, 2010

Java EE 6 & GlassFish v3 at Vancouver JUG, Jan 26, 2010

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

  • Be the first to like this

No Downloads
Views
Total Views
2,071
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
91
Comments
0
Likes
0
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 & GlassFish v3 Paving the path for future Arun Gupta, GlassFish Guy blogs.sun.com/arungupta, @arungupta
  • 2. Are you tweeting ? #glassfish #vanjug
  • 3. Java EE: Past & Present Flexible Ease of Development Java EE 6 Pruning Java EE 5 Extensibility Web Ease of Profiles Services Development Ease-of-dev Annotations EJB Lite J2EE 1.4 EJB 3.0 RESTful WS Web Services, Persistence API Robustness Management, New and CDI Enterprise Deployment, Updated Java J2EE 1.3 Async. Web Services Platform CMP, Connector Connector Architecture ` Java EE 6 J2EE 1.2 Servlet, JSP, Web Profile EJB, JMS JPE RMI/IIOP Project
  • 4. Compatible Java EE 5 Implementations
  • 5. Compatible Java EE 6 Implementations Today: Coming:
  • 6. Goals for the Java EE 6 Platform • Flexible & Light-weight • Extensible – Embrace Open Source Frameworks • Easier to use, develop on – Continue on path set by Java EE 5
  • 7. Java EE 6 is Flexible • Decouple specifications to allow more combinations • Expands potential licensee ecosystem • Profiles > Targeted bundle of technologies > Defined through the JCP > Web Profile Defined – Defined by the Java EE 6 Expert Group
  • 8. Java EE 6 Web Profile 1.0 • Fully functional mid-sized profile > Actively discussed in the Java EE 6 Expert Group and outside it > Technologies – Servlets 3.0, JSP 2.2, EL 2.2, Debugging Support for Other Languages 1.0, JSTL 1.2, JSF 2.0, Common Annotations 1.1, EJB 3.1 Lite, JTA 1.1, JPA 2.0, Bean Validation 1.0, Managed Beans 1.0, Interceptors 1.1, Context & Dependency Injection 1.0, Dependency Injection for Java 1.0
  • 9. Java EE 6 is Lightweight • Pruning > Make some technologies optional • Pruned today, means > Optional in the next release > Deleted in the subsequent releases • Pruned technologies will be marked in Javadocs • Technologies > JAX-RPC, EJB 2.x Entity Beans, JAXR, JSR 88
  • 10. Java EE 6 is Extensible • Embrace open source frameworks > Wicket, Lift, Spring, Struts, ... • Zero-configuration, drag-and-drop for web frameworks > Servlets, servlet filters, context listeners for a framework get discovered and registered automatically • Plugin libraries using web fragments
  • 11. <web-fragment> <filter> <filter-name>wicket.helloworld</filter-name> <filter-class>org.apache.wicket.protocol.http.WicketFilter</filter-class> <init-param> <param-name>applicationClassName</param-name> <param-value>...</param-value> </init-param> </filter> <filter-mapping> <filter-name>wicket.helloworld</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> </web-fragment> http://blogs.sun.com/arungupta/entry/totd_91_applying_java_ee
  • 12. <web-fragment> <filter> <filter-name>LiftFilter</filter-name> <display-name>Lift Filter</display-name> <description>The Filter that intercepts lift calls</description> <filter-class>net.liftweb.http.LiftFilter</filter-class> </filter> <filter-mapping> <filter-name>LiftFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> </web-fragment> http://blogs.sun.com/arungupta/entry/totd_101_applying_servlet_3
  • 13. Java EE 6 - Done • Specifications approved by the JCP • Reference Implementation is GlassFish v3 • TCK
  • 14. Java EE 6 Specifications • The Platform • Java EE 6 Web Profile 1.0 • Managed Beans 1.0
  • 15. Java EE 6 Specifications New • Context and Dependency Injection for Java EE (JSR 299) • Bean Validation 1.0 (JSR 303) • Java API for RESTful Web Services (JSR 311) • Dependency Injection for Java (JSR 330)
  • 16. Java EE 6 Specifications Extreme Makeover • Java Server Faces 2.0 (JSR 314) • Java Servlets 3.0 (JSR 315) • Java Persistence 2.0 (JSR 317) • Enterprise Java Beans 3.1 & Interceptors 1.1 (JSR 318) • Java EE Connector Architecture 1.6 (JSR 322)
  • 17. Java EE 6 Specifications Updates • Java API for XML-based Web Services 2.2 (JSR 224) • Java API for XML Binding 2.2 (JSR 222) • Web Services Metadata MR3 (JSR 181) • JSP 2.2/EL 2.2 (JSR 245) • Web Services for Java EE 1.3 (JSR 109) • Common Annotations 1.1 (JSR 250) • Java Authorization Contract for Containers 1.3 (JSR 115) • Java Authentication Service Provider Interface for Containers 1.0 (JSR 196)
  • 18. Java EE 6 Specifications As is JDBC 3.0 API • Java Naming and Directory Interface 1.2 • Java Message Service 1.1 • Java Transaction API 1.1 • Java Transaction Service 1.0 • JavaMail API Specification 1.4 • JavaBeans Activation Framework 1.1 • Java API for XML Processing 1.3 • Java API for XML-based RPC 1.1 • SOAP with Attachments API for Java 1.3 • Java API for XML Registries 1.0 • Java EE Management Specification 1.1 (JSR 77) • Java EE Deployment Specification 1.2 (JSR 88) • Java Management Extensions 1.2 • Java Authentication and Authorization Service 1.0 • Debugging Support for Other Languages (JSR 45) • Standard Tag Library for JSP 1.2 (JSR 52) • Streaming API for XML 1.0 (JSR 173) •
  • 19. Java EE 6 & Ease-of-development • Continue advancements of Java EE 5 • Primary focus: Web Tier • General principles > Annotation-based programming model > Reduce or eliminate need for DD > Traditional API for advanced users
  • 20. EoD: Servlets Servlet in Java EE 5: Two Files <!--Deployment descriptor /* Code in Java Class */ web.xml --> <web-app> package com.sun; <servlet> public class MyServlet extends <servlet-name>MyServlet HttpServlet { </servlet-name> public void <servlet-class> doGet(HttpServletRequest com.sun.MyServlet req,HttpServletResponse res) </servlet-class> </servlet> { <servlet-mapping> <servlet-name>MyServlet ... </servlet-name> <url-pattern>/myApp/* } </url-pattern> </servlet-mapping> ... ... </web-app> }
  • 21. EoD: Servlets in Java EE 6 package com.sun; @WebServlet(name=”MyServlet”, urlPattern=”/myApp/*”) public class MyServlet extends HttpServlet { public void doGet(HttpServletRequest req, HttpServletResponse res) { ... } http://blogs.sun.com/arungupta/entry/totd_81_getting_started_with
  • 22. Servlet 3.0 • Annotations to declare Servlets, Filters, Init param, ... > “web.xml” is optional in most of the cases • Pluggable frameworks using web fragments • Async support • Programmatic authentication and logout • Default error page, File upload support • Using new language features – for example Generics
  • 23. EJB 3.1 • @Singleton beans – shared state per server VM • No interface view – one source file per bean • Calendar timers – cron like semantics > @Schedule(dayOfWeek=”Mon,Wed”) > (hour=”14”, dayOfMonth=”Last Thu”, month=”Nov”) > (minute=”*/5”, hour=”*”) • Application startup/shutdown callbacks • EJB “Lite” > Small subset of EJB 3.1 for use in Web profile
  • 24. EoD: EJB Simplified Packaging Java EE 5 Java EE 6 foo.war foo.ear WEB-INF/classes foo_web.war com.sun.FooServlet com.sun.TickTock WEB-INF/web.xml com.sun.FooBean WEB-INF/classes com.sun.FooHelper com.sun.FooServlet com.sun.TickTock foo_ejb.jar com.sun.FooBean com.sun.FooHelper web.xml ? http://blogs.sun.com/arungupta/entry/totd_95_ejb_3_1
  • 25. Java Server Faces 2.0 • Facelets as “templating language” for the page > Custom components much easier to develop • Ajax support integrated • “faces-config.xml” not required in common cases • Mojarra is the Reference Implementation of JSF 2
  • 26. Java Persistence API 2.0 • Expanded object/relational mapping functionality > @ElementCollection, @OrderColumn, ... • Additions to the Java Persistence query language > INDEX, CASE/WHEN/ELSE • Metamodel API (javax.persistence.metamodel)
  • 27. JPA 2.0 • Type-safe Criteria API > CriteriaQuery – select, where > QueryBuilder – expressions, predicates • Standard caching configuration > 2nd level caching > @Cache on entities
  • 28. Bean Validation (JSR 303) • Tier-independent mechanism to define constraints for data validation > Represented by annotations > javax.validation • Integrated with JSF and JPA > JSF: f:validateRequired, f:validateRegexp > JPA: pre-persist, pre-update, and pre-remove • @NotNull(message=”...”), @Max, @Min, @Size • Fully Extensible > @Email String recipient;
  • 29. Contexts & Dependency Injection for Java EE (JSR 299) • Type-safe Dependency Injection > Builds on @Inject API • Context/scope management • Works with multiple bean types • Includes ELResolver
  • 30. CDI Clients • Injection Points > Field, Method, Constructor Which one ? > 0 or more qualifiers (Qualifier) > Type @Inject @LoggedIn User user Request What ? Injection (Type)
  • 31. CDI Basics • Separate from @Resource but can co-exist > @Resource for container managed DI > @Inject for application managed DI • Strong typing, loose coupling > Clients only declare dependencies via injection points > Bean selection is done by CDI
  • 32. CDI – Sample Client Code Field and Method Injection public class CheckoutHandler { @Inject @LoggedIn User user; @Inject PaymentProcessor processor; @Inject void setShoppingCart(@Default Cart cart) { … } }
  • 33. CDI – Sample Client Code Constructor Injection public class CheckoutHandler { @Inject CheckoutHandler(@LoggedIn User user, PaymentProcessor processor, @Default Cart cart) { ... } }
  • 34. CDI - Sample Client Code Multiple Qualifiers and Qualifiers with Arguments public class CheckoutHandler { @Inject CheckoutHandler(@LoggedIn User user, @Reliable @PayBy(CREDIT_CARD) PaymentProcessor processor, @Default Cart cart) { ... } }
  • 35. CDI - Declaring Qualifiers With a meta-annotation • Write your own annotation types and annotate them with @Qualifier • For example: @Qualifier @Retention(RUNTIME) @Target({FIELD,TYPE}) public @interface Red {}
  • 36. CDI - How to configure ? There is none! • CDI discovers bean in all modules in which CDI is enabled • Beans are automatically selected for injection • Possible to enable groups of bean selectively via a descriptor
  • 37. CDI - Scopes • Beans can be declared in a scope > Everywhere: @ApplicationScoped, @RequestScoped > Web app: @SessionScoped > JSF app: @ConversarionScoped > Pseudo-scope (default): @Dependent • The CDI runtime will make sure the right bean is created at the right time • Client do NOT have to be scope-aware
  • 38. CDI - Named Beans Built-in support for the Unified EL • Beans give themselves a name with @Named(“cart”) • Then refer to it from a JSF or JSP page using the EL: <h:commandButton value=”Checkout” action=“#{cart.checkout}”/>
  • 39. CDI - Events Even more decoupling • Annotation-based event model • A bean @Observes an event void onLogin(@Observes LoginEvent event) { … } • Another bean fires an event using the Event.fire(T event) method
  • 40. CDI - Much more ... • Producer methods and fields • Bridging Java EE resources • Alternatives • Interceptors • Decorators • Sterotypes
  • 41. IDE Support • NetBeans 6.8 • Eclipse 3.4+ • IntelliJ 9.0
  • 42. Java EE 6 Training & Certification • Java EE6 Training Curriculum - Feb 2010 • Java EE6 Certifications available - Mar 2010 • Register your interest in the courses and certifications and receive information about promotions > https://dct.sun.com/dct/forms/reg_us_1611_480_0.jsp
  • 43. What is GlassFish ? • A community > Users, Partners, Testers, Developers, ... > Started in 2005 on java.net • Application Server > Enterprise Quality and Open Source (CDDL & GPL v2) > Java EE Reference Implementation > Full Commercial Support from Sun
  • 44. Sun GlassFish Enterprise Server Enterprise Manager Customer Advocate eLearning Credit Customer Focused 24x7 Support Support Team GlassFish Sun VIP Open Source Interoperability Patches & Application Server Support Upgrades
  • 45. GlassFish v3 • Modular: > Maven 2 – Build & Module description > Felix – OSGi runtime (216 bundles) > Allow any type of Container to be plugged – Start Container and Services on demand • Embeddable: runs in-VM • Extensible > Rails, Grails, Django, ...
  • 46. Dynamic Languages & Frameworks http://glassfish-scripting.dev.java.net
  • 47. Rails Deployment Choices Credits: http://birdwatchersdigest.com
  • 48. Demo NetBeans / Eclipse & Java EE 6 http://blogs.sun.com/arungupta/entry/screencast_27_simple_web_application http://blogs.sun.com/arungupta/entry/screencast_28_simple_web_application http://blogs.sun.com/arungupta/entry/screencast_26_develop_run_debug/ http://blogs.sun.com/arungupta/entry/totd_93_getting_started_with/ http://blogs.sun.com/arungupta/entry/totd_94_a_simple_java http://blogs.sun.com/arungupta/entry/totd_95_ejb_3_1 http://blogs.sun.com/arungupta/entry/totd_102_java_ee_6 http://blogs.sun.com/arungupta/entry/totd_99_creating_a_java http://blog.arungupta.me/2008/11/screencast-28-simple-web-application-using-eclipse-and-glassfish-v3-prelude/
  • 49. Embeddable GlassFish Server.Builder builder = new Server.Builder("testBuilder"); // Get the builder for EmbeddedFileSystem EmbeddedFileSystem.Builder efsb = new EmbeddedFileSystem.Builder(); EmbeddedFileSystem efs = efsb.build(); builder.embeddedFileSystem(efs); // Start the embedded server (should take no more than a few of seconds) server = builder.build(); // Add a WEB container (other containers: ejb, jps, all, ...) ContainerBuilder containerBuilder = server.createConfig(ContainerBuilder.Type.web); server.addContainer(containerBuilder); containerBuilder.create(server); server.createPort(port);
  • 50. Embeddable GlassFish // Setup machinery to deploy deployer = server.getDeployer(); // type is EmbeddedDeployer DeployCommandParameters deployParams = new DeployCommandParameters(); deployParams.name = "myApplication"; // needed for undeploy deployParams.contextroot = context; // overrides whatever the WAR contains // Creates default virtual server, web listener, does the deploy and // returns the applicationName as a String (null means something went wrong) // duration depends on application size and nature. Heavy lifting done here. File archive = new File(archiveName); applicationName = deployer.deploy(archive, deployParams); return (applicationName == null) ? false : true;
  • 51. CLI-based Administration ● “asadmin” CLI utility ● Administrative commands can be added with each container : @Service(name=”myCommand”) public class ChangeRandomCtr implements AdminCommand { @Param String s1; @Param String s2; …} ● Available as : asadmin myCommand –s1 foo –s2 bar
  • 52. Demo GlassFish v3 Administration
  • 53. Light Weight & On-demand Monitoring • Event-driven light-weight and non-intrusive monitoring • Modules provide domain specific probes (monitoring events) > EJB, Web, Connector, JPA, Jersey, Orb, Ruby • End-to-end monitoring on Solaris using DTrace • 3rd party scripting clients > JavaScript to begin with
  • 54. Demo GlassFish v3 Monitoring http://blogs.sun.com/arungupta/entry/totd_104_glassfish_v3_monitoring
  • 55. REST Interface REST interface to management and monitoring data ● ● Configuration data, Commands invocation (start/stop instance, deploy, undeploy, ...), CRUD resources (JMS, JDBC, ...) ● localhost:4848/management/domain ● localhost:4848/monitoring/domain ●GET, POST, DELETE methods ● XML, JSON, HTML reps
  • 56. Demo GlassFish v3 REST Interface http://blogs.sun.com/arungupta/entry/totd_113_javafx_front_end http://blogs.sun.com/arungupta/entry/totd_116_glassfish_v3_administration
  • 57. GlassFish Partners
  • 58. References • glassfish.org • sun.com/glassfish • blogs.sun.com/theaquarium • twitter.com/glassfish • glassfish@sun.com
  • 59. Java EE 6 & GlassFish v3 Paving the path for future Arun Gupta, GlassFish Guy blogs.sun.com/arungupta, @arungupta 60

×