Download - Future of Java EE with Java SE 8
![Page 1: Future of Java EE with Java SE 8](https://reader031.vdocuments.site/reader031/viewer/2022020717/54b4ed914a795994458b46a6/html5/thumbnails/1.jpg)
Future of Java EE with SE 8
May 18, 2014Hirofumi IwasakiFinancial Service Department, Development Unit, Rakuten, Inc.http://www.rakuten.co.jp/
Twitter hashtag: #ccc_r11
![Page 2: Future of Java EE with Java SE 8](https://reader031.vdocuments.site/reader031/viewer/2022020717/54b4ed914a795994458b46a6/html5/thumbnails/2.jpg)
2
Speaker Biography
Hirofumi Iwasaki– Group Manager, Technology Manager– Financial Service Department, Development Unit,
Rakuten, Inc. (Fukuoka Office) Carrier
– Planning, designing & implements for many huge enterprise systems for financial, manufacturer, public systems with enterprise middleware, especially Java EE & .NET in Japan for about 16 years.
Opus, Lectures, etc.– Magazine: @IT (2005-2010), CIO Magazine (2009), IT Architect
(2005-2009), Web+DB Press (2005), Java World (2001-2004), etc.
– Lectures: WebLogic key person roundtable (2012-2013), etc.– twitter: @HirofumiIwasaki (English)
![Page 3: Future of Java EE with Java SE 8](https://reader031.vdocuments.site/reader031/viewer/2022020717/54b4ed914a795994458b46a6/html5/thumbnails/3.jpg)
3
8Happy Java 8 Release!
But for Java EE ?
Useful for EE?
![Page 4: Future of Java EE with Java SE 8](https://reader031.vdocuments.site/reader031/viewer/2022020717/54b4ed914a795994458b46a6/html5/thumbnails/4.jpg)
4
Java EE Overview
![Page 5: Future of Java EE with Java SE 8](https://reader031.vdocuments.site/reader031/viewer/2022020717/54b4ed914a795994458b46a6/html5/thumbnails/5.jpg)
5
Standard specifications for application servers(except for MS).
What's Java EE (1/2)
Commercial
Open Source
etc.
Java EE Specification
To make assurance double
sure
Liberty Profile etc.
+
![Page 6: Future of Java EE with Java SE 8](https://reader031.vdocuments.site/reader031/viewer/2022020717/54b4ed914a795994458b46a6/html5/thumbnails/6.jpg)
6
For ENTERPRISE systems (Enterprise Edition) specifications (full profile)– 'Enterprise' means transactional.– Core architecture is EJB (JTA & CMT) with auto transaction
systems.– Transactional connectivity for other systems with JPA (JDBC),
JMS, RMI-IIOP.– Web architecture with JSF (Servlet & Facelet), JAX.
Each Java EE specification covers general enterprise requirements.– Not for personal usage. Use Java SE only.– Not for build-in usage. Use Java ME.– For your enterprise system Use Java EE with Java SE.
What's Java EE (2/2) To make assurance double
sure
![Page 7: Future of Java EE with Java SE 8](https://reader031.vdocuments.site/reader031/viewer/2022020717/54b4ed914a795994458b46a6/html5/thumbnails/7.jpg)
7
The History of Java EE
J2EE 1.2
(1999)
J2EE 1.3
(2001)
J2EE 1.4
(2003)
Java EE 5
(2006)
Java EE 6
(2009)
Java EE 7
(2013)
Born! PandemicEra
IntegrationEra
Mess Era(for EE spec)
Unite to SingleStandard
Again!
![Page 8: Future of Java EE with Java SE 8](https://reader031.vdocuments.site/reader031/viewer/2022020717/54b4ed914a795994458b46a6/html5/thumbnails/8.jpg)
8
Combinations of SE and EE
J2EE 1.2
(1999)
J2EE 1.3
(2001)
J2EE 1.4
(2003)
Java EE 5
(2006)
Java EE 6
(2009)
Java EE 7
(2013)
J2SE 1.2
(1998)
J2SE1.3
(2000)
J2SE1.4
(2002)
J2SE 5
(2004)
Java SE 6
(2006)
Java SE 7
(2011)
Java SE 8
(2014)
One EE specification, with latest SE version
Java EE 7 relies on SE 7
Java EE 7 is not fit perfectly for SE 8 improved functions
![Page 9: Future of Java EE with Java SE 8](https://reader031.vdocuments.site/reader031/viewer/2022020717/54b4ed914a795994458b46a6/html5/thumbnails/9.jpg)
9
Java EE Application Servers Versions
Vendor App Server EE 1.4(2003-)
EE 5(2006-)
EE 6(2009-)
EE 7(2013-)
Open Source GlassFish - 2.x 3.x 4.0
Oracle WebLogic 9.x 10.x 12.x -
IBM WebSphere 5.1 6.x, 7.x 8.x -
IBM Liberty Profile - - 8.5 -
Open Source Geronimo - 2.x 3.x -
Open Source TomEE+ - - 1.x -
Red Hat JBoss 4.x 5.1 7.1 -
Red Hat WildFly - - - 8.0
Fujitsu Interstage 9.0,9.1 9.2,10.x,11.0 11.1 -
Hitachi Cosminexus 7.x 8.x 9.x -
The de facto latest version
is still EE 6
![Page 10: Future of Java EE with Java SE 8](https://reader031.vdocuments.site/reader031/viewer/2022020717/54b4ed914a795994458b46a6/html5/thumbnails/10.jpg)
10
Java SE Support Status of Java EE App Servers
Vendor App Server EE 6 (2009 -) EE 7 (2013-)
Ver. SE Ver. Ver. SE Ver.
Open Source GlassFish 3.x SE 7 4.0 SE 7
Oracle WebLogic 12.1.x SE 6, SE 7 - -
IBM WebSphere 8.x SE 6, SE 7 - -
Open Source Geronimo 3.x SE 6, SE 7 - -
Open Source TomEE+ 1.x SE 7 - -
Red Hat JBoss 7.x SE 6, SE 7 - -
Red Hat WildFly - - 8.0 SE 7
Fujitsu Interstage 11.1 SE 6, SE 7 - -
Hitachi Cosminexus 9.x SE 7 - -
SE 8 is not officially
supported yet
*
* WebLogic 12.1.1 only
![Page 11: Future of Java EE with Java SE 8](https://reader031.vdocuments.site/reader031/viewer/2022020717/54b4ed914a795994458b46a6/html5/thumbnails/11.jpg)
11
That’s All !Thank you for listening !Just a
kidding
![Page 12: Future of Java EE with Java SE 8](https://reader031.vdocuments.site/reader031/viewer/2022020717/54b4ed914a795994458b46a6/html5/thumbnails/12.jpg)
12
Nice!
![Page 13: Future of Java EE with Java SE 8](https://reader031.vdocuments.site/reader031/viewer/2022020717/54b4ed914a795994458b46a6/html5/thumbnails/13.jpg)
13
Excellent!
![Page 14: Future of Java EE with Java SE 8](https://reader031.vdocuments.site/reader031/viewer/2022020717/54b4ed914a795994458b46a6/html5/thumbnails/14.jpg)
14
By the Way,
![Page 15: Future of Java EE with Java SE 8](https://reader031.vdocuments.site/reader031/viewer/2022020717/54b4ed914a795994458b46a6/html5/thumbnails/15.jpg)
15
Java SE 8 Updates Overview
Basic Topics
![Page 16: Future of Java EE with Java SE 8](https://reader031.vdocuments.site/reader031/viewer/2022020717/54b4ed914a795994458b46a6/html5/thumbnails/16.jpg)
16
Java SE 8 New Functions
LambdaD
ate Tim
e AP
INew VM
JavaFX
DefaultMethod
Stream APITypeAnnotationImprovementJavaS
cript
En
gin
e
UNICODE6.2
…and others
![Page 17: Future of Java EE with Java SE 8](https://reader031.vdocuments.site/reader031/viewer/2022020717/54b4ed914a795994458b46a6/html5/thumbnails/17.jpg)
17
Java SE 8 Deleted Functions
JDBC-ODBCBridge
com
.sun
.misc.*
So long..
![Page 18: Future of Java EE with Java SE 8](https://reader031.vdocuments.site/reader031/viewer/2022020717/54b4ed914a795994458b46a6/html5/thumbnails/18.jpg)
18
SE 8 New Feature – Lambda with Stream API
List<String> aList = Arrays.asList(new String[]{"a", "b", "c", "d", "e"}); // Normalfor (String x : aList) { System.out.println(x);} // Lambda with parallel streamaList.parallelStream().forEachOrdered(x -> System.out.println(x));
Stream API(auto parallel threading)
Lambda Expression(just a syntax sugar)
Might not work with EE 7
![Page 19: Future of Java EE with Java SE 8](https://reader031.vdocuments.site/reader031/viewer/2022020717/54b4ed914a795994458b46a6/html5/thumbnails/19.jpg)
19
SE 8 New Feature – Lambda with Stream API
Don’t worry.NetBeans supports you!
Automatic Conversion
![Page 20: Future of Java EE with Java SE 8](https://reader031.vdocuments.site/reader031/viewer/2022020717/54b4ed914a795994458b46a6/html5/thumbnails/20.jpg)
20
SE 8 New Feature – New Date Time API (Basic)
// Calendar.Calendar cal = Calendar.getInstance(); // Date.int year = cal.get(Calendar.YEAR);int month = cal.get(Calendar.MONTH) + 1;int day = cal.get(Calendar.DAY_OF_MONTH); // Time.int hour = cal.get(Calendar.HOUR);int minutes = cal.get(Calendar.MINUTE);int second = cal.get(Calendar.SECOND);int millisecond = cal.get(Calendar.MILLISECOND);
// Local Date Time.LocalDateTime dateTime = LocalDateTime.now();
// Local Date.LocalDate date = dateTime.toLocalDate();int year = date.getYear();int month = date.getMonthValue();int day = date.getDayOfMonth();DayOfWeek dayOfWeek = date.getDayOfWeek();
// Local Time.LocalTime time = dateTime.toLocalTime();int hour = time.getHour();int minute = time.getMinute();int second = time.getSecond();int nanoSecond = time.getNano();
Java 1.2 – Java 7 Java 8 –
-1
From Millisecond to Nanosecond(.000 .000000000)
![Page 21: Future of Java EE with Java SE 8](https://reader031.vdocuments.site/reader031/viewer/2022020717/54b4ed914a795994458b46a6/html5/thumbnails/21.jpg)
21
SE 8 New Feature – New Date Time API (Calculation)
// Date CalculationCalendar threeWAfter = Calendar.getInstance();threeWAfter.setLenient(false);threeWAfter.add(Calendar.DAY_OF_MONTH, 7 * 3); Calendar fourMBefore = Calendar.getInstance();fourMBefore.setLenient(false);fourMBefore.add(Calendar.MONTH, -4); // Time CalculationCalendar sevenHAfter = Calendar.getInstance();sevenHAfter.setLenient(false);sevenHAfter.add(Calendar.HOUR, 7); Calendar threeMBefore = Calendar.getInstance();threeMBefore.setLenient(false);threeMBefore.add(Calendar.MINUTE, -3);
// Local Date Time.LocalDateTime dateTime = LocalDateTime.now();LocalDate date = dateTime.toLocalDate();LocalTime time = dateTime.toLocalTime();
// Date CalculationLocalDate threeWAfter = date.plusWeeks(3);
LocalDate fourMBefore = date.minusMonths(4);
// Time calculationLocalTime sevenHAfter = time.plusHours(7);
LocalTime threeMBefore = time.minusMinutes(3);
Java 1.2 – Java 7 Java 8 –
Simplified, sophisticated style!
![Page 22: Future of Java EE with Java SE 8](https://reader031.vdocuments.site/reader031/viewer/2022020717/54b4ed914a795994458b46a6/html5/thumbnails/22.jpg)
22
SE 8 New Feature – New Date Time API (JDBC)
ANSI SQL Java SE 8
DATE java.time.LocalDate
TIME java.time.LocalDate
TIMESTAMP java.time.LocalDateTime
TIME WITH TIMEZONE java.time.OffsetTime
TIMESTAMP WITH TIMEZONE java.time.OffsetDateTime
http://www.oracle.com/technetwork/articles/java/jf14-date-time-2125367.html
Might not work with EE 7
![Page 23: Future of Java EE with Java SE 8](https://reader031.vdocuments.site/reader031/viewer/2022020717/54b4ed914a795994458b46a6/html5/thumbnails/23.jpg)
23
SE 8 New Feature – Type Annotation Improvement
![Page 24: Future of Java EE with Java SE 8](https://reader031.vdocuments.site/reader031/viewer/2022020717/54b4ed914a795994458b46a6/html5/thumbnails/24.jpg)
24
SE 8 New Feature – Type Annotation Improvement
![Page 25: Future of Java EE with Java SE 8](https://reader031.vdocuments.site/reader031/viewer/2022020717/54b4ed914a795994458b46a6/html5/thumbnails/25.jpg)
25
Java SE 8 applying pointsfor EE 7
![Page 26: Future of Java EE with Java SE 8](https://reader031.vdocuments.site/reader031/viewer/2022020717/54b4ed914a795994458b46a6/html5/thumbnails/26.jpg)
26
Rich Clients(no business logics)
Web Presentation(no business logics)
Business Logic(no presentations)
Typical Usage of EE Specs
Data Access
JPA
EJBJSF
DBs
Java FXJTA
Automatic Transaction
Messaging
JMS MQ
Connection
RMI-IIOPOther
Servers
EMailMTAJavaMail
JAX
Call
Call
Call
Call
Call
Call
![Page 27: Future of Java EE with Java SE 8](https://reader031.vdocuments.site/reader031/viewer/2022020717/54b4ed914a795994458b46a6/html5/thumbnails/27.jpg)
27
Rich Clients(no business logics)
Web Presentation(no business logics)
Business Logic(no presentations)
Typical Usage of EE Specs
Data Access
JPA
EJBJSF
DBs
Java FXJTA
Automatic Transaction
Messaging
JMS MQ
Connection
RMI-IIOPOther
Servers
EMailMTAJavaMail
JAX
Call
Call
Call
Call
Call
Call
Main stage is here!
![Page 28: Future of Java EE with Java SE 8](https://reader031.vdocuments.site/reader031/viewer/2022020717/54b4ed914a795994458b46a6/html5/thumbnails/28.jpg)
28
Basic of Applying SE 8 feature in EE 7 Apps
EE 7 didn’t consider the SE 8 in their specification.– EE 7 spec don’t know the SE 8.
Many SE 8 new functions might be work correctly if the app server supported the SE 8 as their VM.– Lambda expressions– Stream APIs (limited)– New date time APIs (limited)– etc.
![Page 29: Future of Java EE with Java SE 8](https://reader031.vdocuments.site/reader031/viewer/2022020717/54b4ed914a795994458b46a6/html5/thumbnails/29.jpg)
29
Basic of Applying SE 8 feature in EE 7 Apps
But some conflicted specs might not be worked correctly– Stream API (multithreading with EJB 3.2, e.g. parallel stream)– New date time APIs (JDBC new mappings with JPA 2.1)– etc.
Wait the Java EE 8 for the full support of SE 8
![Page 30: Future of Java EE with Java SE 8](https://reader031.vdocuments.site/reader031/viewer/2022020717/54b4ed914a795994458b46a6/html5/thumbnails/30.jpg)
30
Java SE 8 Updates Overview
Advanced Topics
![Page 31: Future of Java EE with Java SE 8](https://reader031.vdocuments.site/reader031/viewer/2022020717/54b4ed914a795994458b46a6/html5/thumbnails/31.jpg)
31
Study of Limitation Casewith SE 8 in EE 7
![Page 32: Future of Java EE with Java SE 8](https://reader031.vdocuments.site/reader031/viewer/2022020717/54b4ed914a795994458b46a6/html5/thumbnails/32.jpg)
32
Let’s take a lookof EJB 3.2 (EE 7)
with Parallel Stream,with Glassfish 4.0.1 beta.
![Page 33: Future of Java EE with Java SE 8](https://reader031.vdocuments.site/reader031/viewer/2022020717/54b4ed914a795994458b46a6/html5/thumbnails/33.jpg)
33
Downloaded from here.
![Page 34: Future of Java EE with Java SE 8](https://reader031.vdocuments.site/reader031/viewer/2022020717/54b4ed914a795994458b46a6/html5/thumbnails/34.jpg)
34
NetBeans 8 detected 4.0.1
![Page 35: Future of Java EE with Java SE 8](https://reader031.vdocuments.site/reader031/viewer/2022020717/54b4ed914a795994458b46a6/html5/thumbnails/35.jpg)
35
NetBeans 8 supported JDK 8
![Page 36: Future of Java EE with Java SE 8](https://reader031.vdocuments.site/reader031/viewer/2022020717/54b4ed914a795994458b46a6/html5/thumbnails/36.jpg)
36
Startup succeededwith NetBeans 8.
![Page 37: Future of Java EE with Java SE 8](https://reader031.vdocuments.site/reader031/viewer/2022020717/54b4ed914a795994458b46a6/html5/thumbnails/37.jpg)
37
Sample Test Application
<EJB>LambdaLogic.java
<CDI Bean> *IndexBean.java
<JSF Facelet> *index.xhtml
*This is just a workaround due to not working Web Services / REST tester
in GlassFish 4.0.1b5.
![Page 38: Future of Java EE with Java SE 8](https://reader031.vdocuments.site/reader031/viewer/2022020717/54b4ed914a795994458b46a6/html5/thumbnails/38.jpg)
38
Wrote Lambda with (Parallel)Stream in EJB
![Page 39: Future of Java EE with Java SE 8](https://reader031.vdocuments.site/reader031/viewer/2022020717/54b4ed914a795994458b46a6/html5/thumbnails/39.jpg)
39
Wrote CDI Bean for Calling EJB
![Page 40: Future of Java EE with Java SE 8](https://reader031.vdocuments.site/reader031/viewer/2022020717/54b4ed914a795994458b46a6/html5/thumbnails/40.jpg)
40
Wrote CDI Bean for Calling EJB
![Page 41: Future of Java EE with Java SE 8](https://reader031.vdocuments.site/reader031/viewer/2022020717/54b4ed914a795994458b46a6/html5/thumbnails/41.jpg)
41
Results
Both Succeeded.
![Page 42: Future of Java EE with Java SE 8](https://reader031.vdocuments.site/reader031/viewer/2022020717/54b4ed914a795994458b46a6/html5/thumbnails/42.jpg)
42
Really?
![Page 43: Future of Java EE with Java SE 8](https://reader031.vdocuments.site/reader031/viewer/2022020717/54b4ed914a795994458b46a6/html5/thumbnails/43.jpg)
43
Tested Fork/Join Framework
withWebLogic Server 12.1.2
(yet Java EE 6)
![Page 44: Future of Java EE with Java SE 8](https://reader031.vdocuments.site/reader031/viewer/2022020717/54b4ed914a795994458b46a6/html5/thumbnails/44.jpg)
44
Just a kiddingcodes…
![Page 45: Future of Java EE with Java SE 8](https://reader031.vdocuments.site/reader031/viewer/2022020717/54b4ed914a795994458b46a6/html5/thumbnails/45.jpg)
45
???
![Page 46: Future of Java EE with Java SE 8](https://reader031.vdocuments.site/reader031/viewer/2022020717/54b4ed914a795994458b46a6/html5/thumbnails/46.jpg)
46
Just removedthe EJB annotation,
turn to POJO
![Page 47: Future of Java EE with Java SE 8](https://reader031.vdocuments.site/reader031/viewer/2022020717/54b4ed914a795994458b46a6/html5/thumbnails/47.jpg)
47
Works !?Why?????
![Page 48: Future of Java EE with Java SE 8](https://reader031.vdocuments.site/reader031/viewer/2022020717/54b4ed914a795994458b46a6/html5/thumbnails/48.jpg)
48
Let’s Checkthe EJB 3.2 Specification
![Page 49: Future of Java EE with Java SE 8](https://reader031.vdocuments.site/reader031/viewer/2022020717/54b4ed914a795994458b46a6/html5/thumbnails/49.jpg)
49
EJB 3.2 Spec don’t allowed Manual Multithreading
Still not allowed.Oh…
![Page 50: Future of Java EE with Java SE 8](https://reader031.vdocuments.site/reader031/viewer/2022020717/54b4ed914a795994458b46a6/html5/thumbnails/50.jpg)
50
Parallel Stream isimplemented with
Fork/Join Framework !
Wow!!
![Page 51: Future of Java EE with Java SE 8](https://reader031.vdocuments.site/reader031/viewer/2022020717/54b4ed914a795994458b46a6/html5/thumbnails/51.jpg)
51
Parallel Stream Uses Fork/Join Framework
Fork/Join framework was introduced in Java SE 7– Not supported in EJB container.
Parallel Stream uses fork/join framework in its implementation– Might not be supported in EJB 3.2 container in EE 7– Some complicated case might not be worked correctly
Exception management case JTA with container managed transaction in parallel loop case @Asynchronous method call in parallel loop Differed transaction isolation level method calling Security management etc.
![Page 52: Future of Java EE with Java SE 8](https://reader031.vdocuments.site/reader031/viewer/2022020717/54b4ed914a795994458b46a6/html5/thumbnails/52.jpg)
52
Conclusion
All Java EE 7 app servers are not supported SE 8 yet, but some simple case are usable with 8.
Many limitation are still existing for applying SE toEE 7, but useful new functions must be improve the stage of your enterprise.
Go Ahead!
Ready to apply SE 8for the Java EE!
8
![Page 53: Future of Java EE with Java SE 8](https://reader031.vdocuments.site/reader031/viewer/2022020717/54b4ed914a795994458b46a6/html5/thumbnails/53.jpg)
53
Information
Come and Join Us!
![Page 54: Future of Java EE with Java SE 8](https://reader031.vdocuments.site/reader031/viewer/2022020717/54b4ed914a795994458b46a6/html5/thumbnails/54.jpg)
54
Thank you for listening
![Page 55: Future of Java EE with Java SE 8](https://reader031.vdocuments.site/reader031/viewer/2022020717/54b4ed914a795994458b46a6/html5/thumbnails/55.jpg)
55
Q&A