MASTER THESIS Web Frameworks Comparison Concerning The
Total Page:16
File Type:pdf, Size:1020Kb
CHARLES UNIVERSITY, PRAGUE FACULTY OF MATHEMATICS AND PHYSICS MASTER THESIS Tomáš Mihalčin Web Frameworks Comparison Concerning the Efficiency of Development Department of Software Engineering Advisor: RNDr. Tomáš Bureš, Ph.D. Study Program: Computer Science I would like to thank my advisor Tomáš Bureš for his valuable comments and advice. I would also like to thank my consultant Tomáš Krátky. His help and professional experience in the web frameworks area helped me to improve the quality of this thesis. I hereby certify that I wrote the thesis by myself, using only the referenced sources. I agree with making the thesis publicly available. Prague, 22.7.2007 Tomáš Mihalčin Názov práce: Porovnanie webových frameworkov s ohľadom na efektivitu vývoja Autor: Tomáš Mihalčin Katedra: Katedra softwarového inžinierstva Vedúci diplomovej práce: RNDr. Tomáš Bureš, Ph.D. e-mail vedúceho: [email protected] Abstrakt: Skoro všetky podnikové webové projekty sú dnes implementované v nejakom webovom frameworku. Frameworky sa líšia vo filozofii, vlastnostiach a podpore pre ostatné populárne frameworky a technológie. Cieľ tejto práce bolo porovnať frameworky Struts 2, Tapestry a Spring WebFlow a dať aplikačným programátorom a architektom prehľad o procese implementácie a zložitosti každého frameworku, aby sa mohli rozhodnúť, ktorý framework si vybrať pre svoj projekt.. Práca definuje kritériá pre porovnanie frameworkov. Porovnanie bolo vykonané na štúdii, ktorá bola implementovaná v Struts 2 a Tapestry a bol vykonaný výskum o možnostiach integrácie Spring WebFlow so Struts 2 a Tapestry. Proces implementácie bol detailne popísaný so všetkými problémami, ktoré sa objavili v implementačnej fáze. Nakoniec boli vykonané merania podľa definovaných kritérii a boli navrhnuté konečné odporúčania. Kľúčové slová: webové frameworky, Struts 2, Tapestry, Spring WebFlow, porovnanie Title: Web Frameworks Comparison Concerning the Efficiency of Development Author: Tomáš Mihalčin Department: Department of Software Engineering Supervisor: RNDr. Tomáš Bureš, Ph.D. Supervisor's e-mail address: [email protected] Abstract: Almost all enterprise web projects today are implemented in some kind of web framework. The frameworks differ in philosophy, features and support for other popular frameworks and technologies. The aim of this thesis was to compare Struts 2, Tapestry and Spring WebFlow frameworks and give the application developers and architects an overview about the implementation process and complexity of each framework to help them decide, which framework to choose for their projects. The thesis defines criteria for the frameworks comparison. The comparison is done on a case study which has been implemented in Struts 2 and Tapestry and research on the integration possibilities of Spring WebFlow with Struts 2 and Tapestry has been done. The implementation process has been described in detail with all the problems that occurred during the implementation phase. Finally, the measurements have been made according to the defined criteria and final recommendations have been proposed. Keywords: web frameworks, Struts 2, Tapestry, Spring WebFlow, comparison Contents 1. Introduction......................................................................................................................................1 1.1. Goals.........................................................................................................................................1 1.2. Structure of the text...................................................................................................................2 2. Frameworks description...................................................................................................................4 2.1. Struts 2......................................................................................................................................4 2.1.1. History...............................................................................................................................4 2.1.2. Architecture.......................................................................................................................4 2.1.3. Example of use..................................................................................................................7 2.1.4. Requirements...................................................................................................................11 2.1.5. Supported Technologies..................................................................................................11 2.2. Tapestry...................................................................................................................................13 2.2.1. History.............................................................................................................................13 2.2.2. Architecture.....................................................................................................................13 2.2.3. Example of use................................................................................................................14 2.2.4. Requirements..................................................................................................................19 2.2.5. Supported Technologies..................................................................................................19 2.3. Spring WebFlow.....................................................................................................................20 2.3.1. History.............................................................................................................................20 2.3.2. Architecture.....................................................................................................................20 2.3.3. Example of use................................................................................................................21 2.3.4. Requirements..................................................................................................................25 2.3.5. Supported Technologies..................................................................................................25 3. Criteria description.........................................................................................................................26 3.1. Benchmarks............................................................................................................................26 3.2. Features...................................................................................................................................28 3.3. Subjective judgement..............................................................................................................28 4. Case study.......................................................................................................................................30 4.1. GUI model..............................................................................................................................30 4.2. Domain model.........................................................................................................................31 4.3. Page flows...............................................................................................................................32 4.4. Modifications..........................................................................................................................34 5. Case study implementation.............................................................................................................36 5.1. Struts 2....................................................................................................................................36 5.1.1. Setup................................................................................................................................36 5.1.2. Implementation...............................................................................................................36 5.2. Tapestry...................................................................................................................................37 5.2.1. Setup................................................................................................................................37 5.2.2. Implementation...............................................................................................................37 5.3. Struts 2 with WebFlow............................................................................................................37 5.4. Tapestry with WebFlow..........................................................................................................39 6. Results............................................................................................................................................40 6.1. Benchmarks............................................................................................................................40 6.1.1. Time spent developing pages..........................................................................................40 6.1.2. Time spent modifying existing application.....................................................................41 6.1.3. The size of written code..................................................................................................42 6.1.4. Size of generated HTML code........................................................................................43