Download - Java EE 與 雲端運算的展望
Java EE 7Reaching for the CloudLee Chuk [email protected]
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.
Java EE 6 PlatformDecember 10, 2009
Great Tooling Support
Industry Wide Support
<Insert Picture Here>
Java EE 6
What is New in Java EE 6?• Several new APIs• Web profile• Pluggability/extensibility• Dependency injection• Lots of improvements to existing API
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
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
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
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
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
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
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
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
Java EE 6 Programming Model• Complementary declarative/programmatic layer• Annotations are additive• Code can evolve gradually• Managed beans as a common foundation
EJB 3.1 Lite• Session bean programming model• Stateless, singleton programming model• Annotation based declarative security and
transactions• Deployment descriptors are optional
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){ … }}
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
Bean with Constructor Injection
@RequestScopedpublic class CheckoutHandler { @Inject public CheckoutHandler( @LoggedIn User user, @Reliable @PayBy(CREDIT_CARD) PaymentProcessor processor, @Default ShoppingCart cart) {…}
Bean with Constructor Injection
@RequestScopedpublic class CheckoutHandler { @Inject public CheckoutHandler( @LoggedIn User user, @Reliable @PayBy(CREDIT_CARD) PaymentProcessor processor, @Default ShoppingCart cart) {…}
Types
Bean with Constructor Injection
@RequestScopedpublic class CheckoutHandler { @Inject public CheckoutHandler( @LoggedIn User user, @Reliable @PayBy(CREDIT_CARD) PaymentProcessor processor, @Default ShoppingCart cart) {…}
Qualifiers
Bean with Constructor Injection
@RequestScopedpublic class CheckoutHandler { @Inject public CheckoutHandler( @LoggedIn User user, @Reliable @PayBy(CREDIT_CARD) PaymentProcessor processor, @Default ShoppingCart cart) {…}
Request scoped
Bean with Constructor Injection
@RequestScopedpublic class CheckoutHandler { @Inject public CheckoutHandler( @LoggedIn User user, @Reliable @PayBy(CREDIT_CARD) PaymentProcessor processor, @Default ShoppingCart cart) {…}
Session scoped
Bean with Constructor Injection
@RequestScopedpublic class CheckoutHandler { @Inject public CheckoutHandler( @LoggedIn User user, @Reliable @PayBy(CREDIT_CARD) PaymentProcessor processor, @Default ShoppingCart cart) {…}
Application scoped
Bean with Constructor Injection
@RequestScopedpublic class CheckoutHandler { @Inject public CheckoutHandler( @LoggedIn User user, @Reliable @PayBy(CREDIT_CARD) PaymentProcessor processor, @Default ShoppingCart cart) {…}
Conversation scoped
Java EE 7Java EE 7Cloudy AheadCloudy Ahead
Layers of Cloud
Software as a Service (SaaS)
Platform as a Service (PaaS)
Infrastructure as a Service (IaaS)
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...
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
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
Cloud Platform
Application
Virtualization Layer
State Management
JavaService
PersistenceService
QueueingService ...
Cloud Platform
Application
Virtualization Layer
State Management
JavaService
PersistenceService
QueueingService ...
CodeModule
CodeModule Schema Migration QoS
InformationSecurityCodeModule …
Cloud Platform
Virtualization Layer
State Management
JavaService
PersistenceService
QueueingService ...
Application Application Application Application Application
Cloud Platform
Virtualization Layer
State Management
JavaService
PersistenceService
QueueingService ...
Application Application Application Application Application
Managed Environment
Modularity• Build on JavaSE 8 modularity• Applications are composed of modules• Dependencies are explicit• Versioning is built-in• Additional metadata for JavaEE
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
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
Modular Applicationsj1demo.app
j1demo-1.0.3
Modular Applicationsj1demo.app
j1demo-1.0.3twitter-client-2.3.0
j1demo-persist-1.4.0requires
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
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.
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
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
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
<Insert Picture Here>
Status
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
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
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
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
JavaEE 6 on the Cloud Today
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
Java EE 6 Platform
Available fromhttp://www.oracle.com/javaee
Java EE 7Reaching for the CloudLee Chuk [email protected]