java ee 6 : paving the path for the future

44
Java EE 6 & GlassFish v3 Paving the path for future Arun Gupta (blogs.sun.com/arungupta, @arungupta) Sun Microsystems, Inc.

Upload: indicthreads

Post on 05-Dec-2014

5.160 views

Category:

Technology


0 download

DESCRIPTION

“The Java EE platform is getting an extreme makeover with the upcoming version ? Java EE 6. It is developed as JSR 316 under the Java Community Process. The Java EE 6 platform adds more power to the platform and yet make it more flexible so that it can be adopted to different flavors of an application. It breaks the ‘one size fits all’ approach with Profiles and improves on the Java EE 5 developer productivity features. It enables extensibility by embracing open source libraries and frameworks such that they are treated as first class citizens of the platform. Several new specifications such as Java Server Faces 2.0, Servlet 3.0, Java Persistence API 2.0, and Java Context Dependency Injection 1.0 are included in the platform. All these specifications are implemented in GlassFish v3 that providesa light-weight, modular, and extensible platform for your Web applications. This session provides an overview of Java EE 6 and GlassFish v3. Using multiple simple-to-understand samples it explains the value proposition provided by Java EE 6. “

TRANSCRIPT

Page 1: Java EE 6 : Paving The Path For The Future

Java EE 6 & GlassFish v3Paving the path for future

Arun Gupta (blogs.sun.com/arungupta, @arungupta)

Sun Microsystems, Inc.

Page 2: Java EE 6 : Paving The Path For The Future

JPEProject

J2EE 1.2Servlet, JSP,

EJB, JMSRMI/IIOP

J2EE 1.3CMP,

ConnectorArchitecture

J2EE 1.4Web Services, Management, Deployment, Async. Connector

Java EE 5Ease of DevelopmentAnnotationsEJB 3.0Persistence APINew and Updated Web Services

Robustness

Web Services

Enterprise Java

Platform

`

Java EE 6EJB LiteRestful WSWeb BeansExtensibility

Java EE 6Web Profile

Ease ofDevelopment

Flexible

Java EE: Past & Present

Page 3: Java EE 6 : Paving The Path For The Future

3

Compatible Java EE 5 Implementations

Page 4: Java EE 6 : Paving The Path For The Future

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

Page 5: Java EE 6 : Paving The Path For The Future

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

Page 6: Java EE 6 : Paving The Path For The Future

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

Page 7: Java EE 6 : Paving The Path For The Future

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

Page 8: Java EE 6 : Paving The Path For The Future

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

Page 9: Java EE 6 : Paving The Path For The Future

<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

Page 10: Java EE 6 : Paving The Path For The Future

<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

Page 11: Java EE 6 : Paving The Path For The Future

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

Page 12: Java EE 6 : Paving The Path For The Future

EoD: EJB Simplified Packaging

foo.earfoo_web.war

WEB-INF/web.xmlWEB-INF/classes com.sun.FooServlet com.sun.TickTock

foo_ejb.jarcom.sun.FooBeancom.sun.FooHelper

foo.warWEB-INF/classes com.sun.FooServlet com.sun.TickTock com.sun.FooBean com.sun.FooHelper

web.xml ?

Java EE 5 Java EE 6

http://blogs.sun.com/arungupta/entry/totd_95_ejb_3_1

Page 13: Java EE 6 : Paving The Path For The Future

EoD: ServletsServlet in Java EE 5: Two Files

<!--Deployment descriptor web.xml -->

<web-app><servlet> <servlet-name>MyServlet

</servlet-name> <servlet-class> com.sun.MyServlet </servlet-class> </servlet> <servlet-mapping> <servlet-name>MyServlet </servlet-name> <url-pattern>/myApp/* </url-pattern> </servlet-mapping> ... </web-app>

/* Code in Java Class */package com.sun;public class MyServlet extends HttpServlet {public void doGet(HttpServletRequest req,HttpServletResponse res) {

...

}

...

}

Page 14: Java EE 6 : Paving The Path For The Future

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

Page 15: Java EE 6 : Paving The Path For The Future

Java EE 6 - Done Specifications approved by the JCP (Dec 1) Reference Implementation is GlassFish v3

(Dec 10) TCK (Dec 10)

Page 16: Java EE 6 : Paving The Path For The Future

Java EE 6 Specifications The Platform Java EE 6 Web Profile 1.0 Managed Beans 1.0

Page 17: Java EE 6 : Paving The Path For The Future

Java EE 6 SpecificationsNew

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)

Page 18: Java EE 6 : Paving The Path For The Future

Java EE 6 SpecificationsExtreme 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)

Page 19: Java EE 6 : Paving The Path For The Future

Java EE 6 SpecificationsUpdates

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)

Page 20: Java EE 6 : Paving The Path For The Future

Java EE 6 SpecificationsAs 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)

Page 21: Java EE 6 : Paving The Path For The Future

IDE Support NetBeans 6.8 Eclipse 3.4+ IntelliJ 9.0

Page 22: Java EE 6 : Paving The Path For The Future

Future Directions JNLP-ize Java EE app client Java EE SPI

− - Allow service providers and other system level components to be plugged in

Page 23: Java EE 6 : Paving The Path For The Future

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

Page 24: Java EE 6 : Paving The Path For The Future

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

Page 25: Java EE 6 : Paving The Path For The Future

08/.../08 Over 18M Over 18M

DownloadsDownloadssince FY'06since FY'06

Active Users

Java EE Adoption

FY 06 FY 07 FY 08 FY 090

2,000,000

4,000,000

6,000,000

8,000,000

10,000,000

12,000,000

Y/Y Download Growth

Dow nloads

Page 26: Java EE 6 : Paving The Path For The Future

26

Java EE: Scales as you scale

For today's Tiny is Tomorrow's Mega

Java EE/ J2EEJava EE/ J2EE

Page 27: Java EE 6 : Paving The Path For The Future

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

Page 28: Java EE 6 : Paving The Path For The Future

28

Sun GlassFish Enterprise Server

GlassFishGlassFishOpen SourceOpen SourceApplication ServerApplication Server

Customer FocusedCustomer FocusedSupport TeamSupport Team

Patches &Patches &UpgradesUpgrades

24x7 Support24x7 Support

CustomerCustomerAdvocateAdvocate

Sun VIPSun VIPInteroperabilityInteroperabilitySupportSupport

Enterprise ManagerEnterprise Manager

eLearningeLearningCreditCredit

Page 29: Java EE 6 : Paving The Path For The Future

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, ...

Page 30: Java EE 6 : Paving The Path For The Future

30

Dynamic Languages & Frameworks

http://glassfish-scripting.dev.java.net

Page 31: Java EE 6 : Paving The Path For The Future

31

Rails Deployment Choices

Credits: http://birdwatchersdigest.com

Page 32: Java EE 6 : Paving The Path For The Future

32

DemoNetBeans / Eclipse & Java EE 6

http://blogs.sun.com/arungupta/entry/screencast_27_simple_web_applicationhttp://blogs.sun.com/arungupta/entry/screencast_28_simple_web_applicationhttp://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_javahttp://blogs.sun.com/arungupta/entry/totd_95_ejb_3_1http://blogs.sun.com/arungupta/entry/totd_102_java_ee_6http://blogs.sun.com/arungupta/entry/totd_99_creating_a_javahttp://blog.arungupta.me/2008/11/screencast-28-simple-web-application-using-eclipse-and-glassfish-v3-prelude/

Page 33: Java EE 6 : Paving The Path For The Future

33

Embeddable GlassFishpublic 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();

}

Page 34: Java EE 6 : Paving The Path For The Future

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;

}

Page 35: Java EE 6 : Paving The Path For The Future

35

CLI-based Administration “asadmin” CLI utility Administrative commands can be added with each container :

@Service(name=”myCommand”)public class ChangeRandomCtr implements AdminCommand {

@ParamString s1;@ParamString s2;

… }

−Available as :asadmin myCommand –s1 foo –s2 bar

Page 36: Java EE 6 : Paving The Path For The Future

36

Page 37: Java EE 6 : Paving The Path For The Future

37

DemoGlassFish v3 Administration

Page 38: Java EE 6 : Paving The Path For The Future

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

3rd party scripting clients− JavaScript to begin with

Page 39: Java EE 6 : Paving The Path For The Future

39

DemoGlassFish v3 Monitoring

http://blogs.sun.com/arungupta/entry/totd_104_glassfish_v3_monitoring

Page 40: Java EE 6 : Paving The Path For The Future

40

REST InterfaceREST 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 methodsXML, JSON, HTML reps

Page 41: Java EE 6 : Paving The Path For The Future

41

DemoGlassFish v3 REST Interface

http://blogs.sun.com/arungupta/entry/totd_113_javafx_front_endhttp://blogs.sun.com/arungupta/entry/totd_116_glassfish_v3_administration

Page 42: Java EE 6 : Paving The Path For The Future

GlassFish ISV Partners

Page 43: Java EE 6 : Paving The Path For The Future

References glassfish.org sun.com/glassfish blogs.sun.com/theaquarium twitter.com/glassfish [email protected]

Page 44: Java EE 6 : Paving The Path For The Future

Java EE 6 & GlassFish v3Paving the path for future

Arun Gupta (blogs.sun.com/arungupta, @arungupta)

Sun Microsystems, Inc.