Programmieren im Web 2.x Ein Überblick über die Webentwicklung im Jahre 2011 Johannes Leers 26. März 2012
1 Motivation 2 Web-Frameworks 3 Mobile Computing 4 WebGL 5 Cloud Computing 6 Fazit
Native Programme pro Plattform programmieren und/oder kompilieren viele Update-Mechanismen: Kompilieren, Packaging & Freigabeprozesse
Web-Programme Einmal programmieren, auf allen Plattformen lauffähig (im Idealfall) Zusätzlicher Vorteil bei mobilen Endgeräten Ein Update-Mechanismus: Schnelles Deployment im Hintergrund
Vorteile von Frameworks Programmiergerüst Konzentration auf Kernprobleme Weniger Code = Weniger Fehler
Vorteile von Frameworks Ajax ohne Framework (reines JavaScript) v a r a n f r a g e = n u l l ; t r y { a n f r a g e = new A c t i v e X O b j e c t ( MSXML2.XMLHTTP ) ; } c a t c h ( E r r o r ) { t r y { a n f r a g e = new A c t i v e X O b j e c t ( M i c r o s o f t.xmlhttp ) ; } c a t c h ( E r r o r ) { t r y { a n f r a g e = new XMLHttpRequest ( ) ; } c a t c h ( E r r o r ) { a l e r t ( F e h l e r beim Erzeugen des O b j e k t e s ) ; } } } a n f r a g e. open ( GET, / t e s t. c g i, t r u e ) ;
Vorteile von Frameworks Ajax mit Framework (jquery) $.get("/test.cgi");
Ruby on Rails Ruby Yukihiro Matsumoto Einflüsse: Perl, Smalltalk, Eiffel, Ada und Lisp 1995 unter GPL veröffentlicht 2001 englische Dokumentation Bis 2004 außerhalb Japans Nischen-Dasein
Ruby on Rails Ruby on Rails 2004 unter MIT-Lizenz veröffentlicht David Heinemeier Hansson, 37signals Aus Projektmanagement- Software Basecamp extrahiert
Ruby on Rails Model, View, Controller * View Controller * Model 1979: Trygve Reenskaug Applications Programming in Smalltalk-80: How to use Model View Controller Separation of Concerns Direkte Verbindung * Indirekte Verbindung (z.b. über Observer)
Ruby on Rails Convention over Configuration Auch: Coding by Convention Jede Anwendung kommt ohne Konfiguration aus z.b. Namenskonventionen Vorteile für neue Entwickler in gewachsenen Projekten Wurzeln dieses Konzepts: 1997, Java-Bibliotheken
Ruby on Rails ActiveRecord User.create(:name=>"Johannes") user = User.find(1) user.delete Design Pattern für Object-Relational-Mapping Active Record geprägt von Martin Fowler, 2003 Ein Active Record ist ein Objekt, das einer Zeile in einer Datenbank-Tabelle entspricht. Es kapselt den Datenbankzugriff und fügt Domain-Logik hinzu.
Ruby on Rails REST Architekturstil: Representational state transfer 2000 von Roy Thomas Fielding beschrieben Die Schnittmenge zwischen Systemen auf eine überschaubare, standardisierte Menge von Aktionen reduzieren POST, PUT, GET, DELETE Variable wird z.b. über ein Formular im Request gesendet
Andere Web-Frameworks Ocsigen (OCaml) 2007, LGPL Diderot Universität (Paris) Server- und Client-Code ist OCaml Statische Typisierung: Wohlgetypte Programme stürzen niemals ab Typsystem: Form-Elemente passen immer zu den Datenbank-Objekten (z.b. Checkbox: Boolean)
Andere Web-Frameworks Opa (Opa) 2011, AGPL MLState (Zusammenschluss von Forschern rund um Online-Softwareentwicklung) Kein Web-Framework im klassischem Sinne Wird in eine ausführbare Datei kompiliert Server- und Client-Code ist in Opa programmiert Impedance Mismatch verhindern
Motivation Browserbasierte ersetzen native Anwendungen Mobile Endgeräte fast immer online 2010: 16% mobiles Internet 44% nutzen Facebook mobil durch HTML5-Elemente Look & Feel wie native Anwendungen
Vier Ansätze mobiler Frontends Cascading Style Sheets (CSS) einfach umzusetzen ineffizient bezüglich Datentransfers Mobile Web-Frameworks z.b. Sencha Touch oder jquery Mobile kein Zugriff auf Geräte-APIs Hybride Anwendungen z.b. PhoneGap oder AppCelerator Titanium Wrapper für Web-Anwendungen Zugriff auf Geräte-APIs möglich App-Stores Native Anwendungen Android: Java, ios: Objective-C mit Rhodes plattformübergreifend
Einführung Ermöglicht 3D im Browser Vorgänger 1994: Virtual Reality Markup Language Khronos Group und Mozilla, 2009 Basiert auf OpenGL Offener Standard vom W3C 2011: Fester Bestandteil aller großen Browser Sonderstellung Microsoft Internet Explorer
Technik HTML5-Element canvas für freies Zeichnen JavaScript ist Bindeglied zum Browser Eigene Spezifikation für Binärdaten Typed Arrays Hoher Programmieraufwand Etablierung mehr oder weniger kompletter WebGL-Frameworks
Einführung Achtziger Jahre: Mainframes Keine Installation auf lokalem Rechner nötig Frühjahr 2011: 70% der Unternehmen arbeiten an Cloud-Strategie Wichtigster Antriebsfaktor: Kostenersparnis Kosten durch Verbrauch (z.b. pro User/ Monat)
Software as a Service 2010, Apache Software License Vereinigt viele Schnittstellen zu Cloud-Anbietern in einer REST-API Client-Bibliotheken für viele Programmiersprachen (u.a. C, C++, Ruby) Jede Cloud hat einen Adapter (driver)
Danke Fazit: Ist-Zustand?