Move from J2EE to Java EEotndnld.oracle.co.jp/ondemand/javaday2014/pdf/C4-JavaDay... ·...
Transcript of Move from J2EE to Java EEotndnld.oracle.co.jp/ondemand/javaday2014/pdf/C4-JavaDay... ·...
#jdt2014-C4
Move from J2EE to Java EEMay 22, 2014Hirofumi IwasakiFinancial Service Department, Development Unit, Rakuten, Inc.http://www.rakuten.co.jp/
#jdt2014-C4
2
Speaker Biography Hirofumi Iwasaki
– Group Manager, Technology Manager– Financial Service Department, Development Unit,
Rakuten, Inc. 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: JJUG CCC Spring (2014), WebLogic roundtable (2012-2013), etc.– twitter: @HirofumiIwasaki (English)
#jdt2014-C4
3
#jdt2014-C4
4
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!
#jdt2014-C4
5
#jdt2014-C4
6
#jdt2014-C4
7
#jdt2014-C4
8
#jdt2014-C4
9
J2SE 1.2.2JDK 1.1.8
JDK 8JDK 7
#jdt2014-C4
10
J2EE 1.2 Java EE 7Java EE 6
#jdt2014-C4
11
#jdt2014-C4
12
Case Study of “J2EE” Era Systems in 2014
Developed in 2001 - 2006
Our systems is…
Based on J2EE 1.3 - 1.4With many EOL open source libsWorking on EOL app serverToo old to move to latest Java EE
#jdt2014-C4
13
Not Too Late!!Move On to Java EE!!
#jdt2014-C4
14
Standard specifications for application servers (except for MS).
What's Java EE
Commercial
Open Source
etc.
Java EE Specification
To make assurance double sure
Liberty Profile etc.
+
#jdt2014-C4
15
Differences Between the Ages in Real Systems2014 (To-Be) 2006 2001
EE Specs Java EE 6, 7 J2EE 1.4 J2EE 1.2SE Specs JDK 7, 8 J2SDK 1.4 J2SDK 1.3Web JSF 2.0, 2.2
(inc. Facelet) Struts 1.3 / 2
+ JSP 2.0+ JSTL 1.1
Struts 1.1+ JSP 1.1 +commons taglib
Rich Client JavaFX 8 SWT Swing (JFC)Business Logic EJB 3.1, 3.2 Spring FW
POJO Struts Action
EJB 1.1 POJO Struts Action
Data Access JPA 2.0, 2.1 Hibernate iBATIS
Original JDBC wrapper
Logging Apache Log4J SLF4J + Logback
Apache Log4J commons logging
Jakarta Log4J
Almost all can implement with standard specs,except for logging.
#jdt2014-C4
16
Java EE Application Servers VersionsVendor App Server EE 1.4
(2003-) EE 5(2006-)
EE 6(2009-)
EE 7(2013-)
Open Source GlassFish - 2.x 3.x 4.0Oracle 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.0Fujitsu Interstage 9.0,9.1 9.2,10.x,11.0 11.1 -Hitachi Cosminexus 7.x 8.x 9.x -
The de facto version is still EE 6
#jdt2014-C4
17
Java SE Support Status of Java EE App ServersVendor App Server EE 6 (2009 -) EE 7 (2013-)
Ver. SE Ver. Ver. SE Ver.Open Source GlassFish 3.x SE 7 4.0 SE 7Oracle 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, SE 8Fujitsu Interstage 11.1 SE 6, SE 7 - -Hitachi Cosminexus 9.x SE 7 - -
SE 8 is not readyfor almost all servers
*
* WebLogic 12.1.1 only
#jdt2014-C4
18
Changes ofthe Components
#jdt2014-C4
19
Rich Clients(with business logics)
Web Presentation(with business logics)
Business Logic(no presentations)
Typical Usage of J2EE 1.2 in 2001
Data AccessOriginal JDBC wrapper
EJBJakarta Struts
DBs
JTA
Automatic Transaction
MessagingJMS MQ
ConnectionRMI-IIOP
OtherServers
EMailMTAJavaMail
Call
Call
Call
Call
Call
CallSwing (JFC)
#jdt2014-C4
20
Business Logic(no presentations)
Data AccessWeb Presentation
Rich Clients
Typical Usage of J2EE 1.4 in 2006
Hibernate
SpringFramework
Apache Struts
DBs
JTA
Automatic Transaction
MessagingJMS MQ
ConnectionRMI-IIOP
OtherServers
EMailMTAJavaMail
JAX
Call
Call
Call
Call
Call
CallSWT
#jdt2014-C4
21
Rich Clients
Web Presentation Business Logic(no presentations)
Typical Usage of Java EE 6 – 7 in 2014
Data AccessJPA
EJBJSF
DBs
Java FX JTA
Automatic Transaction
MessagingJMS MQ
ConnectionRMI-IIOP
OtherServers
EMailMTAJavaMail
JAX
Call
Call
Call
Call
Call
Call
#jdt2014-C4
22
Changes ofthe Development
Environments
#jdt2014-C4
23
Changes of the OS in Enterprise System Devs
J2EE 1.2in 2001
J2EE 1.4in 2006
Java EE 7in 2014
#jdt2014-C4
24
J2EE 1.2in 2001
J2EE 1.4in 2006
Java EE 7in 2014
Changes of the IDEs in Enterprise System Devs
Use NetBeans 8 or IntelliJ 13.1 for EE 7 + SE 8
#jdt2014-C4
25
Heavy Changes ofthe Environmentsfrom 2001 to 2014
#jdt2014-C4
26
Question:Do you stay in stillJ2EE 1.4 in 2006In your systems?
#jdt2014-C4
27
Expected Answer:No (of course not!)
#jdt2014-C4
28
Yes? Really?Catch up to 2014 ASAP,
or die.
#jdt2014-C4
29
Zero-Day VulnerabilitiesIn EOL Struts 1.3.10
* From http://www.lac.co.jp/security/alert/2014/04/24_alert_01.html
#jdt2014-C4
30
#jdt2014-C4
31EOL
#jdt2014-C4
32
By the Way,Move Forwardto 2014 StylesTODAY!
#jdt2014-C4
33
Basic Case Study:Struts 1.x JSF 2.2
#jdt2014-C4
34
Rich Clients(with business logics)
Web Presentation(with business logics)
Business Logic(no presentations)
Target Tier (in 2001)
Data AccessOriginal JDBCwrapper
EJBJakarta Struts
DBs
Swing (JFC) JTA
Automatic Transaction
MessagingJMS MQ
ConnectionRMI-IIOP
OtherServers
EMailMTAJavaMail
Call
Call
Call
Call
Call
Call
#jdt2014-C4
35
Rich Clients
Web Presentation Business Logic(no presentations)
Target Tier (in 2014)
Data AccessJPA
EJBJSF
DBs
Java FX JTA
Automatic Transaction
MessagingJMS MQ
ConnectionRMI-IIOP
OtherServers
EMailMTAJavaMail
JAX
Call
Call
Call
Call
Call
Call
#jdt2014-C4
36
The JavaServer Faces (JSF) 2 is Standard web framework of the Java EE 7 and 6 Re-Born as JSF 2 in Java EE 6
– Please forget the useless JSF 1.x (Java EE 5) if you know.
JSF 2.0 changes (in EE 6):– Added @ViewScoped backing bean lifecycle.– Introduced new HTML page renderer ‘Facelet’.
JSF 2.2 changes (in EE 7):– Updated with renewed HTML friendly tags.– Changed the backing bean from JSF managed beans to CDI.– Introduced auto XSRF avoiding functions
#jdt2014-C4
37
JSF 2.2! Welcome!!
Finally we can make enterprise web applications only with Java EE standard specifications, JSF.– Good-bye, JSP!!– So long, Struts!!– Take care, Commons!!
* Recommended 2.2 or later
37
#jdt2014-C4
38
<Facelet>Index.xhtml
IndexBean- userName+ load()+ action()
Front View & Backing Bean
Page loading
Show the property’s valueof backing bean
#jdt2014-C4
39
<Facelet>Index.xhtml
IndexBean- userName+ load()+ action()
Submit(post back)
Front View & Backing Bean
#jdt2014-C4
40
Page Transition<Facelet>
index.xhtml
IndexBean- id+ load()+ submitClick()
<Facelet>next.xhtml
NextBean- id+ load()
(1) Pageredirection
(2) Pass datavia ‘flash’
#jdt2014-C4
41
Page Transition<Facelet>
index.xhtml
IndexBean- id+ load()+ submitClick()
<Facelet>next.xhtml
NextBean- id+ load()
Transit tonext page
#jdt2014-C4
42
So Easy to Make!
Try it TODAY!
#jdt2014-C4
43
Make newproject
Select “Maven > Web Applications”
Select “Properties”after project creation
#jdt2014-C4
44
Add the “JavaServer Faces”and select up the JSF 2.2
Change pattern from “/faces/*.xhtml” to “*.xhtml”for simple & easy operations
#jdt2014-C4
45
Open the “pom.xml”Modify “javaee-web-api” (web profile)to “javaee-api” (full profile)
#jdt2014-C4
46
Deleteold JSP
Add CDI backing beanfrom here
Make backingbean for Facelet
#jdt2014-C4
47
Add backing bean annotationsand implement Serializable interface
Add getters andsetters
Add @PostConstructmethod for pageload operations
#jdt2014-C4
48
Set the placeholderfor backing bean property
Input Facelet using code completion of NetBeans
Set the action methodfor submit button
#jdt2014-C4
49
Press the button,run the backing bean
Just push the run button,compile, archiving anddeploying to Java EE server automatically
#jdt2014-C4
50
Advanced Topics:Differences BetweenStruts 1.x and JSF 2.2
#jdt2014-C4
51
<<JSP>>View1
<<JSP>>View 2
Action1
+ action()<<JSP>>
View 3
Action2
+ action()
ActionForm1- fields+ validate()
ActionForm2- fields+ validate()
OperateAction
Build Next View
OperateAction
BuildNext View
Per Action Operation
struts-config.xml
#jdt2014-C4
52
<Facelet>View 1
Backing1- fields+ load()+ action()
<Facelet>View 2
Backing2- fields+ load()+ action()
<Facelet>View 3
Backing3- fields+ load()+ action()
Front View&
Backing BeanPer View Operation
#jdt2014-C4
53
Paradigm Changing:Action to Page
#jdt2014-C4
54
How to Migrate?
#jdt2014-C4
55
Paradigm Changing - Simple
<<JSP>>View1
<<JSP>>View 2
Action1+ action()
<<JSP>>View 3
Action2+ action()
ActionForm1- fields+ validate()
ActionForm2- fields+ validate()
OperateAction
Build Next View
OperateAction
BuildNext View
<Facelet>View 1 Backing1
- fields+ load()+ action()
<Facelet>View 2 Backing2
- fields+ load()+ action()
<Facelet>View 3 Backing3
- fields+ load()+ action()
Front View& Backing Bean
#jdt2014-C4
56
One Action ClassParadigm Changing - Simple
Event Operation
Next PageInitialization
Backing Bean Action Method
Event Operation
Backing Bean @PostConstruct Method
Page Initialization
Sprit to Two Parts
#jdt2014-C4
57
Paradigm Changing – Complicated
<JSP>[Button1][Button2]
Button1Action+ action()
OperateAction
Build Next View
<Facelet>[Button1][Button2]
Backing1- fields+ load()+ button1()+ button2()
<Facelet>View 2-1
<Facelet>View 2-2
<JSP>View 2-1
<JSP>View 2-2
Button1Action+ action()
#jdt2014-C4
58
Re-Architecture: JSP to FaceletSections Struts 1.1 JSF 2.2HTML5 Don’t know ReadyForm tag <html:form
action=“/actionName”><form jsf:id=“form>
Text output <bean:writename=“bean.prop”/>
#{bean.prop}
Hidden <html:hiddenproperty=“prop”/>
<input type=“hidden”jsf:value=“#{bean.prop}”/>
Text Field <html:textproperty=“prop”/>
<input type=“text”jsf:value=“#{bean.prop}”/>
PasswordField
<html:passwordproperty=“prop”/>
<input type=“password”jsf:value=“#{bean.prop}”/>
Check Box <html:multiboxproperty=“prop”/>
<input type=“checkbox”
Submit <html:submit /> <input type=“submit”jsf:action=“#{bean.action()}”/>
#jdt2014-C4
59
Re-Architecture: Common ProcessingActionServlet+ process()
SpecialServlet+ process()
Filter+ process()
SpecialFilter+ process()
PhaseListener+ process()
SpecialPhLsnr+ process()
Filter+ process()
SpecialFilter+ process()
faces-config.xml
web.xml
No change
OverridePhase Listener,NOT Faces Servlet
#jdt2014-C4
60
Slightly Complicated,but Simple
Just try it!
#jdt2014-C4
61
Appendix: Additional ResourcesFor newbies
Awesomefor startups
Nice essentialreferences
#jdt2014-C4
62
Appendix: Additional Resources
http://www.slideshare.net/iwasakihirofumi/java-ee-7-jsf-22
How to useJSF 2.2 correctly
#jdt2014-C4
63
Appendix: Additional Resources
http://www.slideshare.net/iwasakihirofumi/future-of-java-ee-with-java-se-8
EE 7 with SE 8
#jdt2014-C4
64
Conclusion J2EE era is so old to migrate, but with
many challenges you can do it. Differences between Struts 1.x and
JSF 2.2 are huge, the paradigm changes
Try it with NetBeans 8 and GlassFish 4 today! It’s FREE!
Go Ahead, Ride the Wave!
Make our enterprise future with Java EE!
#jdt2014-C4
65