Ausarbeitung
Total Page:16
File Type:pdf, Size:1020Kb
Seminararbeit Webframeworks Konstantin Tkachuk 13. Juli 2014 Prof. Dr. Jan Jurjens¨ Lehrstuhl 14 Software Engineering Fakult¨at Informatik Technische Universit¨at Dortmund Otto-Hahn-Straße 14 44227 Dortmund http://www-jj.cs.uni-dortmund.de/secse Konstantin Tkachuk [email protected] Matrikelnummer: 140399 Studiengang: Master Informatik Sicherheit und Compliance im Softwareengineering und der Industrie Thema: Webframeworks Eingereicht: 13. Juli 2014 Betreuer: Daniel Poggenpohl Prof. Dr. Jan Jurjens¨ Lehrstuhl 14 Software Engineering Fakult¨at Informatik Technische Universit¨at Dortmund Otto-Hahn-Straße 14 44227 Dortmund i ii Ehrenw¨ortliche Erkl¨arung Ich erkl¨are hiermit ehrenw¨ortlich, dass ich die vorliegende Arbeit selbstst¨andig ange- fertigt habe; die aus fremden Quellen direkt oder indirekt ubernommenen¨ Gedanken sind als solche kenntlich gemacht. Die Arbeit wurde bisher keiner anderen Prufungsbeh¨ ¨orde vorgelegt und auch noch nicht ver¨offentlicht. Dortmund, den 13. Juli 2014 Konstantin Tkachuk iii Abstrakt Die Nutzung von Webframeworks bei der Entwicklung von komplexen Web Appli- kationen ist heute unvermeidbar. Leider macht die enorme Menge der existierenden Frameworks die Wahl des richtigen zu einem nicht trivialen Problem. Im Rahmen dieser Arbeit wird dem Leser ein Uberblick¨ uber¨ die Gemeinsamkeiten und Un- terschiede der Webframeworks GWT, Vaadin und Apache Wicket verliehen und es werden passende Anwendungsbereiche vorgestellt. Das Thema Sicherheit wird dabei besonders hervorgehoben. iv INHALTSVERZEICHNIS Inhaltsverzeichnis 1 Einleitung 1 1.1 Motivation und Hintergrund . .1 1.2 Ziele der Arbeit . .1 1.3 Aufbau der Arbeit . .2 2 Google Web Toolkit 3 2.1 Uberblick¨ .................................3 2.2 Installation . .3 2.3 Aufbau einer GWT-Applikation . .4 2.4 Features..................................5 2.4.1 Development Mode und Production mode . .5 2.4.2 Internationalization . .6 2.4.3 Client-Server Kommunikation . .6 2.4.4 JUnit Testing . .6 2.4.5 Google App Engine . .6 2.5 Anwendungsbereich . .6 3 Vaadin 7 3.1 Uberblick¨ .................................7 3.2 Installation . .7 3.3 Aufbau einer Vaadin-Applikation . .8 3.4 Features..................................8 3.4.1 Abstraktion . .8 3.4.2 WYSIWYG Editor . .9 3.4.3 Add-On Kompatibilit¨at .....................9 3.4.4 Simples Deployment . .9 3.5 Anwendungsbereich . .9 4 Apache Wicket 11 4.1 Uberblick¨ ................................. 11 4.2 Installation . 11 4.3 Aufbau einer Wicket-Applikation . 12 4.4 Features.................................. 12 4.4.1 Trennung von Darstellung und Logik . 12 4.4.2 Wiederverwendbarkeit . 13 4.4.3 Sicherheit ............................. 13 4.4.4 Server-Zustand Management . 13 INHALTSVERZEICHNIS v 4.5 Anwendungsbereich . 13 5 Vergleich 14 5.1 Gemeinsamkeiten . 14 5.2 Unterschiede . 15 5.3 Sicherheit ................................. 15 5.3.1 GoogleWebToolkit ....................... 15 5.3.2 Vaadin............................... 16 5.3.3 Apache Wicket . 16 5.3.4 Sicherheit in anderen Webframeworks . 16 6 Zusammenfassung 18 6.1 Zusammenfassung . 18 6.2 Ausblick.................................. 18 Literaturverzeichnis 21 vi INHALTSVERZEICHNIS KAPITEL 1. EINLEITUNG 1 1 Einleitung In diesem Kapitel werden die Motivation und der Hintergrund der Arbeit erl¨autert, sowie die Ziele der Arbeit zusammengefasst. Außerdem ist hier ein kurzer Uberblick¨ uber¨ den Aufbau der Arbeit enthalten. 1.1 Motivation und Hintergrund Im Laufe der Zeit ist deutlich geworden, dass das Internet eine immer wichtigere Rolle im allt¨aglichen Leben des Menschen einnimmt. Was noch vor 30 Jahren kaum existierte und vor 20 Jahren eine neuartige Kuriosit¨at war, hat sich bis heute zu einem Massentrend weiterentwickelt. Ob Computer, Handy oder auch nur ein We- cker, der seine Uhrzeit mit einer Quelle im Internet abgleicht - es gibt immer weniger elektronische Ger¨ate, die keinen Zugang zu dem Internet haben. Mit der wachsenden Verbreitung des Internets steigt auch die Notwendigkeit schnell und effizient sichere Web Applikationen zu entwickeln. Mit der steigenden Anzahl der Applikationen sind viele Gemeinsamkeiten bemerkt worden - Arbeitsbl¨ocke, die in verschiedenen Programmen immer wieder vorkamen. Um redundanten Code und wiederholtes L¨osen der selben Probleme zu vermeiden wurden sogenannte "Web Ap- plication Frameworks", kurz Webframeworks, entwickelt. Ziel von Webframeworks ist es den sich wiederholenden Arbeitsteil zu uberneh-¨ men und zus¨atzliche Abstraktionsebenen hinzuzufugen,¨ um die Implementierung von komplexen Anwendungen zu erleichtern. Da verschiedene Typen von Weban- wendungen oft auch verschiedene Arbeitsteile gemeinsam haben, wurden mit der Zeit sehr viele verschiedene Webframeworks entwickelt. Es gibt bereits weit uber¨ 50 Webframeworks [9][21] , alle mit eigenen Besonderheiten und sinnvollen Anwen- dungsgebieten, und mit hoher Wahrscheinlichkeit wird diese Zahl in den kommenden Jahren nur wachsen. Gerade fur¨ Anf¨anger im Gebiet Web-Programmierung erschwert diese enorme Aus- wahl den Einstieg. Deswegen hat man die existierenden Frameworks nach verschie- denen Kriterien charakterisiert und sortiert. 1.2 Ziele der Arbeit Ziel dieser Arbeit ist es drei verschiedene Webframeworks (Google Web Toolkit, Vaa- din und Apache Wicket) kurz vorzustellen und dem Leser zu vermitteln, in welchen 2 1.3. AUFBAU DER ARBEIT Anwendungsf¨allen welches Webframework eher zu empfehlen ist. Insbesondere soll auf das Thema Sicherheit tiefer eingegangen werden. 1.3 Aufbau der Arbeit Die Arbeit ist in 6 Kapitel eingeteilt. In der Einleitung werden die Motivation und der Hintergrund der Arbeit erl¨autert, sowie die Ziele der Arbeit zusammengefasst. Außerdem ist hier ein kurzer Uberblick¨ uber¨ den Aufbau der Arbeit enthalten. Im 2. bis 4. Kapitel werden die Webframeworks Google Web Toolkit, Vaadin und Apache Wicket vorgestellt. Sie werden jeweils unter den anderen existierenden Web- frameworks eingeordnet; Es werden die Haupt-Features vorgestellt und empfohlene Anwendungsbeispiele werden kurz angesprochen. Dabei wird angenommen, dass dem Leser die Grundlagen von Webprogrammierung bereits bekannt sind, und er mit Be- griffen, wie z.B. Javascript, (X)HTML, Servlet und web.xml vertraut ist. Im 5. Kapitel wird das Thema Sicherheit nochmal explizit angesprochen und die vorgestellten Webframeworks werden in Bezug auf dieses Kriterium untereinander verglichen. Schließlich wird die geleistete Arbeit im letzten Kapitel zusammengefasst. Es wird kritisch analysiert, ob die Ziele der Arbeit erreicht wurden und es wird ein Ausblick gegeben, wie zukunftige¨ Baustellen aussehen k¨onnten. KAPITEL 2. GOOGLE WEB TOOLKIT 3 2 Google Web Toolkit In diesem Kapitel wird das Google Web Toolkit[18] (Version 2.6), kurz GWT, vor- gestellt. Es wird unter den anderen existierenden Webframeworks eingeordnet, die Haupt-Features werden vorgestellt und empfohlene Anwendungsbeispiele werden kurz angesprochen. Dieses Kapitel soll nicht ein Tutorial fur¨ Anf¨anger sein - diese sind in großer Zahl online zu finden. Falls Interesse besteht, l¨asst sich z.B. das Tutorial auf der Homepage von GWT[20] empfehlen. 2.1 Uberblick¨ Das Webframework GWT ist in erster Linie fur¨ Client-seitige Entwicklung ange- passt. Zentrales Feature dieses Frameworks ist die M¨oglichkeit Java-Code zu Javas- cript zu kompilieren. Hierzu wurde eine eigene API[16] entwickelt, wo bestimmte Java-Klassen gewissen Javascript-Elementen entsprechen. Ein spezieller Compiler wird fur¨ die Transformation zu Javascript benutzt. Diese Tatsache macht konkretes, detailliertes Wissen von Javascript nicht mehr not- wendig fur¨ das Erstellen von Web Applikationen. Stattdessen lassen sich Webpro- gramme komplett in Java schreiben, mit Benutzung von allen ublichen¨ Java Mittlen, wie Objektorientierung, Einbindung von Dritt-Frameworks und anderen. Zus¨atzlich werden alle Cross-Browser Kompatibilit¨atsprobleme von GWT behan- delt. Realisiert wurde dies durch Einsatz von Deferred Binding[17]. Dabei werden mehrere Versionen des Codes, optimiert fur¨ verschiedene Browser, zur Compile-Zeit generiert und nur die dem Browser des Clients entsprechende Version wird zur Lauf- zeit tats¨achlich geladen. Dies spart ebenfalls eine riesige Menge Zeit, da der Entwickler sich nun auf die Logik konzentrieren kann, ohne eine spezielle Version der Benutzeroberfl¨ache fur¨ verschiedene Browser erstellen zu mussen.¨ 2.2 Installation Der Aufwand fur¨ die Installation von GWT ist minimal. Es gibt ein spezielles Eclipse- Plugin[12], dass uber¨ das Eclipse-Marketplace innerhalb von Minuten installiert wer- den kann. Es enth¨alt alle n¨otigen Tools um sofort mit dem Programmieren zu starten. 4 2.3. AUFBAU EINER GWT-APPLIKATION GWT bietet auch ein Interface fur¨ Nutzer an, die Eclipse nicht nutzen. Allerdings wird es in dieser Arbeit nicht n¨aher behandelt. 2.3 Aufbau einer GWT-Applikation Das Eclipse-Plugin bietet einen Wizard zum Erstellen von neuen GWT Projekten an. Dabei werden alle ben¨otigten Ordner und ein triviales Beispiel-Programm, was nur geringfugig¨ komplexer als das klassische HelloWorld-Beispiel ist, mit erstellt. Somit l¨asst sich ein neues Projekt sofort ausfuhren,¨ um ein besseres Verstehen der Funktionsweise zu erlangen. In Abbildung 2.1 ist die Eclipse-Ansicht ei- nes derartigen Projekts mit dem Namen My- WebApp dargestellt. Es ist die Struktur des Projekts zu sehen. Wie gewohnt, befindet sich der Java-Code im Ordner src, die JU- nit Tests im Ordner test. Im Ordner war fin- det man die Dateien, die direkt mit Webpro- grammierung zu tun haben.