Your SlideShare is downloading. ×
Future of Java EE with Java SE 8
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Future of Java EE with Java SE 8

5,303

Published on

Happy Java SE 8 was released! But for the Java EE? …

Happy Java SE 8 was released! But for the Java EE?

This materials shows the current status of EE 6/7 with SE 8, and some limitation in current EE 7 app servers with 8.

This session materials is for the Japan Java Users Group (JJUG) CCC 2014 Spring session. #jjgc_ccc #ccc_r11

Published in: Technology, Education
0 Comments
7 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
5,303
On Slideshare
0
From Embeds
0
Number of Embeds
8
Actions
Shares
0
Downloads
113
Comments
0
Likes
7
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Future of Java EE with SE 8 May 18, 2014 Hirofumi Iwasaki Financial Service Department, Development Unit, Rakuten, Inc. http://www.rakuten.co.jp/ Twitter hashtag: #ccc_r11
  • 2. 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)
  • 3. 3 Happy Java 8 Release! But for Java EE ? Useful for EE?
  • 4. 4 Java EE Overview
  • 5. 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. +
  • 6. 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
  • 7. 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! Pandemic Era Integration Era Mess Era (for EE spec) Unite to Single Standard Again!
  • 8. 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) J2SE 1.3 (2000) J2SE 1.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
  • 9. 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
  • 10. 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
  • 11. 11
  • 12. 12 Nice!
  • 13. 13 Excellent!
  • 14. 14 By the Way,
  • 15. 15 Java SE 8 Updates Overview Basic Topics
  • 16. 16 Java SE 8 New Functions
  • 17. 17 Java SE 8 Deleted Functions So long..
  • 18. 18 SE 8 New Feature – Lambda with Stream API List<String> aList = Arrays.asList(new String[]{"a", "b", "c", "d", "e"}); // Normal for (String x : aList) { System.out.println(x); } // Lambda with parallel stream aList.parallelStream().forEachOrdered(x -> System.out.println(x)); Stream API (auto parallel threading) Lambda Expression (just a syntax sugar) Might not work with EE 7
  • 19. 19 SE 8 New Feature – Lambda with Stream API Don’t worry. NetBeans supports you! Automatic Conversion
  • 20. 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)
  • 21. 21 SE 8 New Feature – New Date Time API (Calculation) // Date Calculation Calendar 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 Calculation Calendar 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 Calculation LocalDate threeWAfter = date.plusWeeks(3); LocalDate fourMBefore = date.minusMonths(4); // Time calculation LocalTime sevenHAfter = time.plusHours(7); LocalTime threeMBefore = time.minusMinutes(3); Java 1.2 – Java 7 Java 8 – Simplified, sophisticated style!
  • 22. 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
  • 23. 23 SE 8 New Feature – Type Annotation Improvement
  • 24. 24 SE 8 New Feature – Type Annotation Improvement
  • 25. 25 Java SE 8 applying points for EE 7
  • 26. 26 Rich Clients (no business logics) Web Presentation (no business logics) Business Logic (no presentations) Typical Usage of EE Specs Data Access JPA EJB JSF DBs Java FX JTA Automatic Transaction Messaging JMS MQ Connection RMI-IIOP Other Servers EMail MTAJavaMail JAX Call Call Call Call Call Call
  • 27. 27 Rich Clients (no business logics) Web Presentation (no business logics) Business Logic (no presentations) Typical Usage of EE Specs Data Access JPA EJB JSF DBs Java FX JTA Automatic Transaction Messaging JMS MQ Connection RMI-IIOP Other Servers EMail MTAJavaMail JAX Call Call Call Call Call Call Main stage is here!
  • 28. 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.
  • 29. 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
  • 30. 30 Java SE 8 Updates Overview Advanced Topics
  • 31. 31 Study of Limitation Case with SE 8 in EE 7
  • 32. 32 Let’s take a look of EJB 3.2 (EE 7) with Parallel Stream, with Glassfish 4.0.1 beta.
  • 33. 33 Downloaded from here.
  • 34. 34 NetBeans 8 detected 4.0.1
  • 35. 35 NetBeans 8 supported JDK 8
  • 36. 36 Startup succeeded with NetBeans 8.
  • 37. 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.
  • 38. 38 Wrote Lambda with (Parallel)Stream in EJB
  • 39. 39 Wrote CDI Bean for Calling EJB
  • 40. 40 Wrote CDI Bean for Calling EJB
  • 41. 41 Results Both Succeeded.
  • 42. 42 Really?
  • 43. 43 Tested Fork/Join Framework with WebLogic Server 12.1.2 (yet Java EE 6)
  • 44. 44 Just a kidding codes…
  • 45. 45 ???
  • 46. 46 Just removed the EJB annotation, turn to POJO
  • 47. 47 Works !? Why?????
  • 48. 48 Let’s Check the EJB 3.2 Specification
  • 49. 49 EJB 3.2 Spec don’t allowed Manual Multithreading Still not allowed. Oh…
  • 50. 50 Parallel Stream is implemented with Fork/Join Framework ! Wow!!
  • 51. 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.
  • 52. 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 to EE 7, but useful new functions must be improve the stage of your enterprise. Go Ahead! Ready to apply SE 8 for the Java EE!
  • 53. 53 Information Come and Join Us!
  • 54. 54
  • 55. 55

×