Java EE 6 : Paving The Path For The Future
- 1. Java EE 6 & GlassFish v3
Paving the path for future
Arun Gupta (blogs.sun.com/arungupta, @arungupta)
Sun Microsystems, Inc.
- 2. Java EE: Past & Present
Flexible
Ease of
Development Java EE 6
EJB Lite
Java EE 5 Restful WS
Web Ease of Web Beans
Services Development Extensibility
Annotations
J2EE 1.4 EJB 3.0
Web Services, Persistence API
Robustness Management, New and
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. 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
- 5. 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 Already Defined
Defined by the Java EE 6 Expert Group
- 6. 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
- 7. 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
- 8. 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
- 9. <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
- 10. <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
- 11. 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
- 12. 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
- 13. EoD: Servlets
Servlet in Java EE 5: Two Files
<!--Deployment descriptor /* Code in Java Class */
web.xml -->
package com.sun;
<web-app> public class MyServlet extends
<servlet>
HttpServlet {
<servlet-name>MyServlet
public void
</servlet-name> doGet(HttpServletRequest
<servlet-class> req,HttpServletResponse res)
com.sun.MyServlet {
</servlet-class>
</servlet> ...
<servlet-mapping>
<servlet-name>MyServlet }
</servlet-name>
<url-pattern>/myApp/* ...
</url-pattern> }
</servlet-mapping>
...
</web-app>
- 14. 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
- 15. Java EE 6 - Done
Specifications approved by the JCP (Dec 1)
Reference Implementation is GlassFish v3
(Dec 10)
TCK (Dec 10)
- 16. Java EE 6 Specifications
The Platform
Java EE 6 Web Profile 1.0
Managed Beans 1.0
- 17. Java EE 6 Specifications
New
Context and Dependency Injection for Java EE
(JSR 299)
Bean Validation (JSR 303)
Java API for RESTful Web Services (JSR 311)
Dependency Injection for Java (JSR 330)
- 18. 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)
- 19. 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)
- 20. 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)
- 22. Future Directions
JNLP-ize Java EE app client
Java EE SPI
− - Allow service providers and other system level
components to be plugged in
- 23. 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
- 24. Java EE Adoption Metrics
Over 10 million downloads of Java EE SDKs annually
Amazon search for J2EE yields 4,167 books (367)
Amazon search for Java EE 1,681 books (448)
Java the world's most used programing language
Monster lists over 2,300 available Java EE / J2EE jobs
In the past four years:
− JBoss purchased by Red Hat for 500 million
− BEA purchased by Oracle for 7 Billion
24
- 25. Java EE Adoption
Y/Y Download Growth
Over 18M
Downloads
08/.../08
12,000,000
since FY'06 10,000,000
8,000,000
Active Users 6,000,000
Dow nloads
4,000,000
2,000,000
0
FY 06 FY 07 FY 08 FY 09
- 26. Java EE: Scales as you scale
Java EE/ J2EE
Java EE/ J2EE
26
For today's Tiny is Tomorrow's Mega
- 27. 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
- 28. 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
28
- 29. 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, ...
29
- 32. 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/
32
- 33. Embeddable GlassFish
public void testServlet() throws Exception {
int port = 9999;
GlassFish glassfish = newGlassFish(port);
URL url = new URL("http://localhost:" + port + "/" + NAME +
"/SimpleServlet");
BufferedReader br = new BufferedReader(
new InputStreamReader(
url.openConnection().getInputStream()));
assertEquals("Wow, I'm embedded!", br.readLine());
glassfish.stop();
}
33
- 34. Embeddable GlassFish
private GlassFish newGlassFish(int port) throws Exception {
GlassFish glassfish = new GlassFish(port);
ScatteredWar war = new ScatteredWar(NAME,
new File("src/main/resources"),
new File("src/main/resources/WEB-INF/web.xml"),
Collections.singleton(new
File("target/classes").toURI().toURL()));
glassfish.deploy(war);
System.out.println("Ready ...");
return glassfish;
}
34
- 35. 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
35
- 38. 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
rd
3 party scripting clients
− JavaScript to begin with 38
- 40. 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
40
- 41. 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
41
- 43. References
glassfish.org
sun.com/glassfish
blogs.sun.com/theaquarium
twitter.com/glassfish
glassfish@sun.com
- 44. Java EE 6 & GlassFish v3
Paving the path for future
Arun Gupta (blogs.sun.com/arungupta, @arungupta)
Sun Microsystems, Inc.