Move from J2EE to Java EE

Preview:

DESCRIPTION

Many enterprise systems build at 2000 - 2010 uses J2EE old specifications with Struts web framework. But nowadays J2EE improved as Java EE, with standard web framework JSF 2. With this slides you can learn how to migrate old-styled J2EE + Struts systems to sophisticated Java EE with JSF 2 specification. This slides was used in Java Day Tokyo 2014 C4 window, presented by the author. And some slides is specialized for Japanese enterprise systems, but the theme is very standard and for almost all J2EE users in the world.

Citation preview

#jdt2014-C4

Move from J2EE to Java EE

May 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

1999 -> 2014

#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

1999 -> 201415 YEARS

#jdt2014-C4

6

15 YEARS

#jdt2014-C4

7

15 YEARS

#jdt2014-C4

8

15 YEARS

#jdt2014-C4

12

Case Study of “J2EE” Era Systems in 2014

Developed in 2001 - 2006

Our systems is…

Based on J2EE 1.3 - 1.4

With many EOL open source libs

Working on EOL app server

Too 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 Systems

2014 (To-Be) 2006 2001

EE Specs Java EE 6, 7 J2EE 1.4 J2EE 1.2

SE Specs JDK 7, 8 J2SDK 1.4 J2SDK 1.3

Web 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 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 version is still EE 6

#jdt2014-C4

17

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, SE 8

Fujitsu 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

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

31

EOL

#jdt2014-C4

32

By the Way,Move Forwardto 2014 Styles

TODAY!

#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

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

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

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

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 Facelet

Sections Struts 1.1 JSF 2.2

HTML5 Don’t know Ready

Form tag <html:form action=“/actionName”>

<form jsf:id=“form>

Text output <bean:write name=“bean.prop”/>

#{bean.prop}

Hidden <html:hidden property=“prop”/>

<input type=“hidden” jsf:value=“#{bean.prop}”/>

Text Field <html:text property=“prop”/>

<input type=“text” jsf:value=“#{bean.prop}”/>

PasswordField

<html:password property=“prop”/>

<input type=“password” jsf:value=“#{bean.prop}”/>

Check Box <html:multibox property=“prop”/>

<input type=“checkbox”

Submit <html:submit /> <input type=“submit” jsf:action=“#{bean.action()}”/>

#jdt2014-C4

59

Re-Architecture: Common Processing

ActionServlet

+ 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 Resources

For newbies

Awesomefor startups

Nice essentialreferences

#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

Q&A

Recommended