Modernizing Java Ser ver Pages By Transformationpost.queensu.ca/~trd/research/pres/WSE2005.pdf ·...
Transcript of Modernizing Java Ser ver Pages By Transformationpost.queensu.ca/~trd/research/pres/WSE2005.pdf ·...
![Page 1: Modernizing Java Ser ver Pages By Transformationpost.queensu.ca/~trd/research/pres/WSE2005.pdf · CSER - Consortium for Software Engineering Research Dynamic Web Pages Multiple Technologies](https://reader033.fdocuments.us/reader033/viewer/2022060311/5f0abcb57e708231d42d1824/html5/thumbnails/1.jpg)
Modernizing Java Server Pages By
TransformationS h a n n o n X u
T h o m a s D e a nQ u e e n ’ s U n i v e r s i t y
![Page 2: Modernizing Java Ser ver Pages By Transformationpost.queensu.ca/~trd/research/pres/WSE2005.pdf · CSER - Consortium for Software Engineering Research Dynamic Web Pages Multiple Technologies](https://reader033.fdocuments.us/reader033/viewer/2022060311/5f0abcb57e708231d42d1824/html5/thumbnails/2.jpg)
Background CSER - Consortium for Software Engineering Research Dynamic Web Pages
Multiple Technologies - CGI, shtml, JSP, ASP, .NET Mixing Code and Data
Ok for small projects, seems to be proving a detriment to larger projects
Separate Concerns: Application Code and Graphics Design
Abstract User Interface [Schneider 2001] Custom Tags (JSP)
replaces code with abstract tags
![Page 3: Modernizing Java Ser ver Pages By Transformationpost.queensu.ca/~trd/research/pres/WSE2005.pdf · CSER - Consortium for Software Engineering Research Dynamic Web Pages Multiple Technologies](https://reader033.fdocuments.us/reader033/viewer/2022060311/5f0abcb57e708231d42d1824/html5/thumbnails/3.jpg)
JSP Basics
Mix Java and Template Text Template Text is sent to browser
modified by inline Java HTML, Javascript, Applet Tags, CSS
Java Code + standard Actions <% for (int i = 0; i < bean.titles.length; i++) {
%> <jsp:useBean> forward pages, import classes, declare fields
and methods
![Page 4: Modernizing Java Ser ver Pages By Transformationpost.queensu.ca/~trd/research/pres/WSE2005.pdf · CSER - Consortium for Software Engineering Research Dynamic Web Pages Multiple Technologies](https://reader033.fdocuments.us/reader033/viewer/2022060311/5f0abcb57e708231d42d1824/html5/thumbnails/4.jpg)
Custom Tags<%taglib uri=”xxx” prefix=”mylib”%>…<mylib:cdtitle/>…
<taglib> <uri>xxx</uri> <tag> <name>cdtitle</name/> <tag_class>CdTitle</tag_class> </tag></taglib>
CdTitle.class
![Page 5: Modernizing Java Ser ver Pages By Transformationpost.queensu.ca/~trd/research/pres/WSE2005.pdf · CSER - Consortium for Software Engineering Research Dynamic Web Pages Multiple Technologies](https://reader033.fdocuments.us/reader033/viewer/2022060311/5f0abcb57e708231d42d1824/html5/thumbnails/5.jpg)
Custom Tags<%taglib uri=”xxx” prefix=”mylib”%>…<mylib:cdtitle/>…
<taglib> <uri>xxx</uri> <tag> <name>cdtitle</name/> <tag_class>CdTitle</tag_class> </tag></taglib>
CdTitle.class
![Page 6: Modernizing Java Ser ver Pages By Transformationpost.queensu.ca/~trd/research/pres/WSE2005.pdf · CSER - Consortium for Software Engineering Research Dynamic Web Pages Multiple Technologies](https://reader033.fdocuments.us/reader033/viewer/2022060311/5f0abcb57e708231d42d1824/html5/thumbnails/6.jpg)
Custom Tags<%taglib uri=”xxx” prefix=”mylib”%>…<mylib:cdtitle/>…
<taglib> <uri>xxx</uri> <tag> <name>cdtitle</name/> <tag_class>CdTitle</tag_class> </tag></taglib>
CdTitle.class
![Page 7: Modernizing Java Ser ver Pages By Transformationpost.queensu.ca/~trd/research/pres/WSE2005.pdf · CSER - Consortium for Software Engineering Research Dynamic Web Pages Multiple Technologies](https://reader033.fdocuments.us/reader033/viewer/2022060311/5f0abcb57e708231d42d1824/html5/thumbnails/7.jpg)
Custom Tags<%taglib uri=”xxx” prefix=”mylib”%>…<mylib:cdtitle/>…
<taglib> <uri>xxx</uri> <tag> <name>cdtitle</name/> <tag_class>CdTitle</tag_class> </tag></taglib>
CdTitle.class
![Page 8: Modernizing Java Ser ver Pages By Transformationpost.queensu.ca/~trd/research/pres/WSE2005.pdf · CSER - Consortium for Software Engineering Research Dynamic Web Pages Multiple Technologies](https://reader033.fdocuments.us/reader033/viewer/2022060311/5f0abcb57e708231d42d1824/html5/thumbnails/8.jpg)
Custom Tags<%taglib uri=”xxx” prefix=”mylib”%>…<mylib:cdtitle/>…
<taglib> <uri>xxx</uri> <tag> <name>cdtitle</name/> <tag_class>CdTitle</tag_class> </tag></taglib>
CdTitle.class
![Page 9: Modernizing Java Ser ver Pages By Transformationpost.queensu.ca/~trd/research/pres/WSE2005.pdf · CSER - Consortium for Software Engineering Research Dynamic Web Pages Multiple Technologies](https://reader033.fdocuments.us/reader033/viewer/2022060311/5f0abcb57e708231d42d1824/html5/thumbnails/9.jpg)
Custom Tags<%taglib uri=”xxx” prefix=”mylib”%>…<mylib:cdtitle/>…
<taglib> <uri>xxx</uri> <tag> <name>cdtitle</name/> <tag_class>CdTitle</tag_class> </tag></taglib>
CdTitle.class
![Page 10: Modernizing Java Ser ver Pages By Transformationpost.queensu.ca/~trd/research/pres/WSE2005.pdf · CSER - Consortium for Software Engineering Research Dynamic Web Pages Multiple Technologies](https://reader033.fdocuments.us/reader033/viewer/2022060311/5f0abcb57e708231d42d1824/html5/thumbnails/10.jpg)
Requirements
No Change to Functionality Identical Behaviour
No change to Appearance Same HTML / Javascript is generated
to browser Same web site structure (paths to pages) Keep Code Comments
Maintenance Issue
![Page 11: Modernizing Java Ser ver Pages By Transformationpost.queensu.ca/~trd/research/pres/WSE2005.pdf · CSER - Consortium for Software Engineering Research Dynamic Web Pages Multiple Technologies](https://reader033.fdocuments.us/reader033/viewer/2022060311/5f0abcb57e708231d42d1824/html5/thumbnails/11.jpg)
MuiltiLingualGrammar [Synytskyy03]
HTML Base Grammar
ASPGrammar
![Page 12: Modernizing Java Ser ver Pages By Transformationpost.queensu.ca/~trd/research/pres/WSE2005.pdf · CSER - Consortium for Software Engineering Research Dynamic Web Pages Multiple Technologies](https://reader033.fdocuments.us/reader033/viewer/2022060311/5f0abcb57e708231d42d1824/html5/thumbnails/12.jpg)
MuiltiLingualGrammar [Synytskyy03]
HTML Base Grammar
JSPGrammar
[Li 2004]
![Page 13: Modernizing Java Ser ver Pages By Transformationpost.queensu.ca/~trd/research/pres/WSE2005.pdf · CSER - Consortium for Software Engineering Research Dynamic Web Pages Multiple Technologies](https://reader033.fdocuments.us/reader033/viewer/2022060311/5f0abcb57e708231d42d1824/html5/thumbnails/13.jpg)
MuiltiLingualGrammar [Synytskyy03]
HTML Base Grammar
JSPGrammar
Custom TagGrammar
TLD XMLGrammar
[Li 2004]
[Xu 2005]
![Page 14: Modernizing Java Ser ver Pages By Transformationpost.queensu.ca/~trd/research/pres/WSE2005.pdf · CSER - Consortium for Software Engineering Research Dynamic Web Pages Multiple Technologies](https://reader033.fdocuments.us/reader033/viewer/2022060311/5f0abcb57e708231d42d1824/html5/thumbnails/14.jpg)
Parsing JSP …<table> <%for(i=1;i<10;i++){%> <th><td><%=i%></td></th>
<%}%> </table>…
Interesting
<table>
Interesting
<%for(i=1;i<10;i++){%>
Interesting
<%=i%>
Interesting
<%}%>
Interesting
</table>
![Page 15: Modernizing Java Ser ver Pages By Transformationpost.queensu.ca/~trd/research/pres/WSE2005.pdf · CSER - Consortium for Software Engineering Research Dynamic Web Pages Multiple Technologies](https://reader033.fdocuments.us/reader033/viewer/2022060311/5f0abcb57e708231d42d1824/html5/thumbnails/15.jpg)
Parsing JSP …<table> <%for(i=1;i<10;i++){%> <th><td><%=i%></td></th>
<%}%> </table>…
Interesting
<table>
Interesting
<%for(i=1;i<10;i++){%>
Interesting
<%=i%>
Interesting
<%}%>
Interesting
</table>
![Page 16: Modernizing Java Ser ver Pages By Transformationpost.queensu.ca/~trd/research/pres/WSE2005.pdf · CSER - Consortium for Software Engineering Research Dynamic Web Pages Multiple Technologies](https://reader033.fdocuments.us/reader033/viewer/2022060311/5f0abcb57e708231d42d1824/html5/thumbnails/16.jpg)
Parsing JSP …<table> <%for(i=1;i<10;i++){%> <th><td><%=i%></td></th>
<%}%> </table>…
Interesting
<table>
Interesting
<%=i%>
<%
</table>
}
%>
for(i=1;i<10;i++){
<% %>for_statement
![Page 17: Modernizing Java Ser ver Pages By Transformationpost.queensu.ca/~trd/research/pres/WSE2005.pdf · CSER - Consortium for Software Engineering Research Dynamic Web Pages Multiple Technologies](https://reader033.fdocuments.us/reader033/viewer/2022060311/5f0abcb57e708231d42d1824/html5/thumbnails/17.jpg)
Parsing JSP …<table> <%for(i=1;i<10;i++){%> <th><td><%=i%></td></th>
<%}%> </table>…
Interesting
<table>
Interesting
<%=i%>
<%
</table>
}
%>
for(i=1;i<10;i++){
<% %>for_statement
![Page 18: Modernizing Java Ser ver Pages By Transformationpost.queensu.ca/~trd/research/pres/WSE2005.pdf · CSER - Consortium for Software Engineering Research Dynamic Web Pages Multiple Technologies](https://reader033.fdocuments.us/reader033/viewer/2022060311/5f0abcb57e708231d42d1824/html5/thumbnails/18.jpg)
Parsing JSP …<table> <%for(i=1;i<10;i++){%> <th><td><%=i%></td></th>
<%}%> </table>…
Interesting
<table>
Interesting
<%=i%>
<%
</table>
}
%>
for(i=1;i<10;i++){
<% %>for_statement
![Page 19: Modernizing Java Ser ver Pages By Transformationpost.queensu.ca/~trd/research/pres/WSE2005.pdf · CSER - Consortium for Software Engineering Research Dynamic Web Pages Multiple Technologies](https://reader033.fdocuments.us/reader033/viewer/2022060311/5f0abcb57e708231d42d1824/html5/thumbnails/19.jpg)
Parsing JSP …<table> <%for(i=1;i<10;i++){%> <th><td><%=i%></td></th>
<%}%> </table>…
Interesting
<table>
Interesting
<%=i%>
<%
</table>
}
%>
for(i=1;i<10;i++){
<% %>for_statement
![Page 20: Modernizing Java Ser ver Pages By Transformationpost.queensu.ca/~trd/research/pres/WSE2005.pdf · CSER - Consortium for Software Engineering Research Dynamic Web Pages Multiple Technologies](https://reader033.fdocuments.us/reader033/viewer/2022060311/5f0abcb57e708231d42d1824/html5/thumbnails/20.jpg)
Java statements, expressions and declarations are moved to custom tag classes
HTML code moved out of Java strings
out.println(“<TR><TD>”)
%> <TR><TD> <%
General Approach
![Page 21: Modernizing Java Ser ver Pages By Transformationpost.queensu.ca/~trd/research/pres/WSE2005.pdf · CSER - Consortium for Software Engineering Research Dynamic Web Pages Multiple Technologies](https://reader033.fdocuments.us/reader033/viewer/2022060311/5f0abcb57e708231d42d1824/html5/thumbnails/21.jpg)
Java Bean action elements translated to equivalent Java Code
<jsp:useBean><jsp:getProperty><jsp:setProperty>
JSP Page import directive generates an import statement in the resulting class
<%@page import=”java.sql.ResultSet” %><% import java.sql.ResultSet; %>
General Approach
![Page 22: Modernizing Java Ser ver Pages By Transformationpost.queensu.ca/~trd/research/pres/WSE2005.pdf · CSER - Consortium for Software Engineering Research Dynamic Web Pages Multiple Technologies](https://reader033.fdocuments.us/reader033/viewer/2022060311/5f0abcb57e708231d42d1824/html5/thumbnails/22.jpg)
Normalization
4 General Cases
General Transformation
![Page 23: Modernizing Java Ser ver Pages By Transformationpost.queensu.ca/~trd/research/pres/WSE2005.pdf · CSER - Consortium for Software Engineering Research Dynamic Web Pages Multiple Technologies](https://reader033.fdocuments.us/reader033/viewer/2022060311/5f0abcb57e708231d42d1824/html5/thumbnails/23.jpg)
Case 1– Simple Code<HTML><BODY><% HttpSession s = request.getSession(true); String userId = ((String) s.getValue(“userId”)).trim(); s.putValue(“username”, userId);%></BODY></HTML>
<HTML><BODY><mylib: userSession></mylib:userSession></BODY></HTML>
![Page 24: Modernizing Java Ser ver Pages By Transformationpost.queensu.ca/~trd/research/pres/WSE2005.pdf · CSER - Consortium for Software Engineering Research Dynamic Web Pages Multiple Technologies](https://reader033.fdocuments.us/reader033/viewer/2022060311/5f0abcb57e708231d42d1824/html5/thumbnails/24.jpg)
Case 1b – Simple Code<HTML><BODY><% HttpSession s = request.getSession(true); String userId = ((String) s.getValue(“userId”)).trim();%> Welcome<% s.putValue(“username”, userId); %></BODY></HTML>
<HTML><BODY><mylib: userSession> Welcome</mylib:userSession></BODY></HTML>
![Page 25: Modernizing Java Ser ver Pages By Transformationpost.queensu.ca/~trd/research/pres/WSE2005.pdf · CSER - Consortium for Software Engineering Research Dynamic Web Pages Multiple Technologies](https://reader033.fdocuments.us/reader033/viewer/2022060311/5f0abcb57e708231d42d1824/html5/thumbnails/25.jpg)
Case 2 - Nested Code<HTML><BODY><% HttpSession s = request.getSession(true); String userId = ((String) s.getValue(“userId”)).trim(); s.putValue(“username”, userId);%>Welcome <%= username %></BODY></HTML>
<HTML><BODY><mylib: userSession> Welcome <mylib:userName/> </mylib:userSession></BODY></HTML>
![Page 26: Modernizing Java Ser ver Pages By Transformationpost.queensu.ca/~trd/research/pres/WSE2005.pdf · CSER - Consortium for Software Engineering Research Dynamic Web Pages Multiple Technologies](https://reader033.fdocuments.us/reader033/viewer/2022060311/5f0abcb57e708231d42d1824/html5/thumbnails/26.jpg)
Case 3 – Choice<HTML><BODY><% …
if (condition) {%> HTML TEXT <% } else {%> … }%></BODY></HTML>
![Page 27: Modernizing Java Ser ver Pages By Transformationpost.queensu.ca/~trd/research/pres/WSE2005.pdf · CSER - Consortium for Software Engineering Research Dynamic Web Pages Multiple Technologies](https://reader033.fdocuments.us/reader033/viewer/2022060311/5f0abcb57e708231d42d1824/html5/thumbnails/27.jpg)
Case 3 – Choice<HTML><BODY><% … bool choice = condition; if (choice) {%> HTML TEXT <% } if (!choice) {%> … }%></BODY></HTML>
![Page 28: Modernizing Java Ser ver Pages By Transformationpost.queensu.ca/~trd/research/pres/WSE2005.pdf · CSER - Consortium for Software Engineering Research Dynamic Web Pages Multiple Technologies](https://reader033.fdocuments.us/reader033/viewer/2022060311/5f0abcb57e708231d42d1824/html5/thumbnails/28.jpg)
Case 3 – Choice<HTML><BODY><mylib:checkCondition> <mylib:validCondition> HTML TEXT </mylib:validCondition> <mylib:invalidCondition> </mylib:invalidCondition></mylib:checkCondition></BODY></HTML>
![Page 29: Modernizing Java Ser ver Pages By Transformationpost.queensu.ca/~trd/research/pres/WSE2005.pdf · CSER - Consortium for Software Engineering Research Dynamic Web Pages Multiple Technologies](https://reader033.fdocuments.us/reader033/viewer/2022060311/5f0abcb57e708231d42d1824/html5/thumbnails/29.jpg)
CASE 4 - Iteration<HTML><BODY><% … while(condition){%> HTML TEXT <%}%></BODY></HTML>
<HTML><BODY><mylib:whileCondition> HTML TEXT</mylib:whileCondition></BODY></HTML>
![Page 30: Modernizing Java Ser ver Pages By Transformationpost.queensu.ca/~trd/research/pres/WSE2005.pdf · CSER - Consortium for Software Engineering Research Dynamic Web Pages Multiple Technologies](https://reader033.fdocuments.us/reader033/viewer/2022060311/5f0abcb57e708231d42d1824/html5/thumbnails/30.jpg)
The 4 cases compose to cover all code cases
Case 2 provides basis for nesting
tags are nested, classes are not
classes find the class for the parent tag at runtime using JSP API
Add get/set routines for variables
Composing Cases
![Page 31: Modernizing Java Ser ver Pages By Transformationpost.queensu.ca/~trd/research/pres/WSE2005.pdf · CSER - Consortium for Software Engineering Research Dynamic Web Pages Multiple Technologies](https://reader033.fdocuments.us/reader033/viewer/2022060311/5f0abcb57e708231d42d1824/html5/thumbnails/31.jpg)
Nesting Cases 4,2<HTML><BODY><% … while(condition){%> HTML <%= value %> TEXT <%}%></BODY></HTML>
<HTML><BODY><mylib:whileCondition> HTML <mylib:getValue/> TEXT</mylib:whileCondition></BODY></HTML>
![Page 32: Modernizing Java Ser ver Pages By Transformationpost.queensu.ca/~trd/research/pres/WSE2005.pdf · CSER - Consortium for Software Engineering Research Dynamic Web Pages Multiple Technologies](https://reader033.fdocuments.us/reader033/viewer/2022060311/5f0abcb57e708231d42d1824/html5/thumbnails/32.jpg)
Implementation
TXLSource Transformation LanguageGrammar + Transformation Rules
Markup ApproachIdentify key statements of each case
if statements, while statements (both with HTML text)
propagate markups to include all statements
![Page 33: Modernizing Java Ser ver Pages By Transformationpost.queensu.ca/~trd/research/pres/WSE2005.pdf · CSER - Consortium for Software Engineering Research Dynamic Web Pages Multiple Technologies](https://reader033.fdocuments.us/reader033/viewer/2022060311/5f0abcb57e708231d42d1824/html5/thumbnails/33.jpg)
Implementation
Preprocessing
Grouping
Original JSP
Naming
Postprocesing
Page and TLDClass Gen
TLD Pages Tag Classes
![Page 34: Modernizing Java Ser ver Pages By Transformationpost.queensu.ca/~trd/research/pres/WSE2005.pdf · CSER - Consortium for Software Engineering Research Dynamic Web Pages Multiple Technologies](https://reader033.fdocuments.us/reader033/viewer/2022060311/5f0abcb57e708231d42d1824/html5/thumbnails/34.jpg)
Implementation
Preprocessing
Grouping
Original JSP
Naming
Postprocesing
Page and TLDClass Gen
TLD Pages Tag Classes
Normalization& Lexical Issues
![Page 35: Modernizing Java Ser ver Pages By Transformationpost.queensu.ca/~trd/research/pres/WSE2005.pdf · CSER - Consortium for Software Engineering Research Dynamic Web Pages Multiple Technologies](https://reader033.fdocuments.us/reader033/viewer/2022060311/5f0abcb57e708231d42d1824/html5/thumbnails/35.jpg)
Implementation
Preprocessing
Grouping
Original JSP
Naming
Postprocesing
Page and TLDClass Gen
TLD Pages Tag Classes
Custom Tag Identification
![Page 36: Modernizing Java Ser ver Pages By Transformationpost.queensu.ca/~trd/research/pres/WSE2005.pdf · CSER - Consortium for Software Engineering Research Dynamic Web Pages Multiple Technologies](https://reader033.fdocuments.us/reader033/viewer/2022060311/5f0abcb57e708231d42d1824/html5/thumbnails/36.jpg)
Implementation
Preprocessing
Grouping
Original JSP
Naming
Postprocesing
Page and TLDClass Gen
TLD Pages Tag Classes
Namesfor Tags
![Page 37: Modernizing Java Ser ver Pages By Transformationpost.queensu.ca/~trd/research/pres/WSE2005.pdf · CSER - Consortium for Software Engineering Research Dynamic Web Pages Multiple Technologies](https://reader033.fdocuments.us/reader033/viewer/2022060311/5f0abcb57e708231d42d1824/html5/thumbnails/37.jpg)
Implementation
![Page 38: Modernizing Java Ser ver Pages By Transformationpost.queensu.ca/~trd/research/pres/WSE2005.pdf · CSER - Consortium for Software Engineering Research Dynamic Web Pages Multiple Technologies](https://reader033.fdocuments.us/reader033/viewer/2022060311/5f0abcb57e708231d42d1824/html5/thumbnails/38.jpg)
Implementation
Preprocessing
Grouping
Original JSP
Naming
Postprocesing
Page and TLDClass Gen
TLD Pages Tag Classes
Move to Java
![Page 39: Modernizing Java Ser ver Pages By Transformationpost.queensu.ca/~trd/research/pres/WSE2005.pdf · CSER - Consortium for Software Engineering Research Dynamic Web Pages Multiple Technologies](https://reader033.fdocuments.us/reader033/viewer/2022060311/5f0abcb57e708231d42d1824/html5/thumbnails/39.jpg)
Implementation
Preprocessing
Grouping
Original JSP
Naming
Postprocesing
Page and TLDClass Gen
TLD Pages Tag Classes
RemoveJava
![Page 40: Modernizing Java Ser ver Pages By Transformationpost.queensu.ca/~trd/research/pres/WSE2005.pdf · CSER - Consortium for Software Engineering Research Dynamic Web Pages Multiple Technologies](https://reader033.fdocuments.us/reader033/viewer/2022060311/5f0abcb57e708231d42d1824/html5/thumbnails/40.jpg)
Implementation
Preprocessing
Grouping
Original JSP
Naming
Postprocesing
Page and TLDClass Gen
TLD Pages Tag Classes
Comments
![Page 41: Modernizing Java Ser ver Pages By Transformationpost.queensu.ca/~trd/research/pres/WSE2005.pdf · CSER - Consortium for Software Engineering Research Dynamic Web Pages Multiple Technologies](https://reader033.fdocuments.us/reader033/viewer/2022060311/5f0abcb57e708231d42d1824/html5/thumbnails/41.jpg)
Final Words
Tested on 4 small systems (14 files)
Each case generates separate custom tags
Implementation is a greedy approach
Better separation into tags
Data and Control Flow Analys
Clones
E.g. Session management code
![Page 42: Modernizing Java Ser ver Pages By Transformationpost.queensu.ca/~trd/research/pres/WSE2005.pdf · CSER - Consortium for Software Engineering Research Dynamic Web Pages Multiple Technologies](https://reader033.fdocuments.us/reader033/viewer/2022060311/5f0abcb57e708231d42d1824/html5/thumbnails/42.jpg)
Questions?