Du hast deinen AdBlocker an?

Es wäre ein Traum, wenn du ihn für t3n.de deaktivierst. Wir zeigen dir gerne, wie das geht. Und natürlich erklären wir dir auch, warum uns das so wichtig ist. Digitales High-five, deine t3n-Redaktion

t3n 20

Technologien, die das Web verändern werden: State of the Art

Webentwickler haben derzeit die großartige Aufgabe, die Zukunft des (Arbeits-) Alltags vieler Internetnutzer mitzugestalten. Doch während Anwender mit Techologien wie dem iPad gefühlt in Star Trek TNG angekommen sind, arbeiten Entwickler an vielen Stellen immer noch mit Technologien, die sich seit den 1970er Jahren nicht wesentlich weiter entwickelt haben: SQL, TCP/IP, VI/Emacs, um nur einige zu nennen. Wir werfen einen Blick auf spannendere Technologien, die Entwickler sich unbedingt heute schon anschauen sollten.

Vergleicht man einen aktuellen Browser (zum Beispiel Safari 4.x) mit dem Internet Explorer 6, kann man sich schon wundern. Es ist wirklich erstaunlich, wie sehr der harte Konkurrenzkampf zwischen Apple (Safari), Google (Chrome), Opera und Mozilla (Firefox) um den besten Browser die Technologieentwicklung vorangetrieben hat. Ein Name fehlt: Microsoft – deren Leistung besteht momentan darin, langsam aber sicher wieder zum Rest aufzuschließen und sich nicht mehr mit Händen und Füßen gegen die Innovationen im HTML5-Standard zu wehren.

HTML und das Web der Zukunft

Und so kann man als Entwickler beginnen, die spannenden Technologien, die HTML5 mit sich bringt, auch in echten Projekten zu nutzen. Dadurch werden Webanwendungen noch performanter, noch effizienter, noch hübscher und noch interaktiver.

Offline-Storage [1] beispielsweise, inklusive einer über JavaScript zugänglichen SQL-Datenbank, macht Webanwendungen unabhängig von einer konstanten Verbindung zum Internet.

Websockets [2] hingegen können für Kommunikationsintensive Anwendungen (zum Beispiel Chats, aber auch kollaborative Editoren wie Etherpad) die fehleranfälligen und aufwändig zu verwaltenden COMET-Krücken oder Flash-Wrapper ersetzen.

Die in CSS3 [3] enthaltenen Effekte wie „border-radius“ und „drop-shadow“ machen dagegen das Styling von Webanwendungen leichtgewichtiger und flexibler: Man muss nur noch selten in Photoshop runde Ecken und Schatten ausschneiden. Mit CSS-Transitions (auch CSS3) kann man an vielen Stellen bisher mühsam in JavaScript programmierte Animationen ersetzen. Mit dem Canvas-Element gibt es außerdem endlich eine komfortable Möglichkeit, anspruchsvolle Grafiken in JavaScript direkt zu zeichnen.

Und wenn man über den HTML5-Horizont hinaus schaut, tauchen dort Dinge wie WebGL [4] auf, die es ermöglichen werden, in einem Canvas OpenGL zu verwenden, um 3D-Grafiken mit Hilfe der 3D-Grafikkarte zu rendern. Ist es da wirklich so schlimm, wenn einige wichtige Endgeräte, wie das iPad oder das iPhone, vermutlich niemals Adobes Flash unterstützen werden?

Die Multitouch-Revolution ist unaufhaltsam

In Bezug auf das iPad ergeben sich auch ohne Flash interessante Zukunftsszenarien. Wer schon mal ein iPad in der Hand gehalten hat, ahnt, dass die dort verwirklichte Multitouch-Steuerung eigentlich die Zukunft sein muss. Hat man das iPad benutzt, fühlt sich das Arbeiten mit einem Trackpad oder einer Maus danach doch ziemlich plump und vor allem indirekt an. Dieser Aspekt wird sehr direkte Auswirkungen auf die Arbeit von Entwicklern haben: Multitouch-Oberflächen funktionieren nämlich ganz anders als herkömmliche Eingabegeräte. Auf der einen Seite kann man mit einer Fingerbedienung nicht so präzise „klicken“ wie mit einer Maus – komplexe Menüstrukturen mit mehreren Ebenen oder winzige Buttons sind also keine Option. Auf der anderen Seite ist es eben Multitouch. Kaum ein aktuelles GUI-Framework ist überhaupt darauf ausgelegt, mehrere Eingaben gleichzeitig zu verarbeiten.

Event-basierte Modelle wie das Twisted-Framework in Python  skalieren deutlich einfacher als der synchrone Ansatz.
Event-basierte Modelle wie das Twisted-Framework in Python skalieren deutlich einfacher als der synchrone Ansatz.
Ein nicht weniger wichtiger Aspekt ist, dass das Web allerspätestens mit dem iPad auch in komplett technisch unbeleckten Kreisen (Umgangssprachlich DAUs oder N00bz genannt) angekommen ist. Damit verpufft auch die letzte Möglichkeit, den DAU als unwichtigen Sonderfall zu betrachten. Eine Anwendung muss selbsterklärend und ohne Kenntnisse jahrelang gewachsener Konventionen bedienbar sein. Gerade hier gilt: Hochmut kommt vor dem Fall.

JavaScript auf Abwegen

JavaScript erlebt derzeit ein wahres Comeback. Seit der „Erfindung“ von AJAX durch Jesse James Garret ist dieser von vielen lange als Spielsprache verpönte Mix aus funktionalen und prototypisch-objektorientierten Sprachkonzepten stetig im Aufwind und wird nun plötzlich, überraschenderweise sogar aus Performance-Gründen, auch als Sprache auf dem Server interessant.

Node.js [5], eine von Ryan Dahl vorangetriebene Referenzimplementierung, basiert dabei auf V8 [6], der JavaScript-Runtime/VM aus Chrome, und ist konsequent auf Event-basiertes I/O ausgelegt – ein Modell, das durch das Twisted-Framework in Python [7] und die Eventmachine-Bibliothek [8] in Ruby schon bewiesen hat, dass es deutlich einfacher zu skalieren ist als der alte, synchrone Ansatz. So kann man mit besagtem node.js mit wenig Aufwand hochperformante Server bauen, die beispielsweise keines der üblichen Probleme mit hohen Verbindungszahlen haben.

NOSQL ist ein wichtiger Zukunftstrend. Dokumenten-Datenbanken wie<br />  CouchDB wollen beispielsweise Datenstrukturen näher an den Bedürfnissen<br />  von Webentwicklern abbilden.
NOSQL ist ein wichtiger Zukunftstrend. Dokumenten-Datenbanken wie CouchDB wollen beispielsweise Datenstrukturen näher an den Bedürfnissen von Webentwicklern abbilden.

Das harte Problem der Concurrency

Neben JavaScript existieren ein paar andere Sprachen, die man vor allem wegen der besseren Parallelisierungs- und damit Skalierungs-Konzepte auf dem Schirm haben sollte. Aus dem Java-Lager buhlen vor allem Scala und Clojure um die Aufmerksamkeit, wobei Clojure vor allem LISP-Jünger ansprechen dürfte, während Scala versucht, sich nicht allzu weit von Java zu entfernen. Beide Sprachen orientieren sich auch an funktionalen Konzepten, die sich offensichtlich bewähren, wenn es darum geht, leichtgewichtige Lösungen für die Parallelisierung von Prozessen zu schaffen.

Seiner Zeit gerade auf diesem Gebiet weit voraus war auch Erlang [9], eine von Ericsson-Mitarbeitern in den späten 80ern geschaffene Sprache, die immerhin schon seit 1998 als Open Source verfügbar ist, aber erst in den letzten Jahren bekannter wurde, unter anderem durch den beliebten, weil hoch performanten und stabilen Jabber-Server ejabberd. Durch die mit Erlang mitgelieferte Open Telephony Platform (OTP) [10] ist es relativ einfach, skalierbare und vor allem hoch verfügbare Services zu bauen. Auch wenn die Syntax von Erlang sehr gewöhnungsbedürftig ist, lohnt es sich zumindest, sich die Architekturkonzepte einmal genauer anzusehen, denn dort stecken inzwischen wirklich Jahrzehnte an Erfahrung mit Hochverfügbarkeit drin – Ericsson betreibt mit Erlang vor allem Telefonvermittlungsanlagen [11].

NoSQL und die Zukunft der Persistenz

Ein weiteres Aushängeschild von Erlang ist CouchDB von Damien Katz, einem ehemaligen Lotus-Notes-Entwickler. CouchDB leitet direkt über zu einem weiteren spannenden Zukunftsthema – dem großen Trend NoSQL.

Entstanden aus der Erkenntnis, dass man SQL-Datenbanken wie das ubiquitäre MySQL eigentlich vor allem deswegen nutzt, weil man nichts besseres kennt, ist NoSQL ein Sammelbegriff für eine ganze Reihe von verschiedenen Konzepten für alternative Datenbanken. Die Motivation für die Nutztung derartiger Datenbanksysteme sind ganz unterschiedlicher Natur: Dokumenten-Datenbanken wie CouchDB oder MongoDB nehmen für sich in Anspruch, Datenstrukturen näher an den Bedürfnissen des Webentwicklers abzubilden, in dem sie zum Beispiel komplexe Datenstrukuren wie Listen und Hashes innerhalb eines Datensatzes erlauben und gleichzeitig komplett auf ein festes Datenschema verzichten. So hat man beispielsweise kein Problem mehr mit Datenmigrationen, was jeden Entwickler, der schon einmal eine halbwegs große SQL-Datenbank auf ein neues Schema migrieren musste, freuen wird.

Apache Hadoop führt Queries und Auswertungen verteilt aus.
Apache Hadoop führt Queries und Auswertungen verteilt aus.
Key-Value-Stores wie Redis [12] oder Tokyo Cabinet [13] versuchen, durch besonders hohe Performance zu überzeugen und eignen sich weniger für komplexe Datenstrukturen. Dann gibt es noch Lösungen wie Riak [14] und Cassandra [15], die insbesondere für hoch skalierende Systeme gedacht sind und Replikation weitestgehend automatisieren sowie durch geschicktes Design Konflikte in verteilten Systemen minimieren. Hier ist ein oft genanntes Vorbild das Dynamo-Paper von Amazon [16], die mit SimpleDB [17] auch einen beliebten NoSQL-Vertreter im Stall haben. Sind die Daten ohnehin verteilt in der Cloud vorhanden, liegt es nahe, Queries und Auswertungen auch verteilt zu erledigen. Dafür bieten sich Googles „Map/Reduce“-Algorithmen an. Einige der genannten Systeme bieten derartige Fähigkeiten gleich mit an, ansonsten gibt es mit Apache Hadoop [18] eine Open-Source-Implementierung.

Zukunft wird gemacht

All diesen vorgestellten Lösungen ist gemein, dass sie nicht versuchen, alle Probleme auf einmal zu lösen, sondern sich auf ein spezielles Problemgebiet spezialisieren. Auch hier macht sich ein Meta-Trend bemerkbar: wirklich gute Lösungen sind oft hochspezialisiert – und so wie man Ruby on Rails und seinen Verwandten am Anfang vorgehalten hat, dass sie sich schlecht für das Anbinden von Legacy-Systemen eignen, könnte man CouchDB vorwerfen, dass es keine Transaktionen abbilden kann. Man könnte aber auch einfach schauen, an welchen Stellen man von den Vorteilen eines Systems wie CouchDB profitieren kann und gute Software für die Zukunft bauen.

Links und Literatur

  1. Offline-Storage
  2. Websockets
  3. Roadmap CSS3
  4. WebGL
  5. Node.js
  6. V8
  7. Twisted-Framework in Python
  8. Eventmachine-Bibliothek in Ruby
  9. Erlang
  10. Open Telephony Platform
  11. Video zu Telefonvermittlungsanlagen mit Erlang
  12. Key-Value-Store Redis
  13. Key-Value-Store Tokyo Cabinet
  14. Riak
  15. Cassandra
  16. Dynamo-Paper von Amazon
  17. SimpleDB von Amazon
  18. Apache Hadoop

Finde einen Job, den du liebst

6 Reaktionen
Uwe

Ja, viel Arbeit aber sie wird sich sicher auch rentieren oder nicht?

Antworten
Hannes

da wird wohl noch jede menge Arbeit auf uns zukommen :/ dafür werden die Möglichkeiten welche man hat immer umfangreicher :)

Antworten
Dirk

Ein guter Blog mit tollen Infos. Die Html5 Variante ist klasse.

Antworten
Dieter

Ein wirklich gut geschriebender Artikel. Danke Jan

Antworten
PHP-Bernd

Gut recherchierter Artikel! Leider kämpfe ich noch mit Umlauts und Stabilität bei MongoDB, sonst ist schemafrei natürlich voll doll!

Antworten
Till K.

All die genannten Technologien machen das Arbeiten als Webdesigner wesentlich einfacher. Es geht kaum noch Projekt ohne AJAX umzusetzen. Bei den Browsern ist natürlich im Moment der IE nicht die erste Wahl, jedoch MySQL ist eine alte starke Liebe, die noch keinen Rost angesetzt hat. Was mich interessirt, ob es zukünftig einen Ersatz für die klassische Maus gibt. Vielleicht auch ein Multitouch-Pad? Ich bin gespannt.

Antworten
Bitte melde dich an!

Du musst angemeldet sein, um einen Kommentar schreiben zu können.

Jetzt anmelden

Hinweis

Du hast gerade auf einen Provisions-Link geklickt und wirst in Sekunden weitergeleitet.

Bei Bestellung auf der Zielseite erhalten wir eine kleine Provision – dir entstehen keine Mehrkosten.


Weiter zum Angebot