Remastering Legacy Java - Java Community Process€¦ · 1995 1996 1998 2001 J2SE 1.2/Java Plugin...
Transcript of Remastering Legacy Java - Java Community Process€¦ · 1995 1996 1998 2001 J2SE 1.2/Java Plugin...
2019.5.15
Kenji Kazumura
Remastering Legacy Java
Copyright 2019 FUJITSU LIMITED0
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
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
※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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
DemoPOC
Copyright 2019 FUJITSU LIMITED21
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
Copyright 2019 FUJITSU LIMITED