Java EE 與 雲端運算的展望

55

Transcript of Java EE 與 雲端運算的展望

Page 1: Java EE 與 雲端運算的展望
Page 2: Java EE 與 雲端運算的展望

Java EE 7Reaching for the CloudLee Chuk [email protected]

Page 3: Java EE 與 雲端運算的展望

The following 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 4: Java EE 與 雲端運算的展望

Java EE 6 PlatformDecember 10, 2009

Page 5: Java EE 與 雲端運算的展望

Great Tooling Support

Page 6: Java EE 與 雲端運算的展望

Industry Wide Support

Page 7: Java EE 與 雲端運算的展望

<Insert Picture Here>

Java EE 6

Page 8: Java EE 與 雲端運算的展望

What is New in Java EE 6?• Several new APIs• Web profile• Pluggability/extensibility• Dependency injection• Lots of improvements to existing API

Page 9: Java EE 與 雲端運算的展望

New And Updated Components• EJB 3.1 (+Lite)• JPA 2.0• Servlet 3.0• JSF 2.0• JAX-RS 1.1• Bean Validation 1.0• DI 1.0• CDI 1.0• Connectors 1.6

• Managed Beans 1.0• Interceptors 1.1• JSP 2.2• EL 2.2• JSR-250 1.1• JASPIC 1.1• JACC 1.5• JAX-WS 2.2• JSR-109 1.3

Page 10: Java EE 與 雲端運算的展望

Java EE 6 Web Profile

JSP 2.2JSTL 1.2

Servlet 3.0 · EL 2.2

DI 1.0 · CDI 1.0 · Interceptors 1.1 · JSR-250 1.1

Managed Beans 1.0 EJB 3.1 Lite

JPA 2.0 · JTA 1.1

Web container

extensionsCDI

extensions

JSF 2.0 Bea

n Valid

ation 1.0

Page 11: Java EE 與 雲端運算的展望

Web Tier Updates• Annotations in Servlet 3.0• Automatic discovery and registration of libraries• web.xml is optional• Package static files in resource jars• Use EJBs directly inside web apps

Page 12: Java EE 與 雲端運算的展望

Web Apps Simplified Packaging

WEB-INF/classes com/acme/MyServlet.class com/acme/MyFilter.class

WEB-INF/web.xml

index.htmlmain.cssjquery-1.4.2.jsui/jquery.ui.core.jsui/jquery.ui.widget.js

Web Application

WEB-INF/lib someframework.jar

Page 13: Java EE 與 雲端運算的展望

Web Apps Simplified Packaging Web Application

@WebServlet(urlPatterns=”/foo”)public class MyServlet { … }

@WebFilter(urlPatterns=”/foo”)public class MyFilter { … }

WEB-INF/classes com/acme/MyServlet.class com/acme/MyFilter.class

WEB-INF/web.xml

index.htmlmain.cssjquery-1.4.2.jsui/jquery.ui.core.jsui/jquery.ui.widget.js

WEB-INF/lib someframework.jar

Page 14: Java EE 與 雲端運算的展望

Web Apps Simplified Packaging

WEB-INF/classes com/acme/MyServlet.class com/acme/MyFilter.class

index.htmlmain.cssjquery-1.4.2.jsui/jquery.ui.core.jsui/jquery.ui.widget.js

Web Application

WEB-INF/lib someframework.jar

META-INF/web-fragment.xmlcom/fw/FwServlet.classcom/fw/FwFilter.class

Framework Jar

Page 15: Java EE 與 雲端運算的展望

Web Apps Simplified Packaging

WEB-INF/classes com/acme/MyServlet.class com/acme/MyFilter.class

index.htmlmain.css

Web Application

WEB-INF/lib someframework.jar jquery-ui-1.8.4.jar META-INF/resources/jquery-1.4.2.js

META-INF/resources/ui/jquery.ui.core.jsMETA-INF/resources/ui/jquery.ui.widget.js

jQuery Resource Jar

Page 16: Java EE 與 雲端運算的展望

Web Apps Simplified Packaging

WEB-INF/classes com/acme/MyServlet.class com/acme/MyFilter.class

index.htmlmain.css

Web Application

WEB-INF/lib someframework.jar jquery-ui-1.8.4.jar

• Self-contained• Generic• Reusable

Page 17: Java EE 與 雲端運算的展望

Java EE 6 Programming Model• Complementary declarative/programmatic layer• Annotations are additive• Code can evolve gradually• Managed beans as a common foundation

Page 18: Java EE 與 雲端運算的展望

EJB 3.1 Lite• Session bean programming model• Stateless, singleton programming model• Annotation based declarative security and

transactions• Deployment descriptors are optional

Page 19: Java EE 與 雲端運算的展望

EJB 3.1 New First Class Construct

@Singleton @Startuppublic class StartupBean { @PostConstruct public void doAtStartup() { … }}

@Stateless public class BackupBean { @Schedule(dayOfWeek=”Fri”, hour=”3”, minute=”15”) public void performBackup() { … }}

@Stateless public class BatchProcessor { @Asynchronous public Future<Result> submit(Task t){ … }}

Page 20: Java EE 與 雲端運算的展望

Dependency Injection • Powerful type-safe model• Can be enabled per-module• Integrated with JSF, JSP, EJB, web tier• Friendly to pre-Java EE 6 resources and services• Event model• Highly extensible

Page 21: Java EE 與 雲端運算的展望

Bean with Constructor Injection

@RequestScopedpublic class CheckoutHandler { @Inject public CheckoutHandler( @LoggedIn User user, @Reliable @PayBy(CREDIT_CARD) PaymentProcessor processor, @Default ShoppingCart cart) {…}

Page 22: Java EE 與 雲端運算的展望

Bean with Constructor Injection

@RequestScopedpublic class CheckoutHandler { @Inject public CheckoutHandler( @LoggedIn User user, @Reliable @PayBy(CREDIT_CARD) PaymentProcessor processor, @Default ShoppingCart cart) {…}

Types

Page 23: Java EE 與 雲端運算的展望

Bean with Constructor Injection

@RequestScopedpublic class CheckoutHandler { @Inject public CheckoutHandler( @LoggedIn User user, @Reliable @PayBy(CREDIT_CARD) PaymentProcessor processor, @Default ShoppingCart cart) {…}

Qualifiers

Page 24: Java EE 與 雲端運算的展望

Bean with Constructor Injection

@RequestScopedpublic class CheckoutHandler { @Inject public CheckoutHandler( @LoggedIn User user, @Reliable @PayBy(CREDIT_CARD) PaymentProcessor processor, @Default ShoppingCart cart) {…}

Request scoped

Page 25: Java EE 與 雲端運算的展望

Bean with Constructor Injection

@RequestScopedpublic class CheckoutHandler { @Inject public CheckoutHandler( @LoggedIn User user, @Reliable @PayBy(CREDIT_CARD) PaymentProcessor processor, @Default ShoppingCart cart) {…}

Session scoped

Page 26: Java EE 與 雲端運算的展望

Bean with Constructor Injection

@RequestScopedpublic class CheckoutHandler { @Inject public CheckoutHandler( @LoggedIn User user, @Reliable @PayBy(CREDIT_CARD) PaymentProcessor processor, @Default ShoppingCart cart) {…}

Application scoped

Page 27: Java EE 與 雲端運算的展望

Bean with Constructor Injection

@RequestScopedpublic class CheckoutHandler { @Inject public CheckoutHandler( @LoggedIn User user, @Reliable @PayBy(CREDIT_CARD) PaymentProcessor processor, @Default ShoppingCart cart) {…}

Conversation scoped

Page 28: Java EE 與 雲端運算的展望

Java EE 7Java EE 7Cloudy AheadCloudy Ahead

Page 29: Java EE 與 雲端運算的展望

Layers of Cloud

Software as a Service (SaaS)

Platform as a Service (PaaS)

Infrastructure as a Service (IaaS)

Page 30: Java EE 與 雲端運算的展望

Java EE and the Cloud• Containers are back in vogue!• We have containers• We have services... injectable services...• We scale to large clusters...• We have a security model...

Page 31: Java EE 與 雲端運算的展望

JSR 342 – Java EE for the Cloud• More easily operate on public/private cloud

– Multi tenancy, elasticiy

• Tighter requirements for resource and state management

• Better isolation between applications• Potential standard APIs for NRDBMS, caching, etc.• Common management and monitoring interfaces• Evolving the platform

Page 32: Java EE 與 雲端運算的展望

Better Packaging for the Cloud• Applications should be versioned• Multiple versions should be able to coexists• Dealing with data versioning, upgrades, etc.• Need the ability to specify QoS properties• Exposed and connected to services

Page 33: Java EE 與 雲端運算的展望

Cloud Platform

Application

Virtualization Layer

State Management

JavaService

PersistenceService

QueueingService ...

Page 34: Java EE 與 雲端運算的展望

Cloud Platform

Application

Virtualization Layer

State Management

JavaService

PersistenceService

QueueingService ...

CodeModule

CodeModule Schema Migration QoS

InformationSecurityCodeModule …

Page 35: Java EE 與 雲端運算的展望

Cloud Platform

Virtualization Layer

State Management

JavaService

PersistenceService

QueueingService ...

Application Application Application Application Application

Page 36: Java EE 與 雲端運算的展望

Cloud Platform

Virtualization Layer

State Management

JavaService

PersistenceService

QueueingService ...

Application Application Application Application Application

Managed Environment

Page 37: Java EE 與 雲端運算的展望

Modularity• Build on JavaSE 8 modularity• Applications are composed of modules• Dependencies are explicit• Versioning is built-in• Additional metadata for JavaEE

Page 38: Java EE 與 雲端運算的展望

JavaSE 8 Modulescom.foo.app

org.bar.lib

com.foo.lib

edu.baz.util

com.foo.extramodule com.foo @ 1.0.0 {class com.foo.app.Mainrequires com.foo.lib @ 2.1-alpha;provides com.foo.app.lib @ 1.0.0;requires optional com.foo.extra;

}

module-info.java

Page 39: Java EE 與 雲端運算的展望

Packaging and Install

$ javac -modulepath mods src/com.foo.app/...

$ jpkg -modulepath mods jmod \com.foo.app com.foo.extra com.foo.lib

$ jmod -L mlib install \ $EXT/edu.baz.util@*.jmod \ $EXT/org.bar.lib@*.jmod

• Compiling Java classes with modules

• Packaging classes into modules

• Installing modules into library

Page 40: Java EE 與 雲端運算的展望

Modular Applicationsj1demo.app

j1demo-1.0.3

Page 41: Java EE 與 雲端運算的展望

Modular Applicationsj1demo.app

j1demo-1.0.3twitter-client-2.3.0

j1demo-persist-1.4.0requires

Page 42: Java EE 與 雲端運算的展望

Modular Applicationsj1demo.app

j1demo-1.0.3twitter-client-2.3.0

j1demo-persist-1.4.0

javaee-web-7.0 jpa-2.1 jax-rs-2.0

Page 43: Java EE 與 雲端運算的展望

Modular Applicationsj1demo.app

j1demo-1.0.3twitter-client-2.3.0

j1demo-persist-1.4.0

javaee-web-7.0 jpa-2.1 jax-rs-2.0

implements

...

gf-appserv-4.01.

Page 44: Java EE 與 雲端運算的展望

Modular Applicationsj1demo.app

j1demo-1.0.3twitter-client-2.3.0

j1demo-persist-1.4.0

javaee-web-7.0 jpa-2.1 jax-rs-2.0

implements

...

gf-appserv-4.01. eclipselink-2.1.3

jersey-2.0.5

Page 45: Java EE 與 雲端運算的展望

Modular Applicationsj1demo.app

j1demo-1.0.3twitter-client-2.3.0

j1demo-persist-1.4.0

javaee-web-7.0 jpa-2.1

...

gf-appserv-4.01. eclipselink-2.1.3

jax-rs-2.1

jersey-2.1.1

Page 46: Java EE 與 雲端運算的展望

Modular Applicationsj1demo.app

j1demo-1.0.3twitter-client-2.3.0

j1demo-persist-1.4.0

javaee-web-7.0 jpa-2.1

...

gf-appserv-4.01. eclipselink-2.1.3

jax-rs-2.1

jersey-2.1.1

jax-rs-2.1

jersey-2.1.1

Page 47: Java EE 與 雲端運算的展望

<Insert Picture Here>

Status

Page 48: Java EE 與 雲端運算的展望

Web Tier • Web socket support in Servlet container• Standard JSON API• HTML5 support in JSF• NIO2 based web container• Updates to Web Profile• JAX-RS 2.0 will be mandatory

Page 49: Java EE 與 雲端運算的展望

New API • Concurrency Utilities – JSR 236

– Eg. transaction-, security- naming- aware ExecutorService

• JCache – JSR 107– Local cache API, key-value map– Needs to be aligned with JPA cache API

• JMS 2.0– Annotation based programming model to JMS

• JSON 1.0• RESTful client API for JAX-RS 2.0

Page 50: Java EE 與 雲端運算的展望

Java EE 7 JSRs StatusApproved

• JPA 2.1• JAX-RS 2.0• Servlet 3.1• EL 3.0• Platform 7/Web Profile 7• JMS 2.0• JSF 2.2

Ongoing• Concurrency Utilities 1.0• JCache 1.0

Yet to be filed• EJB 3.2• CDI 1.1• JSR-330 1.1• Bean Validation 1.1• JSON 1.0

Page 51: Java EE 與 雲端運算的展望

Java EE 7 Schedule• First seven JSRs already filed• Remaining ones to be filed soon...

– Stay tuned

• Final release late 2012• Date driven release

– Anything not ready will be deferred to Java EE 8

Page 52: Java EE 與 雲端運算的展望

JavaEE 6 on the Cloud Today

Page 53: Java EE 與 雲端運算的展望

JRockit Virtualized Edition• Oracle JRockit VE runs

natively on hypervisor– Better performance– Improved security

• Deterministic GC behaviour– “Soft” real-time

• Simple administration– Console and scripting

Page 54: Java EE 與 雲端運算的展望

Java EE 6 Platform

Available fromhttp://www.oracle.com/javaee

Page 55: Java EE 與 雲端運算的展望

Java EE 7Reaching for the CloudLee Chuk [email protected]