Remastering Legacy Java - Java Community Process€¦ · 1995 1996 1998 2001 J2SE 1.2/Java Plugin...

24
2019.5.15 Kenji Kazumura Remastering Legacy Java Copyright 2019 FUJITSU LIMITED 0

Transcript of Remastering Legacy Java - Java Community Process€¦ · 1995 1996 1998 2001 J2SE 1.2/Java Plugin...

Page 1: Remastering Legacy Java - Java Community Process€¦ · 1995 1996 1998 2001 J2SE 1.2/Java Plugin Java Applet runs on HotJava browser Bundle with Netscape Navigator WebStart ※NPAPI:Netscape

2019.5.15

Kenji Kazumura

Remastering Legacy Java

Copyright 2019 FUJITSU LIMITED0

Page 2: Remastering Legacy Java - Java Community Process€¦ · 1995 1996 1998 2001 J2SE 1.2/Java Plugin Java Applet runs on HotJava browser Bundle with Netscape Navigator WebStart ※NPAPI:Netscape

Fujitsu and Java

Copyright 2019 FUJITSU LIMITED

One of the oldest Java related products vendor

Interstage Application Server since 1998

Interstage Studio

Java EE certified GlassFish base application server

Eclipse base

Including Java for mainframe

classic GUI library for client desktop

1

Page 3: Remastering Legacy Java - Java Community Process€¦ · 1995 1996 1998 2001 J2SE 1.2/Java Plugin Java Applet runs on HotJava browser Bundle with Netscape Navigator WebStart ※NPAPI:Netscape

History of Client Java

Copyright 2019 FUJITSU LIMITED

Client & Server Web

Server ServerJSP/JSF

Server

ClinetBrowser

Applet/Flash

Browser Browser

HTML5・SPA

ReduceClient

Maintenance

IncreaseSecurity Risk

ReduceSecurity Risk

Poor GUI

Rich GUI

Improvepc performanceW3C HTML5

recomendation

ReduceServer Load

IncreaseClient

MaintenanceCost

Server

2

Page 4: Remastering Legacy Java - Java Community Process€¦ · 1995 1996 1998 2001 J2SE 1.2/Java Plugin Java Applet runs on HotJava browser Bundle with Netscape Navigator WebStart ※NPAPI:Netscape

※NPAPI:Netscape Plugin Application Programming Interface

Applet

Java Virtual Machine

Web browser

Plugin

NPAPI

Applet

Java Virtual Machine

Web browser

Plugin

NPAPI

1995

1996

19982001

2013

2015

2017

Applet Technology

Copyright 2019 FUJITSU LIMITED

1995

19961998 2001

J2SE 1.2/Java Plugin

Java Applet runs on HotJava browser

Bundle with Netscape Navigator

WebStart

J2SE 1.2/Java Plugin

Java Applet runs on HotJava browser

Bundle with Netscape NavigatorWebStart

1995

1996

19982001

3

Page 5: Remastering Legacy Java - Java Community Process€¦ · 1995 1996 1998 2001 J2SE 1.2/Java Plugin Java Applet runs on HotJava browser Bundle with Netscape Navigator WebStart ※NPAPI:Netscape

1995

1996

19982001

J2SE 1.2/Java Plugin

Java Applet runs on HotJava browser

Bundle with Netscape NavigatorWebStart

※NPAPI:Netscape Plugin Application Programming Interface

Applet

Java Virtual Machine

Web browser

Plugin

NPAPI

2013

2015

2017

Applet Technology

Copyright 2019 FUJITSU LIMITED

US DHS recomendation(disable Plugin)

Google Chromedisable NPAPI

Edge quit NPAPIsupport

FireFox quit NPAPIexcept Flash

Oracle Java 9 deprecate Applet

Oracle Java 6/7remove Plugin

4

Page 6: Remastering Legacy Java - Java Community Process€¦ · 1995 1996 1998 2001 J2SE 1.2/Java Plugin Java Applet runs on HotJava browser Bundle with Netscape Navigator WebStart ※NPAPI:Netscape

How much are there Applet ?

Applet Resources

Copyright 2019 FUJITSU LIMITED

Fujitsu Customers # of client pc

A Company 90,000

B Company 70,000

C Company 54,000

D Company 21,000

E Company 5,000

F Company 3,500

G Company 3,000

H Company 3,000

Total 249,500

5

Page 7: Remastering Legacy Java - Java Community Process€¦ · 1995 1996 1998 2001 J2SE 1.2/Java Plugin Java Applet runs on HotJava browser Bundle with Netscape Navigator WebStart ※NPAPI:Netscape

1

Migration Plans

Copyright 2019 FUJITSU LIMITED

Use Applet

2 Use JSP/JSF

3 use HTML5/JavaScript

JavaServer Faces

until end of IE11

Not so much used ?

favorite!?

6

Page 8: Remastering Legacy Java - Java Community Process€¦ · 1995 1996 1998 2001 J2SE 1.2/Java Plugin Java Applet runs on HotJava browser Bundle with Netscape Navigator WebStart ※NPAPI:Netscape

Jakarta EE survey (used API)

Copyright 2019 FUJITSU LIMITED

Java Persistence API(JPA)

Java API for Restful WebServices (JAX-RS)

Servlet

Enterprise JavaBeans(EJB)

Java Transition API(JTA)

JavaServer Pages(JSP)

JavaServer Faces(JSF)

※https://jakarta.ee/news/2018/04/24/jakarta-ee-community-survey/

76.23%

75.73%

59.39%

51.14%

47.31%

39.39%

33.63%

JSP/JSF are not used so much7

Page 9: Remastering Legacy Java - Java Community Process€¦ · 1995 1996 1998 2001 J2SE 1.2/Java Plugin Java Applet runs on HotJava browser Bundle with Netscape Navigator WebStart ※NPAPI:Netscape

Migration Technologies

Copyright 2019 FUJITSU LIMITED

DukeScriptJava app runs on browser without Pluginhttps://dukescript.com/

jproJavaFX app runs on browserhttps://www.jpro.io

JSweetTranspiler from Java to JavaScripthttp://www.jsweet.org/

8

Page 10: Remastering Legacy Java - Java Community Process€¦ · 1995 1996 1998 2001 J2SE 1.2/Java Plugin Java Applet runs on HotJava browser Bundle with Netscape Navigator WebStart ※NPAPI:Netscape

Transpiler

Copyright 2019 FUJITSU LIMITED

Change source code in a languageto same code in a different language

Difference between transpiler and compiler

COBOL source C sourcetranspiler

Machine code

9

Page 11: Remastering Legacy Java - Java Community Process€¦ · 1995 1996 1998 2001 J2SE 1.2/Java Plugin Java Applet runs on HotJava browser Bundle with Netscape Navigator WebStart ※NPAPI:Netscape

Legacy language• Fortran → C (f2c)• C++ → C (cfront)

JavaScript (altJS)• TypeScript → JavaScript• CoffeeScript → JavaScript

Legacy to JavaScript• Java → JavaScript (GWT, JSweet)• Haskell → JavaScript (GHCJS)

Examples of transpiler

Copyright 2019 FUJITSU LIMITED10

Page 12: Remastering Legacy Java - Java Community Process€¦ · 1995 1996 1998 2001 J2SE 1.2/Java Plugin Java Applet runs on HotJava browser Bundle with Netscape Navigator WebStart ※NPAPI:Netscape

pros

• Need not know JavaScript

• Easy to migration of legacy Java app

• IDE support

cons

• Rapid frontend technology

• API mismatch

Java→JavaScript transpiler

Copyright 2019 FUJITSU LIMITED11

Page 13: Remastering Legacy Java - Java Community Process€¦ · 1995 1996 1998 2001 J2SE 1.2/Java Plugin Java Applet runs on HotJava browser Bundle with Netscape Navigator WebStart ※NPAPI:Netscape

JSweet

Copyright 2019 FUJITSU LIMITED

Java → TypeScript(JavaScript) transpiler• http://jsweet.org

Syntax Mapper• Only Syntax conversion • Use JavaScript API in Java code

Resolve existing problems of transpiler

Application

JavaScript API(Candy)

JavaScript implseparation

Java source

12

Page 14: Remastering Legacy Java - Java Community Process€¦ · 1995 1996 1998 2001 J2SE 1.2/Java Plugin Java Applet runs on HotJava browser Bundle with Netscape Navigator WebStart ※NPAPI:Netscape

Existing transpiler (API conversion)

Copyright 2019 FUJITSU LIMITED

Input Java source

Button button = new Button();

button.setLabel(“click me”);

transpile

Output JavaScript

var button = document.createElement(”button”);

button.innerText = “click me”;

Need not modify Java source

13

Page 15: Remastering Legacy Java - Java Community Process€¦ · 1995 1996 1998 2001 J2SE 1.2/Java Plugin Java Applet runs on HotJava browser Bundle with Netscape Navigator WebStart ※NPAPI:Netscape

JSweet transpiler (Syntax Mapper)

Copyright 2019 FUJITSU LIMITED

Input Java source

Button button = new Button();

button.setLabel(“click me”);

transpile

Output TypeScript

let button : HTMLButtonElement= document.createElement(”button”)

button.innerText = “click me”;

Modify Javasource

Modified Java sourceHTMLButtonElement button =

document.createElement(StringTypes.button);button.innerText = “click me”;

Syntax Mapper

API conversion

14

Page 16: Remastering Legacy Java - Java Community Process€¦ · 1995 1996 1998 2001 J2SE 1.2/Java Plugin Java Applet runs on HotJava browser Bundle with Netscape Navigator WebStart ※NPAPI:Netscape

New problem

Copyright 2019 FUJITSU LIMITED

Need source modification before transpilation

Application

JavaScript implseparation

Javasource

Common Library(Candy)Modified code

No modification

Good for systems using common library/framework

Resolve by Candy

JavaScript API(Candy)

15

Page 17: Remastering Legacy Java - Java Community Process€¦ · 1995 1996 1998 2001 J2SE 1.2/Java Plugin Java Applet runs on HotJava browser Bundle with Netscape Navigator WebStart ※NPAPI:Netscape

JSweet (practical way)

Copyright 2019 FUJITSU LIMITED

Input Java source

Button button = new Button();

button.setLabel(“click me”);

public class Button extends JButton {public void setLabel(String label) {

this.label = label;}

No modification

for app

Modify only library

(API conversion)

public class Button {public Button {

button = document.createElement(StringTypes.button);

}public void setLable(String label);

button.innerText = label;}

transpile

Button button = new Button();

button.setLabel(“click me”);

Syntax Mapper

16

Page 18: Remastering Legacy Java - Java Community Process€¦ · 1995 1996 1998 2001 J2SE 1.2/Java Plugin Java Applet runs on HotJava browser Bundle with Netscape Navigator WebStart ※NPAPI:Netscape

Bridge between Java and JavaScript• There are 1744 Candy registered (as of 2018/5)

http://www.jsweet.org/candies-releases/

• Can create your own

Candy types• Java Candy:

common Java library can be usedby JSweet

• JavaScript Candy:bridge to existingJavaScript

Application

JavaScript impl

Common Library(Candy)

JavaScript API(Candy)

Candy (JSweet library)

Copyright 2019 FUJITSU LIMITED17

Page 19: Remastering Legacy Java - Java Community Process€¦ · 1995 1996 1998 2001 J2SE 1.2/Java Plugin Java Applet runs on HotJava browser Bundle with Netscape Navigator WebStart ※NPAPI:Netscape

System of Company A

Copyright 2019 FUJITSU LIMITED

Summary of system Requirements22K LoC AppletCreated more than 10years agoUse Fujitsu GUI product

Migrate to JavaScript with less cost and timeMust be same as before for Looks and operation

18

Page 20: Remastering Legacy Java - Java Community Process€¦ · 1995 1996 1998 2001 J2SE 1.2/Java Plugin Java Applet runs on HotJava browser Bundle with Netscape Navigator WebStart ※NPAPI:Netscape

Fujitsu product for Client

Copyright 2019 FUJITSU LIMITED

Application(Java)

JBKGUI SpreadBean

JRE(AWT/coreAPI)

Web browser

Java Virtual Machine

provide button,label,frame and dialogfor Java GUI application

JBK Plugin

Run applet on Web browser*JBK: J Business Kit

Spread functionssimilar to Excel

for Java application

19

Page 21: Remastering Legacy Java - Java Community Process€¦ · 1995 1996 1998 2001 J2SE 1.2/Java Plugin Java Applet runs on HotJava browser Bundle with Netscape Navigator WebStart ※NPAPI:Netscape

afterbefore

Applet transformation

Copyright 2019 FUJITSU LIMITED

Applet(Java)

JBKGUI SpreadBean

JRE(AWT/coreAPI)

Application(JavaScript)

JBKGUI(JavaScript)

Spread(JavaScript) Java

basecoreAPIJavaScript

frameworkspreadlibrary

AWT

Web browser Web browser

Java Virtual MachineJavaScript engine

jQueryAngularJS

SlickGridWijmo

JBK Plugin

20

Page 22: Remastering Legacy Java - Java Community Process€¦ · 1995 1996 1998 2001 J2SE 1.2/Java Plugin Java Applet runs on HotJava browser Bundle with Netscape Navigator WebStart ※NPAPI:Netscape

DemoPOC

Copyright 2019 FUJITSU LIMITED21

Page 23: Remastering Legacy Java - Java Community Process€¦ · 1995 1996 1998 2001 J2SE 1.2/Java Plugin Java Applet runs on HotJava browser Bundle with Netscape Navigator WebStart ※NPAPI:Netscape

Result

Copyright 2019 FUJITSU LIMITED

LoC of two windows

LoC%auto

total manual auto

A window 6,102 63 6,039 99.0%

B window 4,764 44 4,720 99.1%

common 11,789 849 10,940 92.8%

total 22,655 956 21,699 95.8%

manual: need to modify for transpiler

High auto transformationby Candy of Fujitsu product

22

Page 24: Remastering Legacy Java - Java Community Process€¦ · 1995 1996 1998 2001 J2SE 1.2/Java Plugin Java Applet runs on HotJava browser Bundle with Netscape Navigator WebStart ※NPAPI:Netscape

Copyright 2019 FUJITSU LIMITED