Beruflich Dokumente
Kultur Dokumente
SanjeebSahoo StaffEngineer,SunMicrosystems
Objective
Agenda
Thejourneybegins...
May1995
May1998
Guidingprinciples
Thejourneycontinues...
Dec1999(J2EE1.2)
Sept2001(J2EE1.3)
Nov2003(J2EE1.4)
J2EE1.4
J2EEisenormouslypowerful
Butthatpowersometimesgetsintheway
JavaEE5=(J2EE1.4).next
MakeiteasiertodevelopenterpriseJava applications
EspeciallywhenfirstgettingstartedwithJavaEE
ReleasedJune2006
Howdidwemakeiteasier?
Declarativeprogramming
Removerequirements
earlieritwasverydefensiveprogramming
New&morepowerfulframeworks
Lessworkforyoutodo
Easiertolearnandmoreproductive!
MajorFeaturesinJavaEE5
Annotationsarethelaw Dependencyinjection Simplifiedwebservicessupport Morewebservicestandardssupport GreatlysimplifiedEJB development NewJava PersistenceAPI EasywebapplicationswithJavaServer Faces AndfullycompatiblewithJ2EE1.4
TM
TM
TM
Annotations
WhatisJavaannotation?
Howisitdefined?
packagejavax.persistence; @Target(TYPE) @Retention(RUNTIME) public@interfaceEntity{ Stringname()default;
Annotations
Howisitusedinsourcecode?
@EntitypublicclassEmployee{...}
Isitavailableatruntime?
Howisthemetadataaccessedatruntime?
Benefitsofusingannotations
AnnotationsinJavaEE5
Howaretheydefined?
Mostofthemhave@Retention(RUNTIME) Aspartofdifferentspecs,indifferentpackages.
Wherearetheydefined?
AnnotationsinJavaEE5
HowaretheyusedinJavaEE?
O/Xmappingmappings
importjavax.xml.bind.annotation.*; @XmlRootElement(name="employee") @XmlType(name="EmployeeType") publicclassEmployee{ publicStringname; publicintsalary; }
SecurityAnnotations
importjavax.annotation.security.*; importjavax.ejb.*; @Stateless @RolesAllowed("javaee") publicclassHelloEJBimplementsHello{ @PermitAll//overridesclasslevelannotation publicStringhello(Stringmsg){...} publicStringbye(Stringmsg){...} }
Howtooverrideannotations?
XMLDDcanbeusedtooverrideannotations
Partialoverriding
Completeoverriding
Vendorspecificannotations
.javafileisnotportable
.classisportable
DependencyInjection
ExampleofInversionofControl Containerinjectsresources...
...intoapplication...
...incontainermanagedclasses
AvoidstheneedtouseJNDI
J2EE1.4ResourceLookup
publicclassMyEJBimplementsSessionBean{ privateDataSourcemyDS; publicvoidejbCreate(){ try{ InitialContextctx=newInitialContext(); myDS=(DataSource)ctx.lookup( employeeDatabase); }catch(NamingExceptionex){ //XXXwhattodo? } } ... }
DependencyInjection
packagecom.example; @Stateless@Local(MyEJBInterface.class) publicclassMyEJB{ @Resource privateDataSourcemyDS; ... }
myDS
field
DependencyInjection
packagecom.example; @Stateless@Local(MyEJBInterface.class) publicclassMyEJB{ @Resource(name=employeeDatabase) privateDataSourcemyDS; ... }
employeeDatabase
field
DependencyInjection
packagecom.example; @Stateless@Local(MyEJBInterface.class) publicclassMyEJB{ @Resource(mappedName=OracleDatabase) privateDataSourcemyDS; ... }
Declares a resource that's mapped to the app server's global resource named
OracleDatabase
myDS
field
DependencyInjection
AnnotationsusedforDependencyInjection
DependencyInjection
Possiblewithoutusingannotations!
packagefoo; @Stateless@Remote(MyEJBInterface.class) publicclassMyEJB{ privateDataSourcemyDS; ... } <resourceref> <injectiontarget> <injectiontargetclassname>foo.MyEJB</injectiontarget classname> <injectiontargetname>myDS</injectiontargetname> </injectiontarget> </resourceref>
DependencyInjection
Isthisdependencyinjection?
packagefoo; @Resource(name=jdbc/MyDataSource, type=DataSource.class) publicclassMyServletextendsHttpServlet{ ... }
DependencyInjection
Theyjustdeclaredependency
AnyuseofmappedNameisnotonlynon portable,butalsoveryinstallationspecific.
Simplerpackagingrules
libraryfolder
likeWEBINF/lib,earnowhasalibfolder defaultnameislib canbeoverridenbyuseapplication.xml makesbundledoptionalpackageeasytouse
Simplerpackagingrules
MoreFlexibility
JavaPersistenceAPIentityclassescanbe packagedin
EARPackagingExample
app.ear
lib/shared.jar(entities,ejbinterfaceclasses) biz/ejb.jar ui/web.war ui/client.jar
That'sit!
NoMETAINF/application.xml NoClassPathentryinMANIFEST.MF
NewAPIsandframeworks
JAXB2.0(JSR222)
Bidirectionalbinding
FromXMLschematoJavaclass FromJavaclassestoXMLSchema(new)
JAXB1.0wasXMLtoJavaonly
WebServicesinJavaEE5
JAXWS2.0
IncludesJSR181
JAXB2.0asstandarddatabindingframework SupportslatestW3Cstandards
SOAP1.2,XMLSchema1.0
BasicProfile1.1,AttachmentProfile1.0
SupportslatestWSIstandards
JavaServerFaces1.2
TheJavaEEStandardWebApplication Framework ProvidessupportforfinegrainedUIevent handling Providesacleanseparationbetweenbehavior andpresentation FrameworkforbuildingcustomreusableUI components Inbuiltvalidationanderrorreportingframework Dependencyinjectioninmanagedbeans
NewWeb2.0JavaPetStore:Built withAJAXenabledJSFComponents
Autocomplete Ratings
RSSReader
PopupBalloon
FileUpload
GoogleMapsMashup
JavaPersistenceAPI1.0
SinglepersistenceAPIforJavaEEandJava SE DevelopedbyEJBexpertgroup
Buildsonyearsofexperiencewithexisting technologiesandproducts
Atleastthreeimplementations(allopen source):
JavaPersistenceAPI1.0
POJObased
MuchsimplerthanEJBCMP usingannotationsorXMLmappingstrategy
StandardizedO/Rmapping
Demo
HowMuchEasierIsIt?
AdventureBuilder1
RosterApp
Agenda
ProjectGlassFish
BuildingaJavaEE5 opensourceapplicationserver
Java.sun.com/javaee/GlassFish
Source:Sun2/06Seewebsiteforlateststats
Simplifying Java application development with Java EE 5 technologies Includes JAX-WS 2.0, JAXB 2.0, JSF 1.2, EJB 3.0, and Java Persistence 1.0 Supports > 20 frameworks and apps Open source CDDL license Basis for the Sun Java System Application Server PE 9 Free to download and free to deploy
blogs.sun.com/theaquarium
ProjectGlassFish
JavaEE5compliantApplicationServer
ReferenceImplementation
IncludedinJavaEE5SDK OSIlicenseCDDL GPLv2(comingsoon) Sources,bugDBs,discussionsatJava.Net Roadmaps,ArchitectureDocuments
OpenSource
CommunityatJava.Net
TimelineofProjectGlassFish
Tomcat Jasper Catalina JSTL Struts Crimson XSLTC Xalan Xerces
GlassFish Launch
V1final V1UR1
V2(plan)
J1'04 June2004
J1'05 June2005
J1'06 May2006
Apr2007 tentative
ProjectGlassFish
GlassFishv1
GlassFishv2
GlassFishv3
EnterpriseReady
clusteringbasedonJXTA
seehttp://shoal.dev.java.net
MorethanagreatAppServer
ImprovedStartuptime NoSecurityManagerbyDefault
FocusonPopularFrameworksand Applications
Runningoutofthebox
GlassFish&SOA
Yes,youcanmarkanEJBasaJBI component
GlassFishWiderImpact
EncouragingJavaEE5Adoption EnablingJavaEE5Adoption
RaisingtheBarforFOSSAS
LeadingthewayformoreFOSSMiddleware
GlobalCommunity
JeanFrancois Tom, Gordon
Paul
Filippo
Lexi
Geertjan
Kirill
Kohsuke Cheng
Ias, Wonseok
Jaime
Siva
Weneedyourparticipation
AsUsers
AsContributors
TopPriority!
HowcanyoubuildGlassFish?
Getajava.netuserid Toolsrequired:
Steps:
http://www.glassfishwiki.org/gfwiki/Wiki.jsp?page=Buil dInformation
TheAquariumNewsonGlassFish
blogs.sun.com/theaquarium
ProjectTango
JAXWS2.0deliversWSIbasicinterop
ProjectTangoaddsricherprotocolsupport
yourexistingappswillbenefitwithoutchanges!
TM
SunJava teamisworkingcloselywithMicrosoft
http://wsit.dev.java.net
NetBeansEnterprisePack5.5
IncludesNB5.5
WithSJSAS9.0(Sun'sdistroofGlassFish) Plus
http://www.netbeans.org
NetBeans&GlassFishDemo
JavaEEFutures
JavaEEFutures
JBI,SCA
GlassFishalreadyhasJBIruntime
JavaScriptinJSPpages,servlets AJAX
ImproveexistingAPIs
WebTierFutures:AJAX
WeexpecttwolongtermstyleswithAjax HighlevelJSF/Ajaxcomponents
RawAjax:handwrittenclientJavaScript
Java WebTierwillsupportbothstyles
Conclusion
Java EE5isherenow
TM
DownloadtheSDK
GetinvolvedintheGlassFishcommunity
Pleasegiveusfeedback
Creditsfortheslides
Q&A