javaee 6, una descripción técnica
TRANSCRIPT
![Page 1: JavaEE 6, una descripción técnica](https://reader036.vdocuments.net/reader036/viewer/2022062418/554c0e1ab4c905ec518b4670/html5/thumbnails/1.jpg)
11
![Page 2: JavaEE 6, una descripción técnica](https://reader036.vdocuments.net/reader036/viewer/2022062418/554c0e1ab4c905ec518b4670/html5/thumbnails/2.jpg)
<Insert Picture Here>
Java EE 6, a Technical Overview
![Page 3: JavaEE 6, una descripción técnica](https://reader036.vdocuments.net/reader036/viewer/2022062418/554c0e1ab4c905ec518b4670/html5/thumbnails/3.jpg)
3
Java EE
• Scalable and maintainable enterprise apps• Container vs. Developer
– Life-cycle, resource injection, security, ...• Portable code
– Portable skills– Vendor independence
• Industry standard– large developer community,– books, training, best practices, consultants, ...
![Page 4: JavaEE 6, una descripción técnica](https://reader036.vdocuments.net/reader036/viewer/2022062418/554c0e1ab4c905ec518b4670/html5/thumbnails/4.jpg)
4
Java EE 6 Overview
• New features– Web Profile, REST, managed beans,
standard dependency injection, validation
• Enhanced APIs– EJB 3.1, JSF 2.0, JPA 2.0, Servlet 3.0
• More ease of use– Optional XML, simpler packaging, extensibility
• Usable “as is”– The end of the 100's MB .war
![Page 5: JavaEE 6, una descripción técnica](https://reader036.vdocuments.net/reader036/viewer/2022062418/554c0e1ab4c905ec518b4670/html5/thumbnails/5.jpg)
5
May 1998
Project JPE
Dec 199910 specs
J2EE 1.2
EnterpriseApplication
ServletJSPEJBJMSRMI/IIOP
Sept 200113 specs
J2EE 1.3
RobustScalable
CMPJCA
Nov 200320 specs
J2EE 1.4
Web Services
WSManagementDeployment
May 200623 specs
Java EE 5
Ease ofdevelopment
AnnotationsEJB 3JPA 1.0WS-*JSF
Q4 200928 specs
Java EE 6
Ease ofdevelopment
(web)
EJB 3.1JPA 2.0Servlet 3.0JSF 2.0JAX-RS 1.1CDI 1.0@InjectBean Validat°
Web Profile
ManagedBean
Java EE – a brief History
![Page 6: JavaEE 6, una descripción técnica](https://reader036.vdocuments.net/reader036/viewer/2022062418/554c0e1ab4c905ec518b4670/html5/thumbnails/6.jpg)
6
EJB 3.1 JPA 2.0 Servlet 3.0 JSF 2.0 JAX-RS 1.1 Connectors 1.6 Bean Validation 1.0
DI 1.0 CDI 1.0 Managed Beans 1.0 Interceptors 1.1 JAX-WS 2.2 JSR-109 1.3 JSP 2.2 / EL 2.2 JSR-250 1.1
New and improved specifications
![Page 7: JavaEE 6, una descripción técnica](https://reader036.vdocuments.net/reader036/viewer/2022062418/554c0e1ab4c905ec518b4670/html5/thumbnails/7.jpg)
7
This is no science fiction
Java EE 6 and GlassFish Server 3 shipped final releases on
December 10th 2009
![Page 8: JavaEE 6, una descripción técnica](https://reader036.vdocuments.net/reader036/viewer/2022062418/554c0e1ab4c905ec518b4670/html5/thumbnails/8.jpg)
8
JAX-RS
• RESTful web services API• Already widely adopted• Really a general, high-level HTTP API• Annotation-based programming model• Programmatic API when needed• JAX-RS 1.1 integration with EJBs
![Page 9: JavaEE 6, una descripción técnica](https://reader036.vdocuments.net/reader036/viewer/2022062418/554c0e1ab4c905ec518b4670/html5/thumbnails/9.jpg)
9
JAX-RS sample code
@Path("widgets/{id}")@Produces("application/widgets+xml")public class WidgetResource { public WidgetResource( @PathParam("id") String id) { ... }
@GET Widget getWidget() { ... }}
![Page 10: JavaEE 6, una descripción técnica](https://reader036.vdocuments.net/reader036/viewer/2022062418/554c0e1ab4c905ec518b4670/html5/thumbnails/10.jpg)
10
Bean Validation 1.0
public class Address { @NotNull @Size(max=30, message="longer than {max} characters") private String street1; ... @NotNull @Valid private Country country;}
public class Country { @NotNull @Size(max=20) private String name; ...}
request recursiveobject graphvalidation
![Page 11: JavaEE 6, una descripción técnica](https://reader036.vdocuments.net/reader036/viewer/2022062418/554c0e1ab4c905ec518b4670/html5/thumbnails/11.jpg)
11
Build your own!
@Size(min=5, max=5)@ConstraintValidator(ZipcodeValidator.class)@Documented@Target({ANNOTATION_TYPE, METHOD, FIELD})@Retention(RUNTIME)public @interface ZipCode { String message() default "Wrong zipcode"; String[] groups() default {};}
Integrated in JPA and JSF Bootstrap APIs
![Page 12: JavaEE 6, una descripción técnica](https://reader036.vdocuments.net/reader036/viewer/2022062418/554c0e1ab4c905ec518b4670/html5/thumbnails/12.jpg)
12
“Web” Profile
• First Java EE profile to be defined• A fully-functional, mid-size stack for modern web application development
• Complete, but not the kitchen sink
![Page 13: JavaEE 6, una descripción técnica](https://reader036.vdocuments.net/reader036/viewer/2022062418/554c0e1ab4c905ec518b4670/html5/thumbnails/13.jpg)
13
Java EE 6 Web Profile
Servlet 3.0 JSP 2.2 / EL 2.2 JSR-45 1.0 JSTL 1.2 JSF 2.0 Bean Validation 1.0 EJB 3.1 Lite
JPA 2.0 JTA 1.1 DI 1.0 CDI 1.0 Managed Beans 1.0 Interceptors 1.1 JSR-250 1.1
![Page 14: JavaEE 6, una descripción técnica](https://reader036.vdocuments.net/reader036/viewer/2022062418/554c0e1ab4c905ec518b4670/html5/thumbnails/14.jpg)
14
Extensible & Pluggable
• Focus on the web tier in this release• Create a level playing ground forthird-party libraries and frameworks
• Simplify packaging of web apps
![Page 15: JavaEE 6, una descripción técnica](https://reader036.vdocuments.net/reader036/viewer/2022062418/554c0e1ab4c905ec518b4670/html5/thumbnails/15.jpg)
15
Modular Web Applications
• Libraries can contain web-fragment.xml•web.xml is optional•@WebServlet, @WebFilter annotations•ServletContainerInitializer interface• Programmatic registration• Resource jars
![Page 16: JavaEE 6, una descripción técnica](https://reader036.vdocuments.net/reader036/viewer/2022062418/554c0e1ab4c905ec518b4670/html5/thumbnails/16.jpg)
16
JSF 2.0
• Optional faces-config.xml• Standardized facelets• Auto-discovery of component libraries• Composite components• Ajax support (with or without JavaScript)• Even a JavaScript API !
![Page 17: JavaEE 6, una descripción técnica](https://reader036.vdocuments.net/reader036/viewer/2022062418/554c0e1ab4c905ec518b4670/html5/thumbnails/17.jpg)
17
EJB 3.1
•@Singleton beans•@Startup beans•@Asynchronous invocations•@Schedule tasks•EJBContainer API works on Java SE• No-interface view (1 EJB = 1 class!)• Define EJBs directly inside a web app
![Page 18: JavaEE 6, una descripción técnica](https://reader036.vdocuments.net/reader036/viewer/2022062418/554c0e1ab4c905ec518b4670/html5/thumbnails/18.jpg)
18
Packaging in a war
foo.ear
com/acme/Foo.class
WEB-INF/web.xmlWEB-INF/classes com/acme/FooServlet.class
com/acme/FooEJB.classcom/acme/FooEJBLocal.class
lib/foo_common.jar
foo_web.war
foo_ejb.jar
foo.war
WEB-INF/classes com/acme/Foo.class com/acme/FooServlet.class com/acme/FooEJB.class
![Page 19: JavaEE 6, una descripción técnica](https://reader036.vdocuments.net/reader036/viewer/2022062418/554c0e1ab4c905ec518b4670/html5/thumbnails/19.jpg)
19
Dependency Injection
• Context & Dependency Injection (CDI)• JSR 299 with JSR-330 (@Inject)• Context management (conversation), events,
alternatives, stereotypes, decorators & more
• Beans discovered at startup• Injection metamodel (BeanManager API)•@Resource still around
![Page 20: JavaEE 6, una descripción técnica](https://reader036.vdocuments.net/reader036/viewer/2022062418/554c0e1ab4c905ec518b4670/html5/thumbnails/20.jpg)
20
Qualified injection
@Inject @Premium Customer cust;
qualifier (user-defined label)
i.e. « which one? »
typ
e
inje
ctio
n p
oin
t
![Page 21: JavaEE 6, una descripción técnica](https://reader036.vdocuments.net/reader036/viewer/2022062418/554c0e1ab4c905ec518b4670/html5/thumbnails/21.jpg)
21
Qualifier Annotation
@Target({TYPE,METHOD,PARAMETER,FIELD})@Retention(RUNTIME)@Documented@Qualifierpublic @interface Premium {…}
@Premium // my own qualifierpublic class SpecialCustomer implements Customer { public void buy() {…}}
![Page 22: JavaEE 6, una descripción técnica](https://reader036.vdocuments.net/reader036/viewer/2022062418/554c0e1ab4c905ec518b4670/html5/thumbnails/22.jpg)
22
Qualified injection
@Inject @Premium Customer cust;
qualifier (user-defined label)
i.e. « which one? »
typ
e
inje
ctio
n p
oin
t
![Page 23: JavaEE 6, una descripción técnica](https://reader036.vdocuments.net/reader036/viewer/2022062418/554c0e1ab4c905ec518b4670/html5/thumbnails/23.jpg)
23
Contexts (the 'C' in CDI)
• Built-in “Web” Scopes :– @RequestScoped, @SessionScoped, @ApplicationScoped
– @ConversationScoped
public class CheckoutHandler { @Inject CheckoutHandler(@LoggedIn User user, @Reliable @PayBy(CREDIT_CARD) PaymentProcessor processor, @Default Cart cart) { ... }}
Client is not context-aware
![Page 24: JavaEE 6, una descripción técnica](https://reader036.vdocuments.net/reader036/viewer/2022062418/554c0e1ab4c905ec518b4670/html5/thumbnails/24.jpg)
24
A lot more to CDI
• Alternatives• Events• Stereotypes• Consumer/Producer• Decorator• Portable extensions• etc...
![Page 25: JavaEE 6, una descripción técnica](https://reader036.vdocuments.net/reader036/viewer/2022062418/554c0e1ab4c905ec518b4670/html5/thumbnails/25.jpg)
25
This is no science fiction
Java EE 6 and GlassFish Server 3 shipped final releases on
December 10th 2009
![Page 26: JavaEE 6, una descripción técnica](https://reader036.vdocuments.net/reader036/viewer/2022062418/554c0e1ab4c905ec518b4670/html5/thumbnails/26.jpg)
26
A word on GlassFish
• Production-Quality Open Source Server• Java EE 6 (full platform, web profile)• Modular (HK2, OSGi)• Developer-friendly (you judge!)
• GlassFish 3.1 now available!• Clustering, centralized admin• Load-balancing, HA• more...
• http://glassfish.org
![Page 27: JavaEE 6, una descripción técnica](https://reader036.vdocuments.net/reader036/viewer/2022062418/554c0e1ab4c905ec518b4670/html5/thumbnails/27.jpg)
GlassFish and WebLogic Together
WebLogic Server
Production Java Application Deployment
GlassFish Server
Production Java Application Deployment
• Best open source application server with support from Oracle
• Open source platform of choice for light- weight Web applications
• Focus on latest Java EE standards and community driven innovation
• Certified interoperability with Fusion Middleware
• Differentiated innovation, scout thread
• Best commercial application server for transactional Java EE applications
• Platform of choice for standardization
• Focus on lowest operational cost and mission critical applications
• integration with Oracle Database, Fusion Middleware & Fusion Applications
![Page 28: JavaEE 6, una descripción técnica](https://reader036.vdocuments.net/reader036/viewer/2022062418/554c0e1ab4c905ec518b4670/html5/thumbnails/28.jpg)
28
The following/preceding is intended to outline our general product direction. It is intended for information purposes only, and may not be incorporated into any contract. It is not a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions.The development, release, and timing of any features or functionality described for Oracle’s products remains at the sole discretion of Oracle.
![Page 29: JavaEE 6, una descripción técnica](https://reader036.vdocuments.net/reader036/viewer/2022062418/554c0e1ab4c905ec518b4670/html5/thumbnails/29.jpg)
29
References
• glassfish.org• oracle.com/goto/glassfish• blogs.sun.com/theaquarium• glassfish.org/roadmap• youtube.com/user/GlassFishVideos• Follow @glassfish
![Page 30: JavaEE 6, una descripción técnica](https://reader036.vdocuments.net/reader036/viewer/2022062418/554c0e1ab4c905ec518b4670/html5/thumbnails/30.jpg)
<Insert Picture Here>
Java EE 6, a Technical Overview
http://oracle.com/javaeehttp://glassfish.org