91
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. Java EE OSS<OSS X Users Meeting> #21 Java EE Akihiro Nishikawa Oracle Corporation Japan December 12, 2017 1

Java EE - SCSK株式会社 · Java EE 6 JAX-RS, CDI, Servlet 3.0, Web Profile, Pruning Java EE 7 JAX-RS 2.0, JSON-P, WebSocket, JMS 2.0, Batch J2EE 1.2 Servlet, JSP, EJB, JMS Java

  • Upload
    others

  • View
    13

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Java EE - SCSK株式会社 · Java EE 6 JAX-RS, CDI, Servlet 3.0, Web Profile, Pruning Java EE 7 JAX-RS 2.0, JSON-P, WebSocket, JMS 2.0, Batch J2EE 1.2 Servlet, JSP, EJB, JMS Java

Copyright © 2017, Oracle and/or its affiliates. All rights reserved.

Java EE ����OSS ��������<OSS X Users Meeting>#21 Java EE

Akihiro NishikawaOracle Corporation Japan

December 12, 2017

1

Page 2: Java EE - SCSK株式会社 · Java EE 6 JAX-RS, CDI, Servlet 3.0, Web Profile, Pruning Java EE 7 JAX-RS 2.0, JSON-P, WebSocket, JMS 2.0, Batch J2EE 1.2 Servlet, JSP, EJB, JMS Java

Copyright © 2017, Oracle and/or its affiliates. All rights reserved.

Safe Harbor StatementThe 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.

2

Page 3: Java EE - SCSK株式会社 · Java EE 6 JAX-RS, CDI, Servlet 3.0, Web Profile, Pruning Java EE 7 JAX-RS 2.0, JSON-P, WebSocket, JMS 2.0, Batch J2EE 1.2 Servlet, JSP, EJB, JMS Java

Copyright © 2017, Oracle and/or its affiliates. All rights reserved.

Program Agenda

3

Java Enterprise Edition (Java EE)

The Road to Java EE 8

Java EE 8 Contents : JSRs and MRs

Summary

1

2

3

4

Page 4: Java EE - SCSK株式会社 · Java EE 6 JAX-RS, CDI, Servlet 3.0, Web Profile, Pruning Java EE 7 JAX-RS 2.0, JSON-P, WebSocket, JMS 2.0, Batch J2EE 1.2 Servlet, JSP, EJB, JMS Java

Copyright © 2017, Oracle and/or its affiliates. All rights reserved.

Java Enterprise Edition (Java EE)

4

Page 5: Java EE - SCSK株式会社 · Java EE 6 JAX-RS, CDI, Servlet 3.0, Web Profile, Pruning Java EE 7 JAX-RS 2.0, JSON-P, WebSocket, JMS 2.0, Batch J2EE 1.2 Servlet, JSP, EJB, JMS Java

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

Java EE is a set of specifications

Page 6: Java EE - SCSK株式会社 · Java EE 6 JAX-RS, CDI, Servlet 3.0, Web Profile, Pruning Java EE 7 JAX-RS 2.0, JSON-P, WebSocket, JMS 2.0, Batch J2EE 1.2 Servlet, JSP, EJB, JMS Java

Copyright © 2017, Oracle and/or its affiliates. All rights reserved.

J2EE 1.3

CMP, JCA

J2EE 1.4

JAX-RPC Mgmt,

Deployment

Java EE 5

Annotations,EJB 3.0,

JPA,JSF,

JAXB,JAX-WS

Java EE 6

JAX-RS,CDI,

Servlet 3.0, Web Profile,

Pruning

Java EE 7

JAX-RS 2.0, JSON-P,

WebSocket,JMS 2.0, Batch

J2EE 1.2

Servlet, JSP, EJB, JMS

Java EE 8

Servlet 4.0,JAX-RS 2.1,

JSON-BJSON-P 1.1,

Security

6

Java EE Platform���

2001 2003 2006 2009 20131999 2017

Robustness

Web Services

Ease of Development

Lightweight

Productivity& HTML5

Enterprise Java

Modernization & Simplification

Page 7: Java EE - SCSK株式会社 · Java EE 6 JAX-RS, CDI, Servlet 3.0, Web Profile, Pruning Java EE 7 JAX-RS 2.0, JSON-P, WebSocket, JMS 2.0, Batch J2EE 1.2 Servlet, JSP, EJB, JMS Java

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

Java EE APIs - Backbone of Leading Open Source Projects

Java EE Containers

Microservices WebContainers

WebFrameworks

PaaSREST

Page 8: Java EE - SCSK株式会社 · Java EE 6 JAX-RS, CDI, Servlet 3.0, Web Profile, Pruning Java EE 7 JAX-RS 2.0, JSON-P, WebSocket, JMS 2.0, Batch J2EE 1.2 Servlet, JSP, EJB, JMS Java

Copyright © 2017, Oracle and/or its affiliates. All rights reserved.

2017 Java SE 9

2014 Java SE 8

2011 Java SE 7

2006 Java SE 6

2004 Java SE 5

2002 J2SE1.4

2000 J2SE1.3

1998 J2SE1.2

1997 JDK1.1

8

������� �����������

���

2017 Java EE 8

2013 Java EE 7

2009 Java EE 6

2006 Java EE 5

2002 J2EE1.4

2001 J2EE1.3

1999 J2EE1.2

Page 9: Java EE - SCSK株式会社 · Java EE 6 JAX-RS, CDI, Servlet 3.0, Web Profile, Pruning Java EE 7 JAX-RS 2.0, JSON-P, WebSocket, JMS 2.0, Batch J2EE 1.2 Servlet, JSP, EJB, JMS Java

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

��� ,!��*DF;?9="�

• Java��,��*�

•��Java VM,��•�� Java EE Application Server,��GReference ImplementationH

���,��#��%Java>F7,67:A.

��2��

���,IT>E8F%��+�'&��"�

���,CF5F%67:A��+�

4@B<:3+/1 �$0��� -)�("

Page 10: Java EE - SCSK株式会社 · Java EE 6 JAX-RS, CDI, Servlet 3.0, Web Profile, Pruning Java EE 7 JAX-RS 2.0, JSON-P, WebSocket, JMS 2.0, Batch J2EE 1.2 Servlet, JSP, EJB, JMS Java

Copyright © 2017, Oracle and/or its affiliates. All rights reserved.

The Road to Java EE 8

10

Page 11: Java EE - SCSK株式会社 · Java EE 6 JAX-RS, CDI, Servlet 3.0, Web Profile, Pruning Java EE 7 JAX-RS 2.0, JSON-P, WebSocket, JMS 2.0, Batch J2EE 1.2 Servlet, JSP, EJB, JMS Java

Copyright © 2017, Oracle and/or its affiliates. All rights reserved.

J2EE 1.3

CMP, JCA

J2EE 1.4

JAX-RPC Mgmt,

Deployment

Java EE 5

Annotations,EJB 3.0,

JPA,JSF,

JAXB,JAX-WS

Java EE 6

JAX-RS,CDI,

Servlet 3.0, Web Profile,

Pruning

Java EE 7

JAX-RS 2.0, JSON-P,

WebSocket,JMS 2.0, Batch

J2EE 1.2

Servlet, JSP, EJB, JMS

Java EE 8

Servlet 4.0,JAX-RS 2.1,

JSON-BJSON-P 1.1,

Security

11

Java EE 8

2001 2003 2006 2009 20131999 2017

Robustness

Web Services

Ease of Development

Lightweight

Productivity& HTML5

Enterprise Java

Modernization & Simplification

Page 12: Java EE - SCSK株式会社 · Java EE 6 JAX-RS, CDI, Servlet 3.0, Web Profile, Pruning Java EE 7 JAX-RS 2.0, JSON-P, WebSocket, JMS 2.0, Batch J2EE 1.2 Servlet, JSP, EJB, JMS Java

Copyright © 2017, Oracle and/or its affiliates. All rights reserved.

Java EE 8• 2014: �����

...• 2016:���

...

• 2017.9.21 : Java EE 8�� �

12

Page 13: Java EE - SCSK株式会社 · Java EE 6 JAX-RS, CDI, Servlet 3.0, Web Profile, Pruning Java EE 7 JAX-RS 2.0, JSON-P, WebSocket, JMS 2.0, Batch J2EE 1.2 Servlet, JSP, EJB, JMS Java

Copyright © 2017, Oracle and/or its affiliates. All rights reserved.

Java EE 8

• Java EE 8 Platform and Web Profile• Contexts and Dependency Injection

2.0 (CDI)• Java API for JSON Binding 1.0 (JSON-

B)• Java Message Service 2.1 (JMS)• Java Servlet 4.0• Java API for RESTful Web Services

2.1 (JAX-RS)

• Model-View-Controller 1.0 (MVC)• JavaServer Faces 2.3 (JSF)• Java EE Management API 2.0• Java API for JSON Processing 1.1

(JSON-P)• Java EE Security API 1.0• Bean Validation 2.0

13

2014��������JSR

Page 14: Java EE - SCSK株式会社 · Java EE 6 JAX-RS, CDI, Servlet 3.0, Web Profile, Pruning Java EE 7 JAX-RS 2.0, JSON-P, WebSocket, JMS 2.0, Batch J2EE 1.2 Servlet, JSP, EJB, JMS Java

Copyright © 2017, Oracle and/or its affiliates. All rights reserved.

Java EE Community Survey

• (*:5=A8C2Java EE 8)�0�.,#"!7>?<:4)%3B6C;2��

•��*Java EE 8* �'��• &*��–���DServlet!REST!JSON–��*@@C92�/1–���DManagement!JMS!

MVC

14

Java One 2016�)3B6C;��*Java EE 8 �

��� ����

���*Java EE 8 �

JAX-RS 2.1 REST Services &*--

Servlet 4.0 HTTP/2

JSON-B 1.0 JSON-B

JSON-P 1.1 JSON-P �

CDI 2.0 ���� N/A

Bean Validation 2.0

���� N/A

JSF 2.3 ���� N/A

Security 1.0 ���� N/A

Management 2.0 Management � Management 2.0+��$

JMS 2.1 JMS � JMS 2.1+��$

MVC 1.0 MVC � ��$

Page 15: Java EE - SCSK株式会社 · Java EE 6 JAX-RS, CDI, Servlet 3.0, Web Profile, Pruning Java EE 7 JAX-RS 2.0, JSON-P, WebSocket, JMS 2.0, Batch J2EE 1.2 Servlet, JSP, EJB, JMS Java

Copyright © 2017, Oracle and/or its affiliates. All rights reserved.

Java EE 8

• Java EE 8 Platform and Web Profile• Contexts and Dependency Injection

2.0 (CDI)• Java API for JSON Binding 1.0 (JSON-

B)• Java Message Service 2.1 (JMS)• Java Servlet 4.0• Java API for RESTful Web Services

2.1 (JAX-RS)

• Model-View-Controller 1.0 (MVC)• JavaServer Faces 2.3 (JSF)• Java EE Management API 2.0• Java API for JSON Processing 1.1

(JSON-P)• Java EE Security API 1.0• Bean Validation 2.0

15

2016� ���������������

Page 16: Java EE - SCSK株式会社 · Java EE 6 JAX-RS, CDI, Servlet 3.0, Web Profile, Pruning Java EE 7 JAX-RS 2.0, JSON-P, WebSocket, JMS 2.0, Batch J2EE 1.2 Servlet, JSP, EJB, JMS Java

Copyright © 2017, Oracle and/or its affiliates. All rights reserved.

Java EE 8 Contents: JSRs and MRs

16

Page 17: Java EE - SCSK株式会社 · Java EE 6 JAX-RS, CDI, Servlet 3.0, Web Profile, Pruning Java EE 7 JAX-RS 2.0, JSON-P, WebSocket, JMS 2.0, Batch J2EE 1.2 Servlet, JSP, EJB, JMS Java

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

Java EE 8����%�)#

Web Tier��

����HTTP/2��%*#

�����

������CDI������

�'("�

�&!$��

Page 18: Java EE - SCSK株式会社 · Java EE 6 JAX-RS, CDI, Servlet 3.0, Web Profile, Pruning Java EE 7 JAX-RS 2.0, JSON-P, WebSocket, JMS 2.0, Batch J2EE 1.2 Servlet, JSP, EJB, JMS Java

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

Java EE 8 API Updates

Servlet 4.0

JAX-RS 2.1

Security 1.0

JSF 2.3

Bean Validation 2.0

JSON-B 1.0

CDI 2.0

JSON-P 1.1

Bean Validation

JSR 369

JSR 370

JSR 375

JSR 372

JSR 380

JSR 367

JSR 365

JSR 374

HTTP/2 performance –����server push

Reactive #4 �7,API, Server-sent events

���� +7*�*�',��("35*�%7*"',

CDI�WebSocket�Bean Validation�����Java SE 8�

Java SE 8 (date/time, collections) �������

JSON <-> Java- 7+�7$�+/!6,2).7$��

��� 07,� 07,����Java SE�&18,

JSON ���������&18,

Page 19: Java EE - SCSK株式会社 · Java EE 6 JAX-RS, CDI, Servlet 3.0, Web Profile, Pruning Java EE 7 JAX-RS 2.0, JSON-P, WebSocket, JMS 2.0, Batch J2EE 1.2 Servlet, JSP, EJB, JMS Java

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

Maintenance ReleasesFor Java SE 9(GlassFish 5.0���)

WebSocket 1.1JSR 356

Common Annotations 1.3JSR 250 JAXB 2.0JSR 222

JAX-WS 2.0Bean ValidationJSR 224

SAAJ 1.0JSR 67JavaMail 1.6JSR 919

Interceptors 1.2 rev AJSR 318

Java Persistence 2.2JSR 338

JAF 1.2JSR 925

Page 20: Java EE - SCSK株式会社 · Java EE 6 JAX-RS, CDI, Servlet 3.0, Web Profile, Pruning Java EE 7 JAX-RS 2.0, JSON-P, WebSocket, JMS 2.0, Batch J2EE 1.2 Servlet, JSP, EJB, JMS Java

Copyright © 2017, Oracle and/or its affiliates. All rights reserved.

JSON-P

20

Page 21: Java EE - SCSK株式会社 · Java EE 6 JAX-RS, CDI, Servlet 3.0, Web Profile, Pruning Java EE 7 JAX-RS 2.0, JSON-P, WebSocket, JMS 2.0, Batch J2EE 1.2 Servlet, JSP, EJB, JMS Java

Copyright © 2017, Oracle and/or its affiliates. All rights reserved.

JSON-P 1.1

•������– RFC 7159 - The JavaScript Object Notation (JSON) Data Interchange Format– RFC 6901 – JSON Pointer– RFC 6902 – JSON Patch– RFC 7396 – JSON Merge Patch

• JsonObject� JsonArray���,�� ��• Java SE 8������Streams API������)+'-"*# ��– JSONCollectors

21

JSON-P� �������������!$(%-&

Page 22: Java EE - SCSK株式会社 · Java EE 6 JAX-RS, CDI, Servlet 3.0, Web Profile, Pruning Java EE 7 JAX-RS 2.0, JSON-P, WebSocket, JMS 2.0, Batch J2EE 1.2 Servlet, JSP, EJB, JMS Java

Copyright © 2017, Oracle and/or its affiliates. All rights reserved.

JSON-Pointer

• JSON���� ��������� "/0/user/address"

• JsonPointer�����– getValue()– add()– remove()– replace()– containsValue()

22

IETF RFC 6901

Page 23: Java EE - SCSK株式会社 · Java EE 6 JAX-RS, CDI, Servlet 3.0, Web Profile, Pruning Java EE 7 JAX-RS 2.0, JSON-P, WebSocket, JMS 2.0, Batch J2EE 1.2 Servlet, JSP, EJB, JMS Java

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

JsonArray contacts = ...JsonPointer p =

Json.createPointer("/0/phones/mobile");

JsonValue v = p.getValue(contacts);

����

[{"name":"Duke","gender":"M","phones":{

"home":"650-123-4567","mobile":"650-234-5678"}},

{"name":"Jane","gender":"F","phones":{

"mobile":"707-555-9999}}]

Page 24: Java EE - SCSK株式会社 · Java EE 6 JAX-RS, CDI, Servlet 3.0, Web Profile, Pruning Java EE 7 JAX-RS 2.0, JSON-P, WebSocket, JMS 2.0, Batch J2EE 1.2 Servlet, JSP, EJB, JMS Java

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

JsonArray contacts = ...JsonPointer p =

Json.createPointer("/0/phones/mobile");JsonReader reader =

Json.createReader(new StringReader("¥"650-555-1212¥""));

JsonValue jsonValue = reader.readValue();contacts = p.replace(contacts, jsonValue);

����

[{"name":"Duke","gender":"M","phones":{

"home":"650-123-4567","mobile":"650-555-1212"}},

{"name":"Jane","gender":"F","phones":{

"mobile":"707-555-9999}}]

Page 25: Java EE - SCSK株式会社 · Java EE 6 JAX-RS, CDI, Servlet 3.0, Web Profile, Pruning Java EE 7 JAX-RS 2.0, JSON-P, WebSocket, JMS 2.0, Batch J2EE 1.2 Servlet, JSP, EJB, JMS Java

Copyright © 2017, Oracle and/or its affiliates. All rights reserved.

JSON-Patch

• JSON�������������� ��– "add", "remove", "replace", "move", "copy", "test"

• JsonPatchBuilder����– add, copy, move, remove, replace, test

• JsonPatch����– apply()– toJsonArray()

25

IETF RFC 6902

Page 26: Java EE - SCSK株式会社 · Java EE 6 JAX-RS, CDI, Servlet 3.0, Web Profile, Pruning Java EE 7 JAX-RS 2.0, JSON-P, WebSocket, JMS 2.0, Batch J2EE 1.2 Servlet, JSP, EJB, JMS Java

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

JsonPatchBuilder builder =Json.createPatchBuilder();

JsonPatch patch =builder.replace("0/phones/mobile",

"650-111-2222").remove("/1").build();

JsonArray result = patch.apply(contacts);

JSON��������[

{"name":"Duke","gender":"M","phones":{

"home":"650-123-4567","mobile":"650-111-2222"}},

{"name":"Jane","gender":"F","phones":{

"mobile":"707-555-9999}}]

Page 27: Java EE - SCSK株式会社 · Java EE 6 JAX-RS, CDI, Servlet 3.0, Web Profile, Pruning Java EE 7 JAX-RS 2.0, JSON-P, WebSocket, JMS 2.0, Batch J2EE 1.2 Servlet, JSP, EJB, JMS Java

Copyright © 2017, Oracle and/or its affiliates. All rights reserved.

JSON-Merge Patch

Operation Original Patch Result���Replace� {"a" : "b"} {"a" : "c"} {"a" : "c"}

{"a" : "b"} {"a" : null} {}���Add� {"a" : "b"} {"b" : "c"} {"a" : "b",

"b" : "c" }���Remove� {"a" : "b",

"b" : "c" }{"a" : null} {"b" : "c"}

27

IETF RFC 7396

Page 28: Java EE - SCSK株式会社 · Java EE 6 JAX-RS, CDI, Servlet 3.0, Web Profile, Pruning Java EE 7 JAX-RS 2.0, JSON-P, WebSocket, JMS 2.0, Batch J2EE 1.2 Servlet, JSP, EJB, JMS Java

Copyright © 2017, Oracle and/or its affiliates. All rights reserved.

MergePatch����

JsonValue source = Json.createValue("{¥"color¥":¥"blue¥"}");

JsonValue patch = Json.createValue("{¥"color¥":¥"red¥"}");

JsonMergePatch mergePatch = Json.createMergePatch(patch);

JsonValue result = mergePatch.apply(source);// {"color":"red"}

28

Patch���

Page 29: Java EE - SCSK株式会社 · Java EE 6 JAX-RS, CDI, Servlet 3.0, Web Profile, Pruning Java EE 7 JAX-RS 2.0, JSON-P, WebSocket, JMS 2.0, Batch J2EE 1.2 Servlet, JSP, EJB, JMS Java

Copyright © 2017, Oracle and/or its affiliates. All rights reserved.

MergePatch����

JsonValue source = Json.createValue("{¥"color¥":¥"red¥"}");

JsonValue target = Json.createValue("{¥"color¥":¥"blue¥"}");

JsonMergePatch mergePatch = Json.createMergeDiff(source, target);// {"color":"blue"}

29

�����

Page 30: Java EE - SCSK株式会社 · Java EE 6 JAX-RS, CDI, Servlet 3.0, Web Profile, Pruning Java EE 7 JAX-RS 2.0, JSON-P, WebSocket, JMS 2.0, Batch J2EE 1.2 Servlet, JSP, EJB, JMS Java

Copyright © 2017, Oracle and/or its affiliates. All rights reserved.

JsonCollectors

JsonArray contacts = ...

List<String> femaleNames =contacts.getValuesAs(JsonObject.class).stream()

.filter(x -> "F".equals(x.getString("gender")))

.map(x -> (x.getString("name")))

.collect(Collectors.toList());

30

��Lambda�����JSON�Query������JSON��������� ��

Page 31: Java EE - SCSK株式会社 · Java EE 6 JAX-RS, CDI, Servlet 3.0, Web Profile, Pruning Java EE 7 JAX-RS 2.0, JSON-P, WebSocket, JMS 2.0, Batch J2EE 1.2 Servlet, JSP, EJB, JMS Java

Copyright © 2017, Oracle and/or its affiliates. All rights reserved.

JsonCollectors

JsonArray contacts = ...;

JsonArray femaleNames =contacts.getValuesAs(JsonObject.class).stream()

.filter(x -> "F".equals(x.getString("gender")))

.map(x -> (x.get("name")))

.collect(JsonCollectors.toJsonArray());

31

JsonCollectors�����JSON�������� � �

Page 32: Java EE - SCSK株式会社 · Java EE 6 JAX-RS, CDI, Servlet 3.0, Web Profile, Pruning Java EE 7 JAX-RS 2.0, JSON-P, WebSocket, JMS 2.0, Batch J2EE 1.2 Servlet, JSP, EJB, JMS Java

Copyright © 2017, Oracle and/or its affiliates. All rights reserved.

JSON-B

32

Page 33: Java EE - SCSK株式会社 · Java EE 6 JAX-RS, CDI, Servlet 3.0, Web Profile, Pruning Java EE 7 JAX-RS 2.0, JSON-P, WebSocket, JMS 2.0, Batch J2EE 1.2 Servlet, JSP, EJB, JMS Java

Copyright © 2017, Oracle and/or its affiliates. All rights reserved.

JSON-B 1.0

• Java�������JSON��!�$���%� "/�$�%� "�API–�%� "& Java������à JSON��!�$�

–�$�%� "& JSON��!�$�à Java������

• API���� �– Annotation�� (@JsonbProperty� @JsonbNillable)

– Runtime configuration builder��

• JSON Binding�#� ������

33

Java API for JSON Binding

Page 34: Java EE - SCSK株式会社 · Java EE 6 JAX-RS, CDI, Servlet 3.0, Web Profile, Pruning Java EE 7 JAX-RS 2.0, JSON-P, WebSocket, JMS 2.0, Batch J2EE 1.2 Servlet, JSP, EJB, JMS Java

Copyright © 2017, Oracle and/or its affiliates. All rights reserved.

JSON-B 1.0

• JsonBuilder– JSON.�:+�:"API����!5��:,��:-3�:,–28.�(� �����=��28/*����>

• Jsonb– JSON.�:+�:"07<49<!����– fromJson: JSON������Java�1%�!,;#:*:);)6<�+$6�5�'– toJson: Java�1%�!,;#:*:);)6<�JSON* &,�$6�5�'

34

Java API for JSON Binding

Page 35: Java EE - SCSK株式会社 · Java EE 6 JAX-RS, CDI, Servlet 3.0, Web Profile, Pruning Java EE 7 JAX-RS 2.0, JSON-P, WebSocket, JMS 2.0, Batch J2EE 1.2 Servlet, JSP, EJB, JMS Java

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

Car car1 = new Car();car1.setBrand("Toyota");car1.setModel("Prius");car1.setStock(20);Car car2 = new Car();car2.setBrand("Tesla");

...List<Car> inventory = new ArrayList<>();inventory.add(car1);inventory.add(car2);

Jsonb jsonb = JsonbBuilder.create();String json = jsonb.toJson(inventory);

JSON-B 1.0

[ { "brand":"Toyota","model":"Prius","stock":20

},{ "brand":"Tesla","model":"Model S","stock":0

}]

Page 36: Java EE - SCSK株式会社 · Java EE 6 JAX-RS, CDI, Servlet 3.0, Web Profile, Pruning Java EE 7 JAX-RS 2.0, JSON-P, WebSocket, JMS 2.0, Batch J2EE 1.2 Servlet, JSP, EJB, JMS Java

Copyright © 2017, Oracle and/or its affiliates. All rights reserved.

public class Customer {private int id;

@JsonbProperty(“name”)private String firstName;

private String getFirstName() {return firstName;

}}

@JsonbNillable@JsonbPropertyOrder(PropertyOrderStratgy.REVERSE)public class Customer {

@JsonbNumberFormat("#0")private int id;

@JsonbProperty(“name”)private String firstName;

private String getFirstName() {return firstName;

}}

36

� �������������

Page 37: Java EE - SCSK株式会社 · Java EE 6 JAX-RS, CDI, Servlet 3.0, Web Profile, Pruning Java EE 7 JAX-RS 2.0, JSON-P, WebSocket, JMS 2.0, Batch J2EE 1.2 Servlet, JSP, EJB, JMS Java

Copyright © 2017, Oracle and/or its affiliates. All rights reserved.

�� (��

• '*%"����• '*%"����•�����'*%"�• Null�����• �+� +������ (��

• &�,)$�'*%"����•��� ��&�,(!#• Encoding�• Adapters…

37

Page 38: Java EE - SCSK株式会社 · Java EE 6 JAX-RS, CDI, Servlet 3.0, Web Profile, Pruning Java EE 7 JAX-RS 2.0, JSON-P, WebSocket, JMS 2.0, Batch J2EE 1.2 Servlet, JSP, EJB, JMS Java

Copyright © 2017, Oracle and/or its affiliates. All rights reserved.

������

Jsonb jsonb = JsonbBuilder.create();

//Ordering, naming strategy, encoding, Locale, ...JsonbConfig config = new JsonbConfig().withFormatting(true)

.withAdapters(new CarAdapter());

Jsonb jsonb = JsonbBuilder.newBuilder("myProvider");

Jsonb jsonb = JsonbBuilder.create(config);

38

Runtime configuration builder

Page 39: Java EE - SCSK株式会社 · Java EE 6 JAX-RS, CDI, Servlet 3.0, Web Profile, Pruning Java EE 7 JAX-RS 2.0, JSON-P, WebSocket, JMS 2.0, Batch J2EE 1.2 Servlet, JSP, EJB, JMS Java

Copyright © 2017, Oracle and/or its affiliates. All rights reserved.

JAX-RS

39

Page 40: Java EE - SCSK株式会社 · Java EE 6 JAX-RS, CDI, Servlet 3.0, Web Profile, Pruning Java EE 7 JAX-RS 2.0, JSON-P, WebSocket, JMS 2.0, Batch J2EE 1.2 Servlet, JSP, EJB, JMS Java

Copyright © 2017, Oracle and/or its affiliates. All rights reserved.

JAX-RS 2.1• Reactive Client API• Server-sent events• Hypermedia API enhancements•��JSR�����������– JSON-B��������� �����– HTTP PATCH��������

40

Page 41: Java EE - SCSK株式会社 · Java EE 6 JAX-RS, CDI, Servlet 3.0, Web Profile, Pruning Java EE 7 JAX-RS 2.0, JSON-P, WebSocket, JMS 2.0, Batch J2EE 1.2 Servlet, JSP, EJB, JMS Java

Copyright © 2017, Oracle and/or its affiliates. All rights reserved. 41

// http://example.com/api/read/doe?dpt=1WebTarget myResource = client.target("http://example.com/api/read")

.register(SomeFilter.class)

.path("{user}")

.resolveTemplate("user", "joe")

.queryParam("dpt", "1")

.header("some-header", "true");Response response = myResource.request(...).get();

// ...client.close();

JAX-RS 2.0�Client API����

Page 42: Java EE - SCSK株式会社 · Java EE 6 JAX-RS, CDI, Servlet 3.0, Web Profile, Pruning Java EE 7 JAX-RS 2.0, JSON-P, WebSocket, JMS 2.0, Batch J2EE 1.2 Servlet, JSP, EJB, JMS Java

Copyright © 2017, Oracle and/or its affiliates. All rights reserved. 42

Client client = ClientBuilder.newClient();

WebTarget myResource = client.target("http://example.com/api/read");

Future<String> response = myResource.request(MediaType.TEXT_PLAIN).async().get(String.class);

// ...

JAX-RS 2.0�Client API�����

Page 43: Java EE - SCSK株式会社 · Java EE 6 JAX-RS, CDI, Servlet 3.0, Web Profile, Pruning Java EE 7 JAX-RS 2.0, JSON-P, WebSocket, JMS 2.0, Batch J2EE 1.2 Servlet, JSP, EJB, JMS Java

Copyright © 2017, Oracle and/or its affiliates. All rights reserved. 43

Client client = ClientBuilder.newClient();WebTarget myResource = client.target("http://example.com/api/read");Future<Customer> fCustomer = myResource.request(MediaType.TEXT_PLAIN)

.async()

.get(new InvocationCallback<Customer>(){@Overridepublic void completed(Customer customer) {

// work on the customer}@Overridepublic void failed(Throwable throwable) {

// Oops!}

});

JAX-RS 2.0�Client API�����

Page 44: Java EE - SCSK株式会社 · Java EE 6 JAX-RS, CDI, Servlet 3.0, Web Profile, Pruning Java EE 7 JAX-RS 2.0, JSON-P, WebSocket, JMS 2.0, Batch J2EE 1.2 Servlet, JSP, EJB, JMS Java

Copyright © 2017, Oracle and/or its affiliates. All rights reserved. 44

���� �������Orchestration�����������JAX-RS 2.0

Page 45: Java EE - SCSK株式会社 · Java EE 6 JAX-RS, CDI, Servlet 3.0, Web Profile, Pruning Java EE 7 JAX-RS 2.0, JSON-P, WebSocket, JMS 2.0, Batch J2EE 1.2 Servlet, JSP, EJB, JMS Java

Copyright © 2017, Oracle and/or its affiliates. All rights reserved. 45

destination.path("recommended").request().header("Rx-User", "Async").async().get(new InvocationCallback<List<Destination>>() {

@Overridepublic void completed(final List<Destination> recommended) {

final CountDownLatch innerLatch =new CountDownLatch(recommended.size());

final Map<String, Forecast> forecasts =Collections.synchronizedMap(new HashMap<>());

...

JAX-RS 2.0������� (1/4)

Copyright © 2017, Oracle and/or its affiliates. All rights reserved.

Page 46: Java EE - SCSK株式会社 · Java EE 6 JAX-RS, CDI, Servlet 3.0, Web Profile, Pruning Java EE 7 JAX-RS 2.0, JSON-P, WebSocket, JMS 2.0, Batch J2EE 1.2 Servlet, JSP, EJB, JMS Java

Copyright © 2017, Oracle and/or its affiliates. All rights reserved. 46

for (final Destination dest : recommended) {forecasts.resolveTemplate("dest", dest.getDestination())

.request()

.async()

.get(new InvocationCallback<Forecast>() {@Overridepublic void completed(final Forecast forecast) {

forecasts.put(dest.getDestination(), forecast);innerLatch.countDown();

}

...

JAX-RS 2.0������� (2/4)

Copyright © 2017, Oracle and/or its affiliates. All rights reserved.

Page 47: Java EE - SCSK株式会社 · Java EE 6 JAX-RS, CDI, Servlet 3.0, Web Profile, Pruning Java EE 7 JAX-RS 2.0, JSON-P, WebSocket, JMS 2.0, Batch J2EE 1.2 Servlet, JSP, EJB, JMS Java

Copyright © 2017, Oracle and/or its affiliates. All rights reserved. 47

@Overridepublic void failed(final Throwable throwable) {

innerLatch.countDown();}

});}

try {if (!innerLatch.await(10, TimeUnit.SECONDS)) {

// timeout}

} catch (final InterruptedException e) {// Ooops, interrupted!

}...

JAX-RS 2.0������� (3/4)

Copyright © 2017, Oracle and/or its affiliates. All rights reserved.

Page 48: Java EE - SCSK株式会社 · Java EE 6 JAX-RS, CDI, Servlet 3.0, Web Profile, Pruning Java EE 7 JAX-RS 2.0, JSON-P, WebSocket, JMS 2.0, Batch J2EE 1.2 Servlet, JSP, EJB, JMS Java

Copyright © 2017, Oracle and/or its affiliates. All rights reserved. 48

// Continue with processing…}

@Overridepublic void failed(final Throwable throwable) {

// Recommendation error}

});

// Continue...

JAX-RS 2.0������� (4/4)

Copyright © 2017, Oracle and/or its affiliates. All rights reserved.

Page 49: Java EE - SCSK株式会社 · Java EE 6 JAX-RS, CDI, Servlet 3.0, Web Profile, Pruning Java EE 7 JAX-RS 2.0, JSON-P, WebSocket, JMS 2.0, Batch J2EE 1.2 Servlet, JSP, EJB, JMS Java

Copyright © 2017, Oracle and/or its affiliates. All rights reserved.

JAX-RS 2.1

CompletionStage<String> cs1 = ClientBuilder.newClient().target("http://example.com/api").request().rx().get(String.class);

cs1.thenAccept(System.out::println);

49

Reactive Client API

Page 50: Java EE - SCSK株式会社 · Java EE 6 JAX-RS, CDI, Servlet 3.0, Web Profile, Pruning Java EE 7 JAX-RS 2.0, JSON-P, WebSocket, JMS 2.0, Batch J2EE 1.2 Servlet, JSP, EJB, JMS Java

Copyright © 2017, Oracle and/or its affiliates. All rights reserved. 50

CompletionStage<String> cs1 = ClientBuilder.newClient().target("http://example.com/service1/hello").request().rx().get(String.class);

CompletionStage<String> cs2 = ClientBuilder.newClient().target("http://example.com/service2/bonjour").request().rx().get(String.class);

CompletionStage<String> concat = cs1.thenCombine(cs2, String::concat);concat.thenAccept(System.out::println);

CompletionStage API���

Page 51: Java EE - SCSK株式会社 · Java EE 6 JAX-RS, CDI, Servlet 3.0, Web Profile, Pruning Java EE 7 JAX-RS 2.0, JSON-P, WebSocket, JMS 2.0, Batch J2EE 1.2 Servlet, JSP, EJB, JMS Java

Copyright © 2017, Oracle and/or its affiliates. All rights reserved.

Server-Sent Events (SSE)•�6*���1��5'�������$0)3–�6*������-5'7/%"6 8� ��

• HTTP,4'�3-6!–/&��#�,9 "text/event-stream"

• �-5'��–�-5'��&6#�ID�2'1���/5'�+�63(–�-5'.�46(�&6#+�63(�����

51

Page 52: Java EE - SCSK株式会社 · Java EE 6 JAX-RS, CDI, Servlet 3.0, Web Profile, Pruning Java EE 7 JAX-RS 2.0, JSON-P, WebSocket, JMS 2.0, Batch J2EE 1.2 Servlet, JSP, EJB, JMS Java

Copyright © 2017, Oracle and/or its affiliates. All rights reserved.

Server-Sent Events (SSE)�������

52

Source : https://caniuse.com/

Page 53: Java EE - SCSK株式会社 · Java EE 6 JAX-RS, CDI, Servlet 3.0, Web Profile, Pruning Java EE 7 JAX-RS 2.0, JSON-P, WebSocket, JMS 2.0, Batch J2EE 1.2 Servlet, JSP, EJB, JMS Java

Copyright © 2017, Oracle and/or its affiliates. All rights reserved.

SSE Client API• SseEventSource–Web�"����������–��!�Consumer��������–�����

• InboundSseEvent–��!��"��� ��–�����!���" ��� ��

53

Page 54: Java EE - SCSK株式会社 · Java EE 6 JAX-RS, CDI, Servlet 3.0, Web Profile, Pruning Java EE 7 JAX-RS 2.0, JSON-P, WebSocket, JMS 2.0, Batch J2EE 1.2 Servlet, JSP, EJB, JMS Java

Copyright © 2017, Oracle and/or its affiliates. All rights reserved. 54

Client client = ClientBuilder.newClient();WebTarget target = client.target( "http://example.com/service/subscribe" );try( SseEventSource eventSource

= SseEventSource.target( target ).reconnectingEvery ( 5, TimeUnit.SECONDS ).build () ) {

eventSource.register( System.out::println );

// ...eventSource.open();

// ...eventSource.close();

}

SSE Client API

Page 55: Java EE - SCSK株式会社 · Java EE 6 JAX-RS, CDI, Servlet 3.0, Web Profile, Pruning Java EE 7 JAX-RS 2.0, JSON-P, WebSocket, JMS 2.0, Batch J2EE 1.2 Servlet, JSP, EJB, JMS Java

Copyright © 2017, Oracle and/or its affiliates. All rights reserved.

SSE Server API• SseEventSink–1&5%.&(*4+0.5'��� �–���$0"!3)HTTP������"3%'3%–$0"!3)�"-3)6OutboundSseEvent7������

• Sse– OutboundSseEvent�SseBroadcaster ��������

• OutboundSseEvent–"-3) 1��$0"!3)����,25*#/%)������

• SseBroadcaster–"-3) ,25*#/%)�������

55

Page 56: Java EE - SCSK株式会社 · Java EE 6 JAX-RS, CDI, Servlet 3.0, Web Profile, Pruning Java EE 7 JAX-RS 2.0, JSON-P, WebSocket, JMS 2.0, Batch J2EE 1.2 Servlet, JSP, EJB, JMS Java

Copyright © 2017, Oracle and/or its affiliates. All rights reserved. 56

@GET@Path("subscribe")@Produces(MediaType.SERVER_SENT_EVENTS)public void subscribe(@Context SseEventSink eventSink, @Context Sse sse) {

eventSink.send ( sse.newEventBuilder ()

.name ( "event-name" )

.data ( String.class, "Welcome!" )

.build () );

eventSink.send( sse.newEvent ( "an event" ) );eventSink.send( sse.newEvent ( "another event" ) );eventSink.close ();

}

SSE Server API

Page 57: Java EE - SCSK株式会社 · Java EE 6 JAX-RS, CDI, Servlet 3.0, Web Profile, Pruning Java EE 7 JAX-RS 2.0, JSON-P, WebSocket, JMS 2.0, Batch J2EE 1.2 Servlet, JSP, EJB, JMS Java

Copyright © 2017, Oracle and/or its affiliates. All rights reserved.

CDI

57

Page 58: Java EE - SCSK株式会社 · Java EE 6 JAX-RS, CDI, Servlet 3.0, Web Profile, Pruning Java EE 7 JAX-RS 2.0, JSON-P, WebSocket, JMS 2.0, Batch J2EE 1.2 Servlet, JSP, EJB, JMS Java

Copyright © 2017, Oracle and/or its affiliates. All rights reserved.

•��23��– CDI Core– CDI for Java SE• Java SE'��%1&/+CDI5D9<��

API

– CDI for Java EE

• Observer+"���•!�4>D:•��.3=9F6@DEB9AC+��

• Java SE 8+���GStream API#Lambda�)(H*��•��)SPI��*�%1

Configurator• Observer?78;+��$0, �• Producer-Interceptor2 ��

58

CDI 2.0

Page 59: Java EE - SCSK株式会社 · Java EE 6 JAX-RS, CDI, Servlet 3.0, Web Profile, Pruning Java EE 7 JAX-RS 2.0, JSON-P, WebSocket, JMS 2.0, Batch J2EE 1.2 Servlet, JSP, EJB, JMS Java

Copyright © 2017, Oracle and/or its affiliates. All rights reserved.

CDI 1.1���

@Injectprivate Event<PaymentEvent> paymentEvent;

// event producerpaymentEvent.fire(new PaymentEvent(amt));

// event consumer Apublic void aObserver(@Observes PaymentEvent p) {

// ...}// event consumer Bpublic void bObserver(@Observes PaymentEvent p) {

// ...}

59

�����������������Immutable��� �

Page 60: Java EE - SCSK株式会社 · Java EE 6 JAX-RS, CDI, Servlet 3.0, Web Profile, Pruning Java EE 7 JAX-RS 2.0, JSON-P, WebSocket, JMS 2.0, Batch J2EE 1.2 Servlet, JSP, EJB, JMS Java

Copyright © 2017, Oracle and/or its affiliates. All rights reserved.

CDI 2.0

@Injectprivate Event<PaymentEvent> paymentEvent;

// event producerpaymentEvent.fire(new PaymentEvent(amt));

// event consumer Apublic void aObserver(@Observes @Priority(10) PaymentEvent p) {

// ...}// event consumer Bpublic void bObserver(@Observes @Priority(20) PaymentEvent p) {

// ...}

60

��������

Page 61: Java EE - SCSK株式会社 · Java EE 6 JAX-RS, CDI, Servlet 3.0, Web Profile, Pruning Java EE 7 JAX-RS 2.0, JSON-P, WebSocket, JMS 2.0, Batch J2EE 1.2 Servlet, JSP, EJB, JMS Java

Copyright © 2017, Oracle and/or its affiliates. All rights reserved.

CDI 2.0

@Injectprivate Event<PaymentEvent> paymentEvent;

// event producerCompletionStage<PaymentEvent> stage

= paymentEvent.fireAsync(new PaymentEvent(amt));

// event consumer Apublic void aObserver(@ObservesAsync PaymentEvent p) {

// ...}// event consumer Bpublic void bObserver(@ObservesAsync PaymentEvent p) {

// ...}

61

�������

Page 62: Java EE - SCSK株式会社 · Java EE 6 JAX-RS, CDI, Servlet 3.0, Web Profile, Pruning Java EE 7 JAX-RS 2.0, JSON-P, WebSocket, JMS 2.0, Batch J2EE 1.2 Servlet, JSP, EJB, JMS Java

Copyright © 2017, Oracle and/or its affiliates. All rights reserved.

Event�Observer•�/��������Event� ����– paymentEvent.fire(new PaymentEvent(100));– paymentEvent.fireAsync(new PaymentEvent(200));

•�Event��Observer������Event���Observer���������

•��Observer������, *$ "-/#.(!')�),.%"&+./#.(!')�����

62

Page 63: Java EE - SCSK株式会社 · Java EE 6 JAX-RS, CDI, Servlet 3.0, Web Profile, Pruning Java EE 7 JAX-RS 2.0, JSON-P, WebSocket, JMS 2.0, Batch J2EE 1.2 Servlet, JSP, EJB, JMS Java

Copyright © 2017, Oracle and/or its affiliates. All rights reserved.

Web TierServlet, HTTP/2, and JSF

63

Page 64: Java EE - SCSK株式会社 · Java EE 6 JAX-RS, CDI, Servlet 3.0, Web Profile, Pruning Java EE 7 JAX-RS 2.0, JSON-P, WebSocket, JMS 2.0, Batch J2EE 1.2 Servlet, JSP, EJB, JMS Java

Copyright © 2017, Oracle and/or its affiliates. All rights reserved.

HTTP/2

• 8&0:,���• <���$����"=����$+5;1• �4/2'37&:39/(:*�<Head-of-Line Blocking=���• HTTP 1.1�.6:0%)-��� � �

64

HTTP 1.x���$��#�!�

Page 65: Java EE - SCSK株式会社 · Java EE 6 JAX-RS, CDI, Servlet 3.0, Web Profile, Pruning Java EE 7 JAX-RS 2.0, JSON-P, WebSocket, JMS 2.0, Batch J2EE 1.2 Servlet, JSP, EJB, JMS Java

Copyright © 2017, Oracle and/or its affiliates. All rights reserved.

HTTP/2

• 1���4"!&)75&06&������–����–� �&)482

•, +4-5816#• Stream������•$8,87.(%3• /('��• HTTP 1.1����(.#58*

65

��7��

Page 66: Java EE - SCSK株式会社 · Java EE 6 JAX-RS, CDI, Servlet 3.0, Web Profile, Pruning Java EE 7 JAX-RS 2.0, JSON-P, WebSocket, JMS 2.0, Batch J2EE 1.2 Servlet, JSP, EJB, JMS Java

Copyright © 2017, Oracle and/or its affiliates. All rights reserved. 66

HTTP/2��TCP���1��

Stream 4Data

Stream 1Headers

Stream 1Data

Stream 2Headers

Stream 3Headers

Stream 2Data

Page 67: Java EE - SCSK株式会社 · Java EE 6 JAX-RS, CDI, Servlet 3.0, Web Profile, Pruning Java EE 7 JAX-RS 2.0, JSON-P, WebSocket, JMS 2.0, Batch J2EE 1.2 Servlet, JSP, EJB, JMS Java

Copyright © 2017, Oracle and/or its affiliates. All rights reserved.

Servlet 4.0• HTTP/2�.=I5–C+(05HE0=G0����–.I9IH<2/A– HTTP 1.1�!�%2<,EI6

• HTTP 1.1 RFC��"��#��• ->A83&�!����������–-G37� �����!��4;)D5�-G3*05H:0��#��–<F,B?� "jsp;$'D������–4<F'@G5H4&0+C<1�����(G-I4&G,���– Servlet Mapping API

67

Page 68: Java EE - SCSK株式会社 · Java EE 6 JAX-RS, CDI, Servlet 3.0, Web Profile, Pruning Java EE 7 JAX-RS 2.0, JSON-P, WebSocket, JMS 2.0, Batch J2EE 1.2 Servlet, JSP, EJB, JMS Java

Copyright © 2017, Oracle and/or its affiliates. All rights reserved. 68

...PushBuilder pushBuilder = request.newPushBuilder();pushBuilder.path( "images/myPhoto.png" )

.addHeader( "content-type", "image/png" )

.push ();

Server Push

Page 69: Java EE - SCSK株式会社 · Java EE 6 JAX-RS, CDI, Servlet 3.0, Web Profile, Pruning Java EE 7 JAX-RS 2.0, JSON-P, WebSocket, JMS 2.0, Batch J2EE 1.2 Servlet, JSP, EJB, JMS Java

Copyright © 2017, Oracle and/or its affiliates. All rights reserved.

URL&�#*��(*��'����!)

• getMappingMatch()–MappingMatch���%

• getPattern()– Servlet)��� �����$���URL"�+*

• getMatchValue()–��)��� ����� URI"�������

• getServletName()– Servlet�,����-

69

HttpServletMapping

Page 70: Java EE - SCSK株式会社 · Java EE 6 JAX-RS, CDI, Servlet 3.0, Web Profile, Pruning Java EE 7 JAX-RS 2.0, JSON-P, WebSocket, JMS 2.0, Batch J2EE 1.2 Servlet, JSP, EJB, JMS Java

Copyright © 2017, Oracle and/or its affiliates. All rights reserved. 70

@WebServlet(urlPatterns = {"", "/", "/main", "*.html", "/main/*"},name = "MainServlet")

public class MainServlet extends HttpServlet {private static final long serialVersionUID = 1L;static final Logger logger = Logger.getLogger(MainServlet.class.getName());

@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) {

HttpServletMapping httpServletMapping = req.getHttpServletMapping();MappingMatch mappingMatch = httpServletMapping.getMappingMatch();

...

Page 71: Java EE - SCSK株式会社 · Java EE 6 JAX-RS, CDI, Servlet 3.0, Web Profile, Pruning Java EE 7 JAX-RS 2.0, JSON-P, WebSocket, JMS 2.0, Batch J2EE 1.2 Servlet, JSP, EJB, JMS Java

Copyright © 2017, Oracle and/or its affiliates. All rights reserved.

Matching���

getMappingMatch getMatchValue getPattern"" CONTEXT_ROOT "" """/" DEFAULT /"/main" EXACT main /main"/index.html" EXTENSION index *.html"/main/hello" PATH hello /main/*

71

getServletName���MainServlet

Page 72: Java EE - SCSK株式会社 · Java EE 6 JAX-RS, CDI, Servlet 3.0, Web Profile, Pruning Java EE 7 JAX-RS 2.0, JSON-P, WebSocket, JMS 2.0, Batch J2EE 1.2 Servlet, JSP, EJB, JMS Java

Copyright © 2017, Oracle and/or its affiliates. All rights reserved.

JSF 2.3• CDI�������–�����������–���managed beans����

• Date and Time API��%*"• WebSocket����• Ajax& !#�����• �'�)$(�Bean Validation• UIData� UIRepeat�

72

Page 73: Java EE - SCSK株式会社 · Java EE 6 JAX-RS, CDI, Servlet 3.0, Web Profile, Pruning Java EE 7 JAX-RS 2.0, JSON-P, WebSocket, JMS 2.0, Batch J2EE 1.2 Servlet, JSP, EJB, JMS Java

Copyright © 2017, Oracle and/or its affiliates. All rights reserved.

Bean Validation

73

Page 74: Java EE - SCSK株式会社 · Java EE 6 JAX-RS, CDI, Servlet 3.0, Web Profile, Pruning Java EE 7 JAX-RS 2.0, JSON-P, WebSocket, JMS 2.0, Batch J2EE 1.2 Servlet, JSP, EJB, JMS Java

Copyright © 2017, Oracle and/or its affiliates. All rights reserved.

Bean Validation 2.0• Java SE 8�� �#,3(– Date and Time API�#,3(– Collection���������–Optional0&+3–�*'3$/2�����

•��������– @NotEmpty, @NotBlank, @Email, @Positive, @Negative, @PositiveOrZero, @NegativeOrZero, @PastOrPresent, @FutureOrPresent

• ���"-.)'������ 1! %(���

74

Page 75: Java EE - SCSK株式会社 · Java EE 6 JAX-RS, CDI, Servlet 3.0, Web Profile, Pruning Java EE 7 JAX-RS 2.0, JSON-P, WebSocket, JMS 2.0, Batch J2EE 1.2 Servlet, JSP, EJB, JMS Java

Copyright © 2017, Oracle and/or its affiliates. All rights reserved. 75

@PastYear startYear = Year.of(2016);

// repeating annotations@Size(min = 8, group = Default.class)@Size(min = 12, group = Admin.class)private String password;

List<@NotNull @Email String> emails;

String @NotNull @Email[] email;

// constraints with container elementsMap<@Valid Customer, @Valid Account> customerAccountInfo;

Constraints (1/2)

Page 76: Java EE - SCSK株式会社 · Java EE 6 JAX-RS, CDI, Servlet 3.0, Web Profile, Pruning Java EE 7 JAX-RS 2.0, JSON-P, WebSocket, JMS 2.0, Batch J2EE 1.2 Servlet, JSP, EJB, JMS Java

Copyright © 2017, Oracle and/or its affiliates. All rights reserved. 76

// OptionalOptional<@Past LocalDate> getEnrollmentDate();

// new Annotations@NotEmptyList<@NotBlank @Email String> customerEmails;

Constraints (2/2)

Page 77: Java EE - SCSK株式会社 · Java EE 6 JAX-RS, CDI, Servlet 3.0, Web Profile, Pruning Java EE 7 JAX-RS 2.0, JSON-P, WebSocket, JMS 2.0, Batch J2EE 1.2 Servlet, JSP, EJB, JMS Java

Copyright © 2017, Oracle and/or its affiliates. All rights reserved.

Security

77

Page 78: Java EE - SCSK株式会社 · Java EE 6 JAX-RS, CDI, Servlet 3.0, Web Profile, Pruning Java EE 7 JAX-RS 2.0, JSON-P, WebSocket, JMS 2.0, Batch J2EE 1.2 Servlet, JSP, EJB, JMS Java

Copyright © 2017, Oracle and/or its affiliates. All rights reserved.

Security API for Java EE

•� API���– SecurityContext– HttpAuthenticationMechanism– IdentityStore

•����*02'�,�)%+�����*/"2#.1��!&$�����,�)%+���

• CDI��

78

Java EE& -/(�API���������

Page 79: Java EE - SCSK株式会社 · Java EE 6 JAX-RS, CDI, Servlet 3.0, Web Profile, Pruning Java EE 7 JAX-RS 2.0, JSON-P, WebSocket, JMS 2.0, Batch J2EE 1.2 Servlet, JSP, EJB, JMS Java

Copyright © 2017, Oracle and/or its affiliates. All rights reserved.

SecurityContext

•��� ��$�� – authenticate()– getCallerPrincipal(), getPrincipalsByType()– isCallerinRole()– hasAccessToWebResource()

•���$�� ����– HttpServletRequest.getUserPrincipal()HttpServletRequest.isUserInRole()– EJBContext.getCallerPrincipal()EJBContext.isCallerInRole()

79

!(�&#���%'�������������)�'"�)�

Page 80: Java EE - SCSK株式会社 · Java EE 6 JAX-RS, CDI, Servlet 3.0, Web Profile, Pruning Java EE 7 JAX-RS 2.0, JSON-P, WebSocket, JMS 2.0, Batch J2EE 1.2 Servlet, JSP, EJB, JMS Java

Copyright © 2017, Oracle and/or its affiliates. All rights reserved.

HttpAuthenticationMechanism

• Web%49'<*8;�Caller������– Servlet(;.2�����!

• JASPIC ServerAuthModule SPI$7/:���Interface– validateRequest() : doFilter()"���service()6,-1� ���– secureResponse() : doFilter()"���service()6,-1� ���– cleanSubject() : logout() 6,-1�� ������� ��

• %49'<*8;�3-'<+;&"���(;.2�����(;.2"���%49'<*8;�#� ��

• IdentityStore�����

80

Servlet(;.2���$)5<0

Page 81: Java EE - SCSK株式会社 · Java EE 6 JAX-RS, CDI, Servlet 3.0, Web Profile, Pruning Java EE 7 JAX-RS 2.0, JSON-P, WebSocket, JMS 2.0, Batch J2EE 1.2 Servlet, JSP, EJB, JMS Java

Copyright © 2017, Oracle and/or its affiliates. All rights reserved.

IdentityStore

• ,0 0"&������,0 0����,0 0�-0(����������

• $�(– LDAP�Database– Authentication�Authorization��

• )#%'–��1validate(Credential) - CredentialValidationResult���–��1getCallerGroups(CredentialValidationResult)

81

JAAS.��/*!+0-����

Page 82: Java EE - SCSK株式会社 · Java EE 6 JAX-RS, CDI, Servlet 3.0, Web Profile, Pruning Java EE 7 JAX-RS 2.0, JSON-P, WebSocket, JMS 2.0, Batch J2EE 1.2 Servlet, JSP, EJB, JMS Java

Copyright © 2017, Oracle and/or its affiliates. All rights reserved.

����������

82

Page 83: Java EE - SCSK株式会社 · Java EE 6 JAX-RS, CDI, Servlet 3.0, Web Profile, Pruning Java EE 7 JAX-RS 2.0, JSON-P, WebSocket, JMS 2.0, Batch J2EE 1.2 Servlet, JSP, EJB, JMS Java

Copyright © 2017, Oracle and/or its affiliates. All rights reserved.

Java Persistence 2.2•���"��!• Date and Time API���"�– java.time����LocalDate, LocalTime, LocalDateTime, OffsetTime,OffsetDateTime ����!�

• �� �����Stream�–Query : Stream getResultStream()– TypedQuery : Stream<x> getResultStream()

• AttributeConverter�CDI����

83

Page 84: Java EE - SCSK株式会社 · Java EE 6 JAX-RS, CDI, Servlet 3.0, Web Profile, Pruning Java EE 7 JAX-RS 2.0, JSON-P, WebSocket, JMS 2.0, Batch J2EE 1.2 Servlet, JSP, EJB, JMS Java

Copyright © 2017, Oracle and/or its affiliates. All rights reserved.

Summary

84

Page 85: Java EE - SCSK株式会社 · Java EE 6 JAX-RS, CDI, Servlet 3.0, Web Profile, Pruning Java EE 7 JAX-RS 2.0, JSON-P, WebSocket, JMS 2.0, Batch J2EE 1.2 Servlet, JSP, EJB, JMS Java

Copyright © 2017, Oracle and/or its affiliates. All rights reserved.

Java EE Development has beenmigrated from Java.net to GitHub

https://javaee.github.io/https://github.com/javaee

85

Page 86: Java EE - SCSK株式会社 · Java EE 6 JAX-RS, CDI, Servlet 3.0, Web Profile, Pruning Java EE 7 JAX-RS 2.0, JSON-P, WebSocket, JMS 2.0, Batch J2EE 1.2 Servlet, JSP, EJB, JMS Java

Copyright © 2017, Oracle and/or its affiliates. All rights reserved. 86

Java EE 8 Full Profile

Connector JAXBJSP Debugging

Managed Beans

Concurrency EE Interceptors JAX-WS WebSocket

JASPIC JMS JTADeployment

Batch JACCDependency Injection JAXR JSTL Management

EJB JAX-RPC Web ServicesJPA

Common Annotations EL Web Services

MetadataJavaMail

CDI

JSON-B Security

Bean Validation

JSF

JAX-RS JSON-P

Servlet

JSP

Maintenance ReleaseUpdate

New

Page 87: Java EE - SCSK株式会社 · Java EE 6 JAX-RS, CDI, Servlet 3.0, Web Profile, Pruning Java EE 7 JAX-RS 2.0, JSON-P, WebSocket, JMS 2.0, Batch J2EE 1.2 Servlet, JSP, EJB, JMS Java

Copyright © 2017, Oracle and/or its affiliates. All rights reserved. 87

Java EE 8 Web Profile

JSP Debugging

Managed BeansInterceptors WebSocket

JASPIC JTA

Dependency Injection JSTL

EJB Lite JPA

Common Annotations EL

CDI

JSON-B Security

Bean Validation

JSF

JAX-RS JSON-P

Servlet

JSP

Maintenance ReleaseUpdate

New

Page 88: Java EE - SCSK株式会社 · Java EE 6 JAX-RS, CDI, Servlet 3.0, Web Profile, Pruning Java EE 7 JAX-RS 2.0, JSON-P, WebSocket, JMS 2.0, Batch J2EE 1.2 Servlet, JSP, EJB, JMS Java

Copyright © 2017, Oracle and/or its affiliates. All rights reserved.

Summary• Final Java EE 8 was shipped!

• EE4J (Enterprise Eclipse for Java) project is now on going.

• Fore more details on EE4J, stay tuned for Ito-san’s presentation!

88

Page 89: Java EE - SCSK株式会社 · Java EE 6 JAX-RS, CDI, Servlet 3.0, Web Profile, Pruning Java EE 7 JAX-RS 2.0, JSON-P, WebSocket, JMS 2.0, Batch J2EE 1.2 Servlet, JSP, EJB, JMS Java

Copyright © 2017, Oracle and/or its affiliates. All rights reserved.

Safe Harbor StatementThe 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.

89

Page 90: Java EE - SCSK株式会社 · Java EE 6 JAX-RS, CDI, Servlet 3.0, Web Profile, Pruning Java EE 7 JAX-RS 2.0, JSON-P, WebSocket, JMS 2.0, Batch J2EE 1.2 Servlet, JSP, EJB, JMS Java
Page 91: Java EE - SCSK株式会社 · Java EE 6 JAX-RS, CDI, Servlet 3.0, Web Profile, Pruning Java EE 7 JAX-RS 2.0, JSON-P, WebSocket, JMS 2.0, Batch J2EE 1.2 Servlet, JSP, EJB, JMS Java