37
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Public 1 JavaEE.Next(): Java EE 7, 8, and Beyond Reza Rahman Java EE/GlassFish Evangelist [email protected] @reza_rahman jdt2014_B2

JavaEE.Next(): Java EE 7, 8, and Beyond - Oracleotndnld.oracle.co.jp/ondemand/javaday2014/pdf/B2-Jav… ·  · 2014-06-12Java EE/GlassFish Evangelist [email protected] ... Java

Embed Size (px)

Citation preview

Page 1: JavaEE.Next(): Java EE 7, 8, and Beyond - Oracleotndnld.oracle.co.jp/ondemand/javaday2014/pdf/B2-Jav… ·  · 2014-06-12Java EE/GlassFish Evangelist Reza.Rahman@Oracle.com ... Java

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Public 1

JavaEE.Next(): Java EE 7, 8, and Beyond

Reza Rahman

Java EE/GlassFish Evangelist

[email protected]

@reza_rahman

♯jdt2014_B2

Page 2: JavaEE.Next(): Java EE 7, 8, and Beyond - Oracleotndnld.oracle.co.jp/ondemand/javaday2014/pdf/B2-Jav… ·  · 2014-06-12Java EE/GlassFish Evangelist Reza.Rahman@Oracle.com ... Java

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Public 2 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Public

Agenda Overview

A Taste of API Changes

Looking Ahead

Page 3: JavaEE.Next(): Java EE 7, 8, and Beyond - Oracleotndnld.oracle.co.jp/ondemand/javaday2014/pdf/B2-Jav… ·  · 2014-06-12Java EE/GlassFish Evangelist Reza.Rahman@Oracle.com ... Java

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Public 3

The 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 4: JavaEE.Next(): Java EE 7, 8, and Beyond - Oracleotndnld.oracle.co.jp/ondemand/javaday2014/pdf/B2-Jav… ·  · 2014-06-12Java EE/GlassFish Evangelist Reza.Rahman@Oracle.com ... Java

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Public 4

Java EE Past, Present, & Future

J2EE 1.3

CMP,

Connector

Architecture

J2EE 1.4

Web

Services

Mgmt,

Deployment,

Async

Connector

Java EE 5

Ease of

Development,

EJB 3, JPA,

JSF, JAXB,

JAX-WS,

StAX, SAAJ

Java EE 6

Pruning,

Extensibility

Ease of Dev,

JAX-RS

CDI

Validation

Web Profile

Servlet 3,

EJB 3.1 Lite

Java EE 7 JMS 2,

Batch, TX,

Concurrency,

Interceptor

WebSocket JSON

Web Profile JAX-RS 2

JAX-RPC,

CMP/ BMP,

JSR 88

J2EE 1.2

Servlet, JSP,

EJB, JMS,

RMI

Page 5: JavaEE.Next(): Java EE 7, 8, and Beyond - Oracleotndnld.oracle.co.jp/ondemand/javaday2014/pdf/B2-Jav… ·  · 2014-06-12Java EE/GlassFish Evangelist Reza.Rahman@Oracle.com ... Java

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Public 5

Java EE 7

Connector

1.7

Managed Beans 1.0 EJB 3.2

Servlet 3.1

Portable

Extension

s

JSF 2.2 JAX-RS

2.0

Bean

Valid

ati

on

1.1

JMS 2.0 JPA 2.1

EL 3.0

JTA 1.2

JSP 2.3

Interceptors 1.2 CDI 1.1

Common

Annotations

1.2

Updated Major

Release

New

Concurrency Utilities

(JSR 236)

Batch Applications

(JSR 352)

Java API for JSON

(JSR 353)

Java API for WebSocket

(JSR 356)

Page 6: JavaEE.Next(): Java EE 7, 8, and Beyond - Oracleotndnld.oracle.co.jp/ondemand/javaday2014/pdf/B2-Jav… ·  · 2014-06-12Java EE/GlassFish Evangelist Reza.Rahman@Oracle.com ... Java

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Public 6

JMS 2

API modernization using dependency injection

Delivery delay, async send, MDB alignment, JMS resource definition

Fixes, clarifications

Page 7: JavaEE.Next(): Java EE 7, 8, and Beyond - Oracleotndnld.oracle.co.jp/ondemand/javaday2014/pdf/B2-Jav… ·  · 2014-06-12Java EE/GlassFish Evangelist Reza.Rahman@Oracle.com ... Java

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Public 7

JMS 2 Old API

@Resource(lookup = "java:global/jms/demoConnectionFactory")

ConnectionFactory connectionFactory;

@Resource(lookup = "java:global/jms/demoQueue")

Queue demoQueue;

public void sendMessage(String payload) {

try {

Connection connection = connectionFactory.createConnection();

try {

Session session = connection.createSession(false,

Session.AUTO_ACKNOWLEDGE);

MessageProducer messageProducer =

session.createProducer(demoQueue);

TextMessage textMessage = session.createTextMessage(payload);

messageProducer.send(textMessage);

} finally {

connection.close();

}

} catch (JMSException ex) {

Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex);

}

}

Page 8: JavaEE.Next(): Java EE 7, 8, and Beyond - Oracleotndnld.oracle.co.jp/ondemand/javaday2014/pdf/B2-Jav… ·  · 2014-06-12Java EE/GlassFish Evangelist Reza.Rahman@Oracle.com ... Java

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Public 8

JMS 2 Simplified API

@Inject

private JMSContext context;

@Resource(mappedName = "jms/inboundQueue")

private Queue inboundQueue;

public void sendMessage (String payload) {

context.createProducer().send(inboundQueue, payload);

}

Page 9: JavaEE.Next(): Java EE 7, 8, and Beyond - Oracleotndnld.oracle.co.jp/ondemand/javaday2014/pdf/B2-Jav… ·  · 2014-06-12Java EE/GlassFish Evangelist Reza.Rahman@Oracle.com ... Java

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Public 9

JMS 2/Java EE 7 JMS Resource Definition

@JMSConnectionFactoryDefinition(

name="java:global/jms/demoConnectionFactory",

interfaceName= "javax.jms.ConnectionFactory",

description="ConnectionFactory to use in demonstration")

@JMSDestinationDefinition(

name = "java:global/jms/demoQueue",

description = "Queue to use in demonstration",

interfaceName = "javax.jms.Queue",

destinationName="demoQueue")

Page 10: JavaEE.Next(): Java EE 7, 8, and Beyond - Oracleotndnld.oracle.co.jp/ondemand/javaday2014/pdf/B2-Jav… ·  · 2014-06-12Java EE/GlassFish Evangelist Reza.Rahman@Oracle.com ... Java

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Public 10

Java API for WebSocket

Higher level API for WebSocket

Both client and server-side (Java SE and Java EE)

Both declarative and programmatic

Page 11: JavaEE.Next(): Java EE 7, 8, and Beyond - Oracleotndnld.oracle.co.jp/ondemand/javaday2014/pdf/B2-Jav… ·  · 2014-06-12Java EE/GlassFish Evangelist Reza.Rahman@Oracle.com ... Java

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Public 11

Java API for WebSocket Connection Life Cycle

@ServerEndpoint(”/chat”)

public class ChatServer {

Set<Session> peers = ...

@OnOpen

public void onOpen(Session peer) {

peers.add(peer);

}

@OnClose

public void onClose(Session peer) {

peers.remove(peer);

}

...

Page 12: JavaEE.Next(): Java EE 7, 8, and Beyond - Oracleotndnld.oracle.co.jp/ondemand/javaday2014/pdf/B2-Jav… ·  · 2014-06-12Java EE/GlassFish Evangelist Reza.Rahman@Oracle.com ... Java

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Public 12

Java API for WebSocket WebSocket Communication

...

@OnMessage

public void message(String message, Session client)

throws IOException {

for (Session session : peers) {

if (!session.equals(client)) {

session.getRemote().sendObject(message);

}

}

}

}

Page 13: JavaEE.Next(): Java EE 7, 8, and Beyond - Oracleotndnld.oracle.co.jp/ondemand/javaday2014/pdf/B2-Jav… ·  · 2014-06-12Java EE/GlassFish Evangelist Reza.Rahman@Oracle.com ... Java

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Public 13

Java API for JSON Processing

API to parse, generate, transform, query JSON

Object Model and Streaming API -- similar to DOM and StAX

Binding JSON to Java objects forthcoming

Page 14: JavaEE.Next(): Java EE 7, 8, and Beyond - Oracleotndnld.oracle.co.jp/ondemand/javaday2014/pdf/B2-Jav… ·  · 2014-06-12Java EE/GlassFish Evangelist Reza.Rahman@Oracle.com ... Java

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Public 14

Java API for JSON Processing Writing JSON (Object Model API)

[

{

"type": "home”,

"number": "212 555-1234"

},

{

"type": "fax”,

"number": "646 555-4567"

}

]

JsonArray value =

Json.createArrayBuilder()

.add(Json.createObjectBuilder()

.add("type", "home")

.add("number", "212 555-1234")

)

.add(Json.createObjectBuilder()

.add("type", "fax")

.add("number", "646 555-4567")

)

.build();

Page 15: JavaEE.Next(): Java EE 7, 8, and Beyond - Oracleotndnld.oracle.co.jp/ondemand/javaday2014/pdf/B2-Jav… ·  · 2014-06-12Java EE/GlassFish Evangelist Reza.Rahman@Oracle.com ... Java

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Public 15

Java API for JSON Processing Reading JSON (Streaming API)

{

"firstName": "John", "lastName": "Smith", "age": 25,

"phoneNumber": [

{ "type": "home", "number": "212 555-1234" },

{ "type": "fax", "number": "646 555-4567" }

]

}

Event event = parser.next(); // START_OBJECT

event = parser.next(); // KEY_NAME

event = parser.next(); // VALUE_STRING

String name = parser.getString(); // "John”

Page 16: JavaEE.Next(): Java EE 7, 8, and Beyond - Oracleotndnld.oracle.co.jp/ondemand/javaday2014/pdf/B2-Jav… ·  · 2014-06-12Java EE/GlassFish Evangelist Reza.Rahman@Oracle.com ... Java

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Public 16

JAX-RS 2

Client API

Message Filters & Entity Interceptors

Asynchronous Processing – Server & Client

Hypermedia Support

Content negotiation

Page 17: JavaEE.Next(): Java EE 7, 8, and Beyond - Oracleotndnld.oracle.co.jp/ondemand/javaday2014/pdf/B2-Jav… ·  · 2014-06-12Java EE/GlassFish Evangelist Reza.Rahman@Oracle.com ... Java

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Public 17

JAX-RS 2 Client API

// Get instance of Client

Client client = ClientBuilder.newClient();

// Get customer name for the shipped products

String name = client.target(“../orders/{orderId}/customer”)

.pathParam(”orderId", ”10”)

.queryParam(”shipped", ”true”)

.request()

.get(String.class);

Page 18: JavaEE.Next(): Java EE 7, 8, and Beyond - Oracleotndnld.oracle.co.jp/ondemand/javaday2014/pdf/B2-Jav… ·  · 2014-06-12Java EE/GlassFish Evangelist Reza.Rahman@Oracle.com ... Java

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Public 18

JPA 2.1

Schema generation

Stored procedures

Entity Graphs

Entity converters

Unsynchronized persistence contexts

Fixes and enhancements

Page 19: JavaEE.Next(): Java EE 7, 8, and Beyond - Oracleotndnld.oracle.co.jp/ondemand/javaday2014/pdf/B2-Jav… ·  · 2014-06-12Java EE/GlassFish Evangelist Reza.Rahman@Oracle.com ... Java

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Public 19

JPA 2.1

javax.persistence.schema-

generation.[database|scripts].action

– “none”, “create”, “drop-and-create”, “drop”

javax.persistence.schema-

generation.scripts.[create|drop]-target

javax.persistence.schema-generation.[create|drop]-

script-source

javax.persistence.sql-load-script-source

javax.persistence.schema-generation.[create|drop]-

source

– “metadata”, “script”, “metadata-then-script”, “script-then-metadata”

Schema Generation Properties

Page 20: JavaEE.Next(): Java EE 7, 8, and Beyond - Oracleotndnld.oracle.co.jp/ondemand/javaday2014/pdf/B2-Jav… ·  · 2014-06-12Java EE/GlassFish Evangelist Reza.Rahman@Oracle.com ... Java

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Public 20

JPA 2.1 Stored Procedures

@Entity

@NamedStoredProcedureQuery(name="topGiftsStoredProcedure”,

procedureName="Top10Gifts")

public class Product {

StoredProcedreQuery query = EntityManager.createNamedStoredProcedureQuery(

"topGiftsStoredProcedure");

query.registerStoredProcedureParameter(1, String.class,

ParameterMode.INOUT);

query.setParameter(1, "top10");

query.registerStoredProcedureParameter(2, Integer.class, ParameterMode.IN);

query.setParameter(2, 100);

. . .

query.execute();

String response = query.getOutputParameterValue(1);

Page 21: JavaEE.Next(): Java EE 7, 8, and Beyond - Oracleotndnld.oracle.co.jp/ondemand/javaday2014/pdf/B2-Jav… ·  · 2014-06-12Java EE/GlassFish Evangelist Reza.Rahman@Oracle.com ... Java

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Public 21

JTA 1.2

Declarative transactions outside EJB

Transaction scope - @TransactionScoped

Page 22: JavaEE.Next(): Java EE 7, 8, and Beyond - Oracleotndnld.oracle.co.jp/ondemand/javaday2014/pdf/B2-Jav… ·  · 2014-06-12Java EE/GlassFish Evangelist Reza.Rahman@Oracle.com ... Java

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Public 22

JTA 1.2 @Transactional Annotation

@Inherited

@InterceptorBinding

@Target({TYPE, METHOD}) @Retention(RUNTIME)

public @interface Transactional {

TxType value() default TxType.REQUIRED;

Class[] rollbackOn() default {};

Class[] dontRollbackOn() default {};

}

@Transactional(rollbackOn={SQLException.class},

dontRollbackOn={SQLWarning.class})

public class UserService {...}

Page 23: JavaEE.Next(): Java EE 7, 8, and Beyond - Oracleotndnld.oracle.co.jp/ondemand/javaday2014/pdf/B2-Jav… ·  · 2014-06-12Java EE/GlassFish Evangelist Reza.Rahman@Oracle.com ... Java

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Public 23

JSF 2.2

HTML5 Support

@FlowScoped

@ViewScoped for CDI

Managed beans deprecated/CDI alignment

Stateless views

Resource library contracts

File upload component

View actions

Fixes and enhancements

Page 24: JavaEE.Next(): Java EE 7, 8, and Beyond - Oracleotndnld.oracle.co.jp/ondemand/javaday2014/pdf/B2-Jav… ·  · 2014-06-12Java EE/GlassFish Evangelist Reza.Rahman@Oracle.com ... Java

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Public 24

JSF 2.2 Pass-Through HTML 5 Components

<html>

...

<input type=“color” jsf:value=“#{colorBean.color2}” />

<input type=“date” jsf:value=“#{calendarBean.date1}” />

...

</html>

Page 25: JavaEE.Next(): Java EE 7, 8, and Beyond - Oracleotndnld.oracle.co.jp/ondemand/javaday2014/pdf/B2-Jav… ·  · 2014-06-12Java EE/GlassFish Evangelist Reza.Rahman@Oracle.com ... Java

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Public 25

JSF 2.2 Faces Flow

@Named

@FlowScoped(id="flow-a")

public class FlowABean implements Serializable {

public String getName() {

return "FlowABean";

}

public String getReturnValue() {

return "/return1";

}

@Produces

public Flow getFlow(FlowBuilder builder) {

builder.startNode("router1");

builder.flowReturn("success").fromOutcome("/complete");

builder.flowReturn("errorOccurred").fromOutcome("error");

builder.switchNode("router1")

.navigationCase().condition("#{facesFlowScope.customerId == null}")

.fromOutcome("create-customer")

.defaultOutcome("view-customer");

builder.viewNode("create-customer");

builder.viewNode("maintain-customer-record");

builder.methodCall("upgrade-customer")

.method("#{maintainCustomerBean.upgradeCustomer}").defaultOutcome("view-customer");

builder.initializer("#{maintainCustomerBean.initializeFlow}");

builder.finalizer("#{maintainCustomerBean.cleanUpFlow}");

return builder.getFlow();

}

}

Page 26: JavaEE.Next(): Java EE 7, 8, and Beyond - Oracleotndnld.oracle.co.jp/ondemand/javaday2014/pdf/B2-Jav… ·  · 2014-06-12Java EE/GlassFish Evangelist Reza.Rahman@Oracle.com ... Java

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Public 26

Batch Applications for the Java Platform

API for robust batch processing targeted to Java EE, Java SE

Page 27: JavaEE.Next(): Java EE 7, 8, and Beyond - Oracleotndnld.oracle.co.jp/ondemand/javaday2014/pdf/B2-Jav… ·  · 2014-06-12Java EE/GlassFish Evangelist Reza.Rahman@Oracle.com ... Java

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Public 27

Batch Applications for the Java Platform Step Example

<step id=”sendStatements”>

<chunk reader=”accountReader”

processor=”accountProcessor”

writer=”emailWriter”

item-count=”10” />

</step>

@Named(“accountReader")

...implements ItemReader... {

public Account readItem() {

// read account using JPA

@Named(“accountProcessor")

...implements ItemProcessor... {

Public Statement processItems(Account account) {

// read Account, return Statement

@Named(“emailWriter")

...implements ItemWriter... {

public void writeItems(List<Statements> statements) {

// use JavaMail to send email

Page 28: JavaEE.Next(): Java EE 7, 8, and Beyond - Oracleotndnld.oracle.co.jp/ondemand/javaday2014/pdf/B2-Jav… ·  · 2014-06-12Java EE/GlassFish Evangelist Reza.Rahman@Oracle.com ... Java

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Public 28

Bean Validation 1.1

Method constraints

Bean Validation artifacts injectable

Fixes, clarifications and enhancements

Page 29: JavaEE.Next(): Java EE 7, 8, and Beyond - Oracleotndnld.oracle.co.jp/ondemand/javaday2014/pdf/B2-Jav… ·  · 2014-06-12Java EE/GlassFish Evangelist Reza.Rahman@Oracle.com ... Java

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Public 29

Bean Validation 1.1 Method Level Constraints

public void placeOrder(

@NotNull String productName,

@NotNull @Max(“10”) Integer quantity,

@Customer String customer) {

. . .

}

@Future

public Date getAppointment() {

. . .

}

Page 30: JavaEE.Next(): Java EE 7, 8, and Beyond - Oracleotndnld.oracle.co.jp/ondemand/javaday2014/pdf/B2-Jav… ·  · 2014-06-12Java EE/GlassFish Evangelist Reza.Rahman@Oracle.com ... Java

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Public 30

Concurrency Utilities for Java EE

Provides simple, safe API for concurrency in Java EE

Builds on Java SE concurrency

– java.util.concurrent.ExecutorService

Relatively low-level API

Important enabler for Java EE ecosystem

Page 31: JavaEE.Next(): Java EE 7, 8, and Beyond - Oracleotndnld.oracle.co.jp/ondemand/javaday2014/pdf/B2-Jav… ·  · 2014-06-12Java EE/GlassFish Evangelist Reza.Rahman@Oracle.com ... Java

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Public 31

Concurrency Utilities for Java EE Managed Task Executor

public class TestServlet extends HTTPServlet {

@Resource(name=“concurrent/MyExecutorService”)

ManagedExecutorService executor;

Future future = executor.submit(new MyTask());

class MyTask implements Runnable {

public void run() {

... // Task logic

}

}

}

Page 32: JavaEE.Next(): Java EE 7, 8, and Beyond - Oracleotndnld.oracle.co.jp/ondemand/javaday2014/pdf/B2-Jav… ·  · 2014-06-12Java EE/GlassFish Evangelist Reza.Rahman@Oracle.com ... Java

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Public 32

Others

Servlet 3.1: Non-blocking I/O, upgrade to WebSocket, security…

CDI 1.1: Global enablement, @AroundConstruct, @Vetoed…

EL 3.0: Lambda expressions, collections, operators, standalone API…

EJB 3.2: Truncating CMP/BMP…

Page 33: JavaEE.Next(): Java EE 7, 8, and Beyond - Oracleotndnld.oracle.co.jp/ondemand/javaday2014/pdf/B2-Jav… ·  · 2014-06-12Java EE/GlassFish Evangelist Reza.Rahman@Oracle.com ... Java

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Public 33

Java EE 8 Community Survey

https://java.net/downloads/javaee-spec/JavaEE8_Community_Survey_Results.pdf

https://blogs.oracle.com/ldemichiel/entry/results_from_the_java_ee

Page 34: JavaEE.Next(): Java EE 7, 8, and Beyond - Oracleotndnld.oracle.co.jp/ondemand/javaday2014/pdf/B2-Jav… ·  · 2014-06-12Java EE/GlassFish Evangelist Reza.Rahman@Oracle.com ... Java

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Public 34

Java EE 8 Possibilities

HTTP 2

JSON-B

JCache

CDI 2

CDI/EJB alignment

Security

Action-oriented Web framework/HTML 5 alignment

Java SE 8 alignment

Cloud, PaaS, multitenancy/SaaS

Configuration, deployment, management, monitoring

Further pruning

Page 35: JavaEE.Next(): Java EE 7, 8, and Beyond - Oracleotndnld.oracle.co.jp/ondemand/javaday2014/pdf/B2-Jav… ·  · 2014-06-12Java EE/GlassFish Evangelist Reza.Rahman@Oracle.com ... Java

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Public 35

Try it Out!

http://dlc.sun.com.edgesuite.net/glassfish/

4.0.1/promoted/

Page 36: JavaEE.Next(): Java EE 7, 8, and Beyond - Oracleotndnld.oracle.co.jp/ondemand/javaday2014/pdf/B2-Jav… ·  · 2014-06-12Java EE/GlassFish Evangelist Reza.Rahman@Oracle.com ... Java

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Public 36

Resources

Java EE Tutorials

– http://docs.oracle.com/javaee/7/tutorial/doc/home.htm

Digging Deeper

– http://docs.oracle.com/javaee/7/firstcup/doc/home.htm

– https://glassfish.java.net/hol/

– https://java.net/projects/cargotracker/

Java EE 7 Transparent Expert Groups

– http://javaee-spec.java.net

Java EE 7 Reference Implementation

– http://glassfish.org

The Aquarium

– http://blogs.oracle.com/theaquarium

Page 37: JavaEE.Next(): Java EE 7, 8, and Beyond - Oracleotndnld.oracle.co.jp/ondemand/javaday2014/pdf/B2-Jav… ·  · 2014-06-12Java EE/GlassFish Evangelist Reza.Rahman@Oracle.com ... Java

Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Public 37