90
<Insert Picture Here> 1 1 1 Java Enterprise Edition 6 Update Scott Seighman Sr. Sales Consultant Cleveland Java Users Group

Cleveland Java Users Group Java Enterprise Edition 6 Updatefiles.meetup.com/1401221/cle_jug-032010.pdf · – Web Services – Ease of deployment • Continually shaped by users through

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Cleveland Java Users Group Java Enterprise Edition 6 Updatefiles.meetup.com/1401221/cle_jug-032010.pdf · – Web Services – Ease of deployment • Continually shaped by users through

<Insert Picture Here>

111

Java Enterprise Edition 6 UpdateScott SeighmanSr. Sales Consultant

Cleveland Java Users Group

Page 2: Cleveland Java Users Group Java Enterprise Edition 6 Updatefiles.meetup.com/1401221/cle_jug-032010.pdf · – Web Services – Ease of deployment • Continually shaped by users through

Cleveland Java Users Group – March '10 2222

Agenda

• Brief Java Update• Java Enterprise Edition Overview• Major Themes in Java EE 6• What’s New in Java EE 6• What’s Updated in Java EE 6• Q&A

Page 3: Cleveland Java Users Group Java Enterprise Edition 6 Updatefiles.meetup.com/1401221/cle_jug-032010.pdf · – Web Services – Ease of deployment • Continually shaped by users through

Cleveland Java Users Group – March '10 3333

Java is the Most Popular Language in the World

Page 4: Cleveland Java Users Group Java Enterprise Edition 6 Updatefiles.meetup.com/1401221/cle_jug-032010.pdf · – Web Services – Ease of deployment • Continually shaped by users through

Cleveland Java Users Group – March '10 4444

The Spectrum of Java

MobileDesktops

Embedded

TV CardsServers

Java Language

Java EEJavaFX

Language

VMs

APIs

Page 5: Cleveland Java Users Group Java Enterprise Edition 6 Updatefiles.meetup.com/1401221/cle_jug-032010.pdf · – Web Services – Ease of deployment • Continually shaped by users through

Cleveland Java Users Group – March '10 5555

Java Strategy

• Drive continued investment in the Java platform across a range of servers and devices

• Fuel further innovation in the Java platform, including JavaFX

• Continue supporting developer community, open source, and JCP

Page 6: Cleveland Java Users Group Java Enterprise Edition 6 Updatefiles.meetup.com/1401221/cle_jug-032010.pdf · – Web Services – Ease of deployment • Continually shaped by users through

Cleveland Java Users Group – March '10 6666

Java SE• Drive rapid delivery of Java SE 7

– Modularization– Developer productivity– Multiple languages– Higher performance– Support for multi-core processors

• HotSpot joins JRockit as strategic JVM– Converge best features of HotSpot and JRockit:

• World-leading performance• Fine-grained monitoring and management• Automated and manual performance tuning• Run on virtualized servers with no OS• Leverage multi-core with NUMA optimization• Extremely efficient garbage collection• Deterministic, real time behavior

• Continue support for all leading OS platforms

Page 7: Cleveland Java Users Group Java Enterprise Edition 6 Updatefiles.meetup.com/1401221/cle_jug-032010.pdf · – Web Services – Ease of deployment • Continually shaped by users through

Cleveland Java Users Group – March '10 7777

JavaFX and Rich User Experiences• Extend Java to provide unmatched

user interface capabilities– Design-oriented with visual assembly– Higher productivity with comprehensive

library of UI components– Rich user experiences with high

performance and extensibility– Seamless interoperability across Java,

JavaScript, and HTML 5• Portable across devices – desktop,

mobile, TV, and other form factors• Complements Oracle ADF and

ADF Mobile for enterprise applications

Page 8: Cleveland Java Users Group Java Enterprise Edition 6 Updatefiles.meetup.com/1401221/cle_jug-032010.pdf · – Web Services – Ease of deployment • Continually shaped by users through

Cleveland Java Users Group – March '10 8888

Java EE

• Java EE continues to evolve in important areas– Modularity with open standards– New, footprint-optimizing server “Profiles”– Richer UI and Web applications– Support for dynamic/scripting

languages– Optimized Web services stack

• GlassFish– GlassFish remains Java EE reference implementation

and for tactical applications

Page 9: Cleveland Java Users Group Java Enterprise Edition 6 Updatefiles.meetup.com/1401221/cle_jug-032010.pdf · – Web Services – Ease of deployment • Continually shaped by users through

Cleveland Java Users Group – March '10 9999

Java for Business

• Customized versions of Java SE with dedicated support for enterprises with special needs

• Best of platform standardization AND customized capabilities

• Future-proof your investment

Page 10: Cleveland Java Users Group Java Enterprise Edition 6 Updatefiles.meetup.com/1401221/cle_jug-032010.pdf · – Web Services – Ease of deployment • Continually shaped by users through

Cleveland Java Users Group – March '10 10101010

JavaOne

• JavaOne continues as the premier open community event for Java– Co-located with Oracle OpenWorld,

San Francisco, September 19-23 2010

• Expanding to other countries– Brazil– Russia– India– China

Page 11: Cleveland Java Users Group Java Enterprise Edition 6 Updatefiles.meetup.com/1401221/cle_jug-032010.pdf · – Web Services – Ease of deployment • Continually shaped by users through

Cleveland Java Users Group – March '10 11111111

Java EE Overview

• Java Enterprise Edition (Java EE) has evolved as an enterprise application deployment platform from several themes: – Robustness– Web Services– Ease of deployment

• Continually shaped by users through the Java Community Process (JCP)

• Java EE is a universal standard in enterprise IT, facilitating the development, deployment, and management of multitier, server-centric applications.

Page 12: Cleveland Java Users Group Java Enterprise Edition 6 Updatefiles.meetup.com/1401221/cle_jug-032010.pdf · – Web Services – Ease of deployment • Continually shaped by users through

Cleveland Java Users Group – March '10 12121212

Java PlatformTM Enterprise Edition

Enterprise Java Platform

Robustness

WebServices

Ease ofDevelopment

Java EE 5Ease of

Development Annotations

EJB 3.0Persistence

New andUpdated

Web Services

J2EE 1.4Web

Services Management Deployment

Async. Connector

J2EE 1.3CMP

ConnectorArchitecture

J2EE 1.2Servlet

JSPEJBJMS

RMI/IIOP

Page 13: Cleveland Java Users Group Java Enterprise Edition 6 Updatefiles.meetup.com/1401221/cle_jug-032010.pdf · – Web Services – Ease of deployment • Continually shaped by users through

Cleveland Java Users Group – March '10 13131313

What is an Application Server?

• Various API combinations packaged into “containers”• Each container based on Java SE• APIs and mechanisms for enterprise-class:

– Objects– User interface

Java, Enterprise Edition (EE)

– Integration– Persistence

– Transactions– Security

Page 14: Cleveland Java Users Group Java Enterprise Edition 6 Updatefiles.meetup.com/1401221/cle_jug-032010.pdf · – Web Services – Ease of deployment • Continually shaped by users through

Cleveland Java Users Group – March '10 14141414

Application Servers and Application Grid

Traditional World• Dedicated stacks• No scale-out• Expensive, slow capacity

expansion/adjustment• Inefficient utilization

Application Grid• Pooled, shared HW• Scale-out with app server clustering• Automated, instant adjustment• Efficient utilization, optimized

across data center

App Server App

App Server App ServerApp Server

App

Page 15: Cleveland Java Users Group Java Enterprise Edition 6 Updatefiles.meetup.com/1401221/cle_jug-032010.pdf · – Web Services – Ease of deployment • Continually shaped by users through

Cleveland Java Users Group – March '10 15151515

Application Grid

Lowest operational

costs

Pooling and sharing of resources

Automated, dynamic adjustment

Custom App

Packaged App

SOA Service

C/C++/ COBOL Legacy

Outperform with speed and flexibility

Best foundation for entire

software stack

Application Grid

Page 16: Cleveland Java Users Group Java Enterprise Edition 6 Updatefiles.meetup.com/1401221/cle_jug-032010.pdf · – Web Services – Ease of deployment • Continually shaped by users through

Cleveland Java Users Group – March '10 16161616

<Insert Picture Here>

Java EE 6

Page 17: Cleveland Java Users Group Java Enterprise Edition 6 Updatefiles.meetup.com/1401221/cle_jug-032010.pdf · – Web Services – Ease of deployment • Continually shaped by users through

Cleveland Java Users Group – March '10 17171717

Major Themes of Java EE 6• Right-sizing

– Profiles & Pruning– Use only what you need– Web profile, EJB Lite

• Extensibility (Pluggability)– Use 3rd-party frameworks or libraries

without extra configuration• Ease of development

– Default over configuration– Dependency Injection (DI)

Page 18: Cleveland Java Users Group Java Enterprise Edition 6 Updatefiles.meetup.com/1401221/cle_jug-032010.pdf · – Web Services – Ease of deployment • Continually shaped by users through

Cleveland Java Users Group – March '10 18181818

Java PlatformTM Enterprise Edition

Java EE 6Web Profile

Enterprise Java Platform

Robustness

Java EE 6Pruning

ExtensibilityProfilesEase of

DevelopmentEJB LiteRESTfulServices

DependencyInjection

WebServices

Ease ofDevelopment

Flexible

Java EE 5Ease of

Development Annotations

EJB 3.0Persistence

New andUpdated

Web Services

J2EE 1.4Web

Services Management Deployment

Async. Connector

J2EE 1.3CMP

ConnectorArchitecture

J2EE 1.2Servlet JSPEJB JMS

RMI/IIOP

Lightweight

Page 19: Cleveland Java Users Group Java Enterprise Edition 6 Updatefiles.meetup.com/1401221/cle_jug-032010.pdf · – Web Services – Ease of deployment • Continually shaped by users through

Cleveland Java Users Group – March '10 19191919

Pruning• Addresses bloat concern• Two step process:

> First declare “proposed optional”> Then make them fully optional in the next

release• Pruned in Java EE 6:

> JAX-RPC> EJB 2.x Entity Beans> JAXR> JSR-88 (Java EE Application Deployment)

Page 20: Cleveland Java Users Group Java Enterprise Edition 6 Updatefiles.meetup.com/1401221/cle_jug-032010.pdf · – Web Services – Ease of deployment • Continually shaped by users through

Cleveland Java Users Group – March '10 20202020

Pruning

• Marks some specifications “deprecated” in next version– Might disappear from Java EE 7

• Pruning provides an orderly way to alert organizations that a technology will be removed from the specification in future releases

Page 21: Cleveland Java Users Group Java Enterprise Edition 6 Updatefiles.meetup.com/1401221/cle_jug-032010.pdf · – Web Services – Ease of deployment • Continually shaped by users through

Cleveland Java Users Group – March '10 21212121

Profiles• Bundles of technologies targeting

specific classes of applications• Decoupled from each other• Recommended that they sync up with

the platform periodically• With compatibility guarantees

> Must implement all required technologies> Must satisfy all individual technology

requirements> Must satisfy all joint requirements

Page 22: Cleveland Java Users Group Java Enterprise Edition 6 Updatefiles.meetup.com/1401221/cle_jug-032010.pdf · – Web Services – Ease of deployment • Continually shaped by users through

Cleveland Java Users Group – March '10 22222222

Web Profile

• A modern Java web application stack• First profile to be defined• Mid-size, fully functional• Complete, but not the kitchen sink• Pluggability takes care of any extensions

Page 23: Cleveland Java Users Group Java Enterprise Edition 6 Updatefiles.meetup.com/1401221/cle_jug-032010.pdf · – Web Services – Ease of deployment • Continually shaped by users through

Cleveland Java Users Group – March '10 23232323

Web Profile Contents

• Servlet• JSP / EL• JSTL• JSF• Bean Validation • EJB Lite• JPA

• JTA• DI• CDI• Managed Beans• Interceptors• JSR-250

Page 24: Cleveland Java Users Group Java Enterprise Edition 6 Updatefiles.meetup.com/1401221/cle_jug-032010.pdf · – Web Services – Ease of deployment • Continually shaped by users through

Cleveland Java Users Group – March '10 24242424

Pluggability / Extensibility

• Focus on the web tier• Create a level playing field for third

party libraries and frameworks• Two major extensibility points in

Servlets and CDI• Simplify packaging of web apps

> Zero-configuration

Page 25: Cleveland Java Users Group Java Enterprise Edition 6 Updatefiles.meetup.com/1401221/cle_jug-032010.pdf · – Web Services – Ease of deployment • Continually shaped by users through

Cleveland Java Users Group – March '10 25252525

Extensibility

• Open source frameworks are a critical part of Enterprise Java development

• Java EE 6 Expert Group defined way for framework technologies to be integrated with the platform• Examples: Spring, Struts, GUICE

Frameworks

Page 26: Cleveland Java Users Group Java Enterprise Edition 6 Updatefiles.meetup.com/1401221/cle_jug-032010.pdf · – Web Services – Ease of deployment • Continually shaped by users through

Cleveland Java Users Group – March '10 26262626

Pluggability (of 3rd party Frameworks)

• Make it possible to use 3rd-party framework and libraries without configuration in web.xml

• A framework is provided as a self-contained jar file

• All you have to do use the framework is to place the self-contained jar file under /WEB-INF/lib directory

Page 27: Cleveland Java Users Group Java Enterprise Edition 6 Updatefiles.meetup.com/1401221/cle_jug-032010.pdf · – Web Services – Ease of deployment • Continually shaped by users through

Cleveland Java Users Group – March '10 27272727

Pluggability: Modularization of web.xml

• No more tweaking of single web.xml• Each framework defines its own web-

fragment.xml– Declare their own controller servlet– Declare listener and filters

• Container then collects them all• Overridden by main web.xml

– Order of the frameworks/libs can be specified in the web.xml

Page 28: Cleveland Java Users Group Java Enterprise Edition 6 Updatefiles.meetup.com/1401221/cle_jug-032010.pdf · – Web Services – Ease of deployment • Continually shaped by users through

Cleveland Java Users Group – March '10 28282828

Pluggability: Modularization of web.xml

• A self-contained framework is provided as a jar file and placed under WEB-INF/lib– web.xml (optional)– WEB-INF/lib/someframework1.jar →

META-INF/web-fragment.xml– WEB-INF/lib/someframework2.jar →

META-INF/web-fragment.xml

Page 29: Cleveland Java Users Group Java Enterprise Edition 6 Updatefiles.meetup.com/1401221/cle_jug-032010.pdf · – Web Services – Ease of deployment • Continually shaped by users through

Cleveland Java Users Group – March '10 29292929

Pluggability: Modularization of web.xml

<web-fragment><servlet> <servlet-name>MyFramework</servlet-name> <servlet-class>com.mycom.MyFrameworkServlet</servlet-

class></servlet><servlet-mapping> <servlet-name>MyFramework</servlet-name> <url-pattern>/MyFramework</url-pattern></servlet-mapping>...</web-fragment>

Page 30: Cleveland Java Users Group Java Enterprise Edition 6 Updatefiles.meetup.com/1401221/cle_jug-032010.pdf · – Web Services – Ease of deployment • Continually shaped by users through

Cleveland Java Users Group – March '10 30303030

Pluggability and Extensibility

• Framework (Struts, Spring...) + Applications + .. = Big and complex web.xml

Page 31: Cleveland Java Users Group Java Enterprise Edition 6 Updatefiles.meetup.com/1401221/cle_jug-032010.pdf · – Web Services – Ease of deployment • Continually shaped by users through

Cleveland Java Users Group – March '10 31313131

Productivity: Ease of DevelopmentAdding an EJB to a Web Application

Page 32: Cleveland Java Users Group Java Enterprise Edition 6 Updatefiles.meetup.com/1401221/cle_jug-032010.pdf · – Web Services – Ease of deployment • Continually shaped by users through

Cleveland Java Users Group – March '10 32323232

Productivity: Less TypingServlet in Java EE 5: Create two source files

Page 33: Cleveland Java Users Group Java Enterprise Edition 6 Updatefiles.meetup.com/1401221/cle_jug-032010.pdf · – Web Services – Ease of deployment • Continually shaped by users through

Cleveland Java Users Group – March '10 33333333

Productivity: AnnotationsServlet in Java EE 6: In many cases a single source file

Page 34: Cleveland Java Users Group Java Enterprise Edition 6 Updatefiles.meetup.com/1401221/cle_jug-032010.pdf · – Web Services – Ease of deployment • Continually shaped by users through

Cleveland Java Users Group – March '10 34343434

Flexibility

• Subset of full Java EE Platform• Optimized for web applications• Smaller footprint• Fast startup and deployment• Technologies

• Servlet 3.0, EJB Lite 3.1, JPA 2.0, JSP 2.2, EL 1.2, JSTL 1.2, JSF 2.0, JTA 1.1, JSR 45, Common Annotations

Web Profile

Page 35: Cleveland Java Users Group Java Enterprise Edition 6 Updatefiles.meetup.com/1401221/cle_jug-032010.pdf · – Web Services – Ease of deployment • Continually shaped by users through

Cleveland Java Users Group – March '10 35353535

<Insert Picture Here>

What’s New in Java EE 6

Page 36: Cleveland Java Users Group Java Enterprise Edition 6 Updatefiles.meetup.com/1401221/cle_jug-032010.pdf · – Web Services – Ease of deployment • Continually shaped by users through

Cleveland Java Users Group – March '10 36363636

Java EE 6 Platform

• Several new APIs• Web Profile• Pluggability/extensibility• Dependency injection• Many improvements to individual APIs

What's New?

Page 37: Cleveland Java Users Group Java Enterprise Edition 6 Updatefiles.meetup.com/1401221/cle_jug-032010.pdf · – Web Services – Ease of deployment • Continually shaped by users through

Cleveland Java Users Group – March '10 37373737

Java EE 6 Platform

• JAX-RS 1.1• Bean Validation 1.0• DI 1.0• CDI 1.0• Managed Beans 1.0

New Technologies

Page 38: Cleveland Java Users Group Java Enterprise Edition 6 Updatefiles.meetup.com/1401221/cle_jug-032010.pdf · – Web Services – Ease of deployment • Continually shaped by users through

Cleveland Java Users Group – March '10 38383838

Java EE 6 Platform

• EJB 3.1• JPA 2.0• Servlet 3.0• JSF 2.0• Connectors 1.6• Interceptors 1.1

Updated Technologies

• JAX-WS 2.2• JSR-109 1.3• JSP 2.2• EL 2.2• JSR-250 1.1• JACC 1.4• JASPIC 1.0

Page 39: Cleveland Java Users Group Java Enterprise Edition 6 Updatefiles.meetup.com/1401221/cle_jug-032010.pdf · – Web Services – Ease of deployment • Continually shaped by users through

Cleveland Java Users Group – March '10 39393939

JAX-RS 1.1

• Already widely adopted• Really a high-level HTTP API• Annotation-based programming model• Programmatic API when needed

Page 40: Cleveland Java Users Group Java Enterprise Edition 6 Updatefiles.meetup.com/1401221/cle_jug-032010.pdf · – Web Services – Ease of deployment • Continually shaped by users through

Cleveland Java Users Group – March '10 40404040

JAX-RS Resource Class

Identified by the @Path annotation

@Path(“widgets/{id}”)@Produces(“application/widgets+xml”)public class WidgetResource { public WidgetResource(@PathParam(“id”) String id) { … } @GET Widget getWidget() { … }}

Page 41: Cleveland Java Users Group Java Enterprise Edition 6 Updatefiles.meetup.com/1401221/cle_jug-032010.pdf · – Web Services – Ease of deployment • Continually shaped by users through

Cleveland Java Users Group – March '10 41414141

Bean Validation 1.0: What is it?

• Enable declarative validation in your applications

• Constrain Once, Validate Anywhere – restriction on a bean, field or property – Not null, size between 1 and 7, valid email...

• Standard way to validate constraints• Integration with JPA 2.0 & JSF 2.0

Page 42: Cleveland Java Users Group Java Enterprise Edition 6 Updatefiles.meetup.com/1401221/cle_jug-032010.pdf · – Web Services – Ease of deployment • Continually shaped by users through

Cleveland Java Users Group – March '10 42424242

Bean Validation 1.0

• Integrated with JSF, JPA• Constraints represented by annotations @NotNull @Size(max=40) String address;• Fully extensible @Email String recipient;

Page 43: Cleveland Java Users Group Java Enterprise Edition 6 Updatefiles.meetup.com/1401221/cle_jug-032010.pdf · – Web Services – Ease of deployment • Continually shaped by users through

Cleveland Java Users Group – March '10 43434343

DI 1.0 (JSR 330): What is it & Why?

• Stands for “Dependency Injection for Java”• Java EE 5 has resource injection

– @Resource, @PersistenceContext, @EJB• But there is no application level injection in

Java EE 5• DI 1.0 introduces @Inject annotation (and

others) for application level injection• Spec. leads are Bob Lee (from Google) and

Rod Johnson (from SpringSource)

Page 44: Cleveland Java Users Group Java Enterprise Edition 6 Updatefiles.meetup.com/1401221/cle_jug-032010.pdf · – Web Services – Ease of deployment • Continually shaped by users through

Cleveland Java Users Group – March '10 44444444

Dependency Injection

• Combination of DI 1.0 / CDI 1.0• New @Inject annotation @Inject @LoggedIn User user;• Beans auto-discovered at startup• Extensible

> Injection metamodel (BeanManager API)• @Resource still available for container

resources

WHAT

Page 45: Cleveland Java Users Group Java Enterprise Edition 6 Updatefiles.meetup.com/1401221/cle_jug-032010.pdf · – Web Services – Ease of deployment • Continually shaped by users through

Cleveland Java Users Group – March '10 45454545

Dependency Injection

• Combination of DI 1.0 / CDI 1.0• New @Inject annotation @Inject @LoggedIn User user;• Beans auto-discovered at startup• Extensible

> Injection metamodel (BeanManager API)• @Resource still available for container

resources

WHICH ONE

WHAT

Page 46: Cleveland Java Users Group Java Enterprise Edition 6 Updatefiles.meetup.com/1401221/cle_jug-032010.pdf · – Web Services – Ease of deployment • Continually shaped by users through

Cleveland Java Users Group – March '10 46464646

Dependency Injection Sample

public class CheckoutHandler {

@Inject CheckoutHandler(@LoggedIn User user, @Reliable @PayBy(CREDIT_CARD) PaymentProcessor processor, @Default Cart cart) { ... }

}

Page 47: Cleveland Java Users Group Java Enterprise Edition 6 Updatefiles.meetup.com/1401221/cle_jug-032010.pdf · – Web Services – Ease of deployment • Continually shaped by users through

Cleveland Java Users Group – March '10 47474747

DI 1.0 (JSR 330)

• javax.inject package• @Inject : Identifies injectable

constructors, methods, and fields• @Named : String-based qualifier (for EL)• @Qualifier : Identifies qualifier• @Scope : Identifies scope annotations• @Singleton : Instantiates once

Page 48: Cleveland Java Users Group Java Enterprise Edition 6 Updatefiles.meetup.com/1401221/cle_jug-032010.pdf · – Web Services – Ease of deployment • Continually shaped by users through

Cleveland Java Users Group – March '10 48484848

CDI 1.0 (JSR-299)Contexts and Dependency Injection• Used to be called “WebBeans”• Uses annotations defined in DI 1.0 (JSR-330) @Inject ShoppingCart cart;• Bean discovery and wiring

– Container discovers beans and wires everything together automatically

• Let you use EJBs directly as JSF backing beans• Every object managed by CDI has a well-defined

scope– @Dependent, @ConversationalScoped,

@RequestScoped, @SessionScoped, @ApplicationScoped

Page 49: Cleveland Java Users Group Java Enterprise Edition 6 Updatefiles.meetup.com/1401221/cle_jug-032010.pdf · – Web Services – Ease of deployment • Continually shaped by users through

Cleveland Java Users Group – March '10 49494949

CDI 1.0 (JSR-299)

• Injected type is identified by– Qualifier(s) + Java type– e.g. @Inject @LoggedIn User user;– Qualifier is used to narrow down a

particular class when more than one candidate for injection exists

• Context management with scopes– @ConversationScoped– public class ShoppingCart { … }

Page 50: Cleveland Java Users Group Java Enterprise Edition 6 Updatefiles.meetup.com/1401221/cle_jug-032010.pdf · – Web Services – Ease of deployment • Continually shaped by users through

Cleveland Java Users Group – March '10 50505050

Managed Bean 1.0: What is it?

• Managed Beans are container-managed POJOs– Lightweight component model

• Support a small set of basic services– Injection of a resource (@Resource...)– Life-cycle management (@PostConstruct,

@PreDestroy)– Interceptor (@Interceptors, @AroundInvoke)

Page 51: Cleveland Java Users Group Java Enterprise Edition 6 Updatefiles.meetup.com/1401221/cle_jug-032010.pdf · – Web Services – Ease of deployment • Continually shaped by users through

Cleveland Java Users Group – March '10 51515151

Managed Bean vs. EJB and REST

• You could see everything as a Managed Bean with extra services

• An EJB is a Managed Bean with :– Transaction support– Security– Thread safety

• A REST service is a Managed Bean with HTTP support

Page 52: Cleveland Java Users Group Java Enterprise Edition 6 Updatefiles.meetup.com/1401221/cle_jug-032010.pdf · – Web Services – Ease of deployment • Continually shaped by users through

Cleveland Java Users Group – March '10 52525252

EJB 3.1

• Packaging in a war file• Optional Local Interfaces• Singleton• Asynchronous calls• Cron-based Timer Service• Embeddable Container• EJB Lite

Page 53: Cleveland Java Users Group Java Enterprise Edition 6 Updatefiles.meetup.com/1401221/cle_jug-032010.pdf · – Web Services – Ease of deployment • Continually shaped by users through

Cleveland Java Users Group – March '10 53535353

EJB 3.1• Packaging Simplification• No more ejb-jar, easier to share libraries,

persistence units• Singleton Beans

– @Singleton to share in EJB container (per JVM)• Concurrency

– @ReadOnly as singleton optimization (vs single-threaded)– @BeanManagedConcurrency for explicitly synchronized

• Time Service– @Schedule (hour=“12”, dayOfMonth=“2”)– Automatic creation (on deploy)

• Asynchronous Operations– @Asynchronous public void init …– @Asynchronous Future doWork …

Page 54: Cleveland Java Users Group Java Enterprise Edition 6 Updatefiles.meetup.com/1401221/cle_jug-032010.pdf · – Web Services – Ease of deployment • Continually shaped by users through

Cleveland Java Users Group – March '10 54545454

// EJB 2.1public class PayrollBean implements javax.ejb.SessionBean {SessionContext ctx;DataSource empDB;public void setSessionContext(SessionContext ctx) { this.ctx = ctx;}public void ejbCreate() { Context initialContext =

new InitialContext(); empDB = (DataSource) initialContext.lookup(“java:comp/env/jdbc/empDB”);

}public void setBenefitsDeduction (

int empId, double deduction){ Connection conn = empDB.getConnection(); ...}public void ejbActivate() {}public void ejbPassivate() {}public void ejbRemove() {}...}

EJB 2.1 --> EJB 3.0 --> EJB 3.1

<session> <ejb-name>PayrollBean</ejb-name> <local-home>PayrollHome</local-home> <local>Payroll</local> <ejb-class>com.example.PayrollBean</ejb-class> <session-type>Stateless</session-type> <transaction-type>Container</transaction-type> <resource-ref> <res-ref-name>jdbc/empDB</res-ref-name> <res-ref-type>javax.sql.DataSource</res-ref-type> <res-auth>Container</res-auth> </resource-ref></session>...<assembly-descriptor>...</assembly-descriptor>

Page 55: Cleveland Java Users Group Java Enterprise Edition 6 Updatefiles.meetup.com/1401221/cle_jug-032010.pdf · – Web Services – Ease of deployment • Continually shaped by users through

Cleveland Java Users Group – March '10 55555555

EJB 3.0 --> EJB 3.1

// Same example, EJB 3.0

@Stateless public class PayrollBean implements Payroll {

@Resource DataSource empDB;public void setBenefitsDeduction (int empId, double deduction) { Connection conn = empDB.getConnection(); ...}

...}

Page 56: Cleveland Java Users Group Java Enterprise Edition 6 Updatefiles.meetup.com/1401221/cle_jug-032010.pdf · – Web Services – Ease of deployment • Continually shaped by users through

Cleveland Java Users Group – March '10 56565656

EJB 3.1

• @Singleton beans• @Startup beans• @Asynchronous invocations• No interface view• Define EJBs directly inside a web

application• EJBContainer API works on Java SE

Page 57: Cleveland Java Users Group Java Enterprise Edition 6 Updatefiles.meetup.com/1401221/cle_jug-032010.pdf · – Web Services – Ease of deployment • Continually shaped by users through

Cleveland Java Users Group – March '10 57575757

EJB 3.1: Singleton

• One single instance per application• Share state• @Singleton• Support for container-managed

concurrency and bean-managed concurrency– @ConcurrencyManagement

Page 58: Cleveland Java Users Group Java Enterprise Edition 6 Updatefiles.meetup.com/1401221/cle_jug-032010.pdf · – Web Services – Ease of deployment • Continually shaped by users through

Cleveland Java Users Group – March '10 58585858

EJB 3.1: Embeddable Container

• API allowing to :– Initialize a container– Get container ctx

• Can run in any Java SE environment– Batch processing– Simplifies testing– Just a jar file in your classpath

Page 59: Cleveland Java Users Group Java Enterprise Edition 6 Updatefiles.meetup.com/1401221/cle_jug-032010.pdf · – Web Services – Ease of deployment • Continually shaped by users through

Cleveland Java Users Group – March '10 59595959

Simplified PackagingAdding an EJB to a Web Application

BuyBooks.warBuyBooks.war ShoppingCartShoppingCartEJB ClassEJB Class

ShoppingCart.jarShoppingCart.jar

BuyBooks.earBuyBooks.ear

ShoppingCartShoppingCartEJB ClassEJB Class

BuyBooks.warBuyBooks.war

• EJB components can be packaged directly inside a web application archive (war file)

Page 60: Cleveland Java Users Group Java Enterprise Edition 6 Updatefiles.meetup.com/1401221/cle_jug-032010.pdf · – Web Services – Ease of deployment • Continually shaped by users through

Cleveland Java Users Group – March '10 60606060

EJB 3.1 Lite

• A subset of EJB 3.1• All types of session beans

> stateful, stateless, singleton• Declarative transactions and security• Interceptors• ejb-jar.xml descriptor allowed (but

optional)

Page 61: Cleveland Java Users Group Java Enterprise Edition 6 Updatefiles.meetup.com/1401221/cle_jug-032010.pdf · – Web Services – Ease of deployment • Continually shaped by users through

Cleveland Java Users Group – March '10 61616161

EJB Lite

• Subset of EJB 3.1– Local session bean– Injection– Transaction– Interceptors– Security

• Part of Web profile

• Not Included• Message Driven Beans• EJB Web Service• Endpoint• RMI/IIOP Interoperability• Remote interface• EJB 2.x• Timer service• CMP / BMP

Page 62: Cleveland Java Users Group Java Enterprise Edition 6 Updatefiles.meetup.com/1401221/cle_jug-032010.pdf · – Web Services – Ease of deployment • Continually shaped by users through

Cleveland Java Users Group – March '10 62626262

JPA 2.0 Features

• Richer mappings• Richer JPQL• Pessimistic Locking• Criteria API• Cache API• Many more

Page 63: Cleveland Java Users Group Java Enterprise Edition 6 Updatefiles.meetup.com/1401221/cle_jug-032010.pdf · – Web Services – Ease of deployment • Continually shaped by users through

Cleveland Java Users Group – March '10 63636363

JPA 2.0

• Support for collections of basic types and embeddable objects

• JPQL enhancements> e.g. CASE WHEN, NULLIF

• Pessimistic locking• Criteria API for dynamic query

construction

Page 64: Cleveland Java Users Group Java Enterprise Edition 6 Updatefiles.meetup.com/1401221/cle_jug-032010.pdf · – Web Services – Ease of deployment • Continually shaped by users through

Cleveland Java Users Group – March '10 64646464

JPA 2.0: Richer Mapping

• Supports collection of basic types and embeddables– In JPA 1.0, only collections of entities were

supported• Supports multiple levels of embeddables• Embeddables containing collection of

embeddables and basic types• PK can be derived entities• More support for Maps...

Page 65: Cleveland Java Users Group Java Enterprise Edition 6 Updatefiles.meetup.com/1401221/cle_jug-032010.pdf · – Web Services – Ease of deployment • Continually shaped by users through

Cleveland Java Users Group – March '10 65656565

JPA 2.0: Richer JPQL

• Added entity type to support non-polymorphic queries

• Allow joins in subquery FROM clause• Added new operators

– INDEX (for ordered lists)– CASE (for case expressions)– more

• Added new reserved words– ABS, BOTH, CONCAT, ELSE, END, ESCAPE,

LEADING, LENGTH, LOCATE, SET, SIZE, SQRT, SUBSTRING, TRAILING

Page 66: Cleveland Java Users Group Java Enterprise Edition 6 Updatefiles.meetup.com/1401221/cle_jug-032010.pdf · – Web Services – Ease of deployment • Continually shaped by users through

Cleveland Java Users Group – March '10 66666666

JPA 2.0: Standard Properties

• In persistence.xml:– javax.persistence.jdbc.driver– javax.persistence.jdbc.url– javax.persistence.jdbc.user– javax.persistence.jdbc.password

Page 67: Cleveland Java Users Group Java Enterprise Edition 6 Updatefiles.meetup.com/1401221/cle_jug-032010.pdf · – Web Services – Ease of deployment • Continually shaped by users through

Cleveland Java Users Group – March '10 67676767

JPA 2.0: Locking Enhancements

• JPA 1.0 supports only optimist locking• JPA 2.0 adds pessimistic locking• Multiple places to specify lock

– read and lock– read then lock– read then lock and refresh

public enum LockModeType {OPTIMISTIC,OPTIMISTIC_FORCE_INCREMENT,PESSIMISTIC,PESSIMISTIC_FORCE_INCREMENT,NONE

}

Page 68: Cleveland Java Users Group Java Enterprise Edition 6 Updatefiles.meetup.com/1401221/cle_jug-032010.pdf · – Web Services – Ease of deployment • Continually shaped by users through

Cleveland Java Users Group – March '10 68686868

JPA 2.0: Criteria API

• Strongly typed criteria API• Object-based query definition objects

– rather than string-based• Like JPQL• Uses a metamodel – Compile time type

checking using Generics– Each entity X has a metamodel class X_– Criteria API operates on the metamodel

Page 69: Cleveland Java Users Group Java Enterprise Edition 6 Updatefiles.meetup.com/1401221/cle_jug-032010.pdf · – Web Services – Ease of deployment • Continually shaped by users through

Cleveland Java Users Group – March '10 69696969

JPA 2.0: Caching

• Supports the use of a second-level cache

• Cache API– contain(Class, PK)– evict(Class, PK), evict(Class)– evictAll()

• @Cacheable annotation on entities

Page 70: Cleveland Java Users Group Java Enterprise Edition 6 Updatefiles.meetup.com/1401221/cle_jug-032010.pdf · – Web Services – Ease of deployment • Continually shaped by users through

Cleveland Java Users Group – March '10 70707070

Servlet 3.0 Features

• Ease of Development– Through annotation

• Dynamic registration of Servlets and Filters– During runtime

• Pluggability (of 3rd-party frameworks/libs)– No more tweaking of web.xml is needed

• Asynchronous Servlet– Support Comet applications

• Security enhancements

Page 71: Cleveland Java Users Group Java Enterprise Edition 6 Updatefiles.meetup.com/1401221/cle_jug-032010.pdf · – Web Services – Ease of deployment • Continually shaped by users through

Cleveland Java Users Group – March '10 71717171

Servlet Container Pluggability

• ServletContainerInitializer interface implemented by extensions

• @HandlesTypes to declare interest in one or more annotation types

• ServletContext now contains method to dynamically register servlets and filters

Page 72: Cleveland Java Users Group Java Enterprise Edition 6 Updatefiles.meetup.com/1401221/cle_jug-032010.pdf · – Web Services – Ease of deployment • Continually shaped by users through

Cleveland Java Users Group – March '10 72727272

Asynchronous Servlet

• Async. Servlets are for preventing “thread starvation” in cases such as following in standard (thus portable) fashion– Waiting for resources (eg JDBC connection)– Waiting for Comet events (eg Published message

in Comet-based Chat application)– Waiting for responses (eg web services)

• Better scalability

Page 73: Cleveland Java Users Group Java Enterprise Edition 6 Updatefiles.meetup.com/1401221/cle_jug-032010.pdf · – Web Services – Ease of deployment • Continually shaped by users through

Cleveland Java Users Group – March '10 73737373

Servlet Container Extension

Registered using META-INF/services

@HandlesTypes(WebService.class)public class WSInitializer implements ServletContainerInitializer { public void onStartup(Set<Class<?>> c, ServletContext ctx) { ServletRegistration r = ctx.addServlet(...); r.addServletMapping(...); }}

Page 74: Cleveland Java Users Group Java Enterprise Edition 6 Updatefiles.meetup.com/1401221/cle_jug-032010.pdf · – Web Services – Ease of deployment • Continually shaped by users through

Cleveland Java Users Group – March '10 74747474

JSF 2.0

• Facelet as a standard view declaration language

• Composite components• Ajax (declarative and programmatic) f:ajax• Partial state saving• System events f:event• Resources• Validation f:validateBean

Page 75: Cleveland Java Users Group Java Enterprise Edition 6 Updatefiles.meetup.com/1401221/cle_jug-032010.pdf · – Web Services – Ease of deployment • Continually shaped by users through

Cleveland Java Users Group – March '10 75757575

JSF 2.0: Composite Components

• Made up of simpler components• True JSF component• Much easier to build in JSF 2.0 (than in

JSF 1.0)– Single file, No Java code is needed– NetBeans 6.8 provides “Convert to

Composite Component” wizard• Can attach listeners, validators

Page 76: Cleveland Java Users Group Java Enterprise Edition 6 Updatefiles.meetup.com/1401221/cle_jug-032010.pdf · – Web Services – Ease of deployment • Continually shaped by users through

Cleveland Java Users Group – March '10 76767676

JSF 2.0

• Annotation based– faces-config.xml is optional

• Easy navigation• Page description language

– Facelets (preferred)– JSP (still supported)

• Templating• Composite components• Ajax support

Page 77: Cleveland Java Users Group Java Enterprise Edition 6 Updatefiles.meetup.com/1401221/cle_jug-032010.pdf · – Web Services – Ease of deployment • Continually shaped by users through

Cleveland Java Users Group – March '10 77777777

JSF 2.0: Facelets

• Preferred view handler in JSF– Addresses problems of using JSP with JSF

• XHTML• Pages are usable from HTML editors• Templating• Composite components

Page 78: Cleveland Java Users Group Java Enterprise Edition 6 Updatefiles.meetup.com/1401221/cle_jug-032010.pdf · – Web Services – Ease of deployment • Continually shaped by users through

Cleveland Java Users Group – March '10 78787878

Modular Web Applications

• Libraries can contain a web-fragment.xml descriptor

• web.xml is now optional• Ability to serve resources out of jars

with /META-INF/resources

/WEB-INF/lib/catalog.jar /META-INF/resources/catalog/books.html

Page 79: Cleveland Java Users Group Java Enterprise Edition 6 Updatefiles.meetup.com/1401221/cle_jug-032010.pdf · – Web Services – Ease of deployment • Continually shaped by users through

Cleveland Java Users Group – March '10 79797979

New JNDI Namespaces

• Until now, only java:comp• Now adding:

> java:module a module (war, ejb jar)> java:app an application> java:global the whole server / cluster

• Example @Resource(lookup=”java:app/CustomerDB”)

DataSource db;

• EJB components have global names now◸java:global/app1/module2/SomeBean!com.acme.Foo

Page 80: Cleveland Java Users Group Java Enterprise Edition 6 Updatefiles.meetup.com/1401221/cle_jug-032010.pdf · – Web Services – Ease of deployment • Continually shaped by users through

Cleveland Java Users Group – March '10 80808080

Interceptors 1.1: What is it?

• Address cross-cutting concerns in Java EE• Was part of the EJB 3.0 spec• Now a separate spec shipped with EJB 3.1• Can be used in EJBs ... as well as

ManagedBeans• @AroundInvoke

Page 81: Cleveland Java Users Group Java Enterprise Edition 6 Updatefiles.meetup.com/1401221/cle_jug-032010.pdf · – Web Services – Ease of deployment • Continually shaped by users through

Cleveland Java Users Group – March '10 81818181

Connectors 1.6

• Annotation-based programming model for resource adapters

• Generic work context> QoS across EIS

• Security contract for RAs

Page 82: Cleveland Java Users Group Java Enterprise Edition 6 Updatefiles.meetup.com/1401221/cle_jug-032010.pdf · – Web Services – Ease of deployment • Continually shaped by users through

Cleveland Java Users Group – March '10 82828282

Java EE 6 Platform

• More powerful• More flexible• More extensible• Easier to use

http://java.sun.com/javaee

Page 83: Cleveland Java Users Group Java Enterprise Edition 6 Updatefiles.meetup.com/1401221/cle_jug-032010.pdf · – Web Services – Ease of deployment • Continually shaped by users through

Cleveland Java Users Group – March '10 83838383

<Insert Picture Here>

Resources

Page 84: Cleveland Java Users Group Java Enterprise Edition 6 Updatefiles.meetup.com/1401221/cle_jug-032010.pdf · – Web Services – Ease of deployment • Continually shaped by users through

Cleveland Java Users Group – March '10 84848484

Java EE 6 Tutorialhttps://www.sun.com/offers/docs/java_ee6_tutorial.pdf

• The Java EE 6 Tutorial, Volume II contains all the topics in Java EE 6 Tutorial, Volume I and adds advanced topics, additional technologies, and case studies.

• The document is available to registered users of Enterprise Server

• 732 pages

Page 85: Cleveland Java Users Group Java Enterprise Edition 6 Updatefiles.meetup.com/1401221/cle_jug-032010.pdf · – Web Services – Ease of deployment • Continually shaped by users through

<Insert Picture Here>

858585

Thank YouScott [email protected]

Page 86: Cleveland Java Users Group Java Enterprise Edition 6 Updatefiles.meetup.com/1401221/cle_jug-032010.pdf · – Web Services – Ease of deployment • Continually shaped by users through

Cleveland Java Users Group – March '10 86868686

Java EE 6 Specification...

Page 87: Cleveland Java Users Group Java Enterprise Edition 6 Updatefiles.meetup.com/1401221/cle_jug-032010.pdf · – Web Services – Ease of deployment • Continually shaped by users through

Cleveland Java Users Group – March '10 87878787

Java EE 6 Specification

Page 88: Cleveland Java Users Group Java Enterprise Edition 6 Updatefiles.meetup.com/1401221/cle_jug-032010.pdf · – Web Services – Ease of deployment • Continually shaped by users through

Cleveland Java Users Group – March '10 88888888

Sample Query Using the Criteria API

Uses the canonical metamodel classesEntityManager em = ... ;CriteriaBuilder cb = em.getCriteriaBuilder();CriteriaQuery<Employee> cq = cb.createQuery(Employee.class);Root<Employee> emp = cq.from(Employee.class);cq.select(emp);cq.where(cb.equal(emp.get(Employee_.lastName), "Smith"));TypedQuery<Employee> query = em.createQuery(cq);List<Employee> rows = query.getResultList();

Page 89: Cleveland Java Users Group Java Enterprise Edition 6 Updatefiles.meetup.com/1401221/cle_jug-032010.pdf · – Web Services – Ease of deployment • Continually shaped by users through

Cleveland Java Users Group – March '10 89898989

Asynchronous HTTP Processing

• New programming model for async request processing> e.g. Comet, chat, push apps

• Opt-in model• Threads are managed by the container

@WebServlet(asyncSupported=true)public class MyServlet extends HttpServlet { ...}

Page 90: Cleveland Java Users Group Java Enterprise Edition 6 Updatefiles.meetup.com/1401221/cle_jug-032010.pdf · – Web Services – Ease of deployment • Continually shaped by users through

Cleveland Java Users Group – March '10 90909090

Web Fragments in Servlet 3.0

META-INF/web-fragment.xml<web-fragment version=”3.0” xmlns="http://java.sun.com/xml/ns/javaee"> <servlet> <servlet-name>welcome</servlet-name> <servlet-class>WelcomeServlet</servlet-class> </servlet> <listener> <listener-class>RequestListener</listener-class> </listener></web-fragment>