Best of Open Source 2011

Die beste Software für Anwendungsentwicklung

25.09.2011 von Patrick Hagn
Jeder Jahr prämiert unsere Schwesterpublikation Infoworld die Beste Open-Source-Software. Wir zeigen die Sieger im Bereich Anwendungsentwicklung.
Und die Gewinner sind ...
Foto: Infoworld

Open Source ist bei der Anwendungsentwicklung unverzichtbar. Leider sind viel mehr gute Tools am Markt, als hier Erwähnung finden können. Bei der Auswahl der Gewinner hat sich Infoworld ganz auf die heißen Trends konzentriert: serverseitiges JavaScript, NoSQL-Datenbanken, Code für Touchscreen-Devices, verteilte Datenverarbeitung, Versionskontrollsysteme und kontinuierliche Integration. Zudem sollen die besten Frameworks für PHP- und Python-Webentwicklung geehrt werden.

Auf den folgenden Seiten präsemtieren wir Ihnen die Gewinner.

CakePHP

CakePHP

Unter den PHP-Web-Frameworks bot CakePHP laut Infoworld die beste Balance zwischen Quantität der Funktionen und Benutzerfreundlichkeit. CakePHP-Anwendungen benötigen nur geringen Konfigurationsaufwand und die ausgezeichnete Auswahl an Kommandozeilen-Tools reduziert die erforderliche Zeit, um eine Anwendung zu bauen, auf ein Minimum. Das heißt, der einzige Konfigurationsschritt ist die Festlegung der Verbindungsparameter zum Datenbankserver. Cake PHP ordnet die Models zu Datenbanktabellen und erstellt das Methodengerüst. Auf Wunsch können sogar Tests für einzelne Bereiche erstellt werden.

CakePHP bietet Schnellzugriffe für die Wiederverwendung von Code, Helfer, die die Verwendung von AJAX vereinfachen, und auch Empfehlungen für die Sicherung Ihrer Webseite an. Damit ist klar, warum sich Cake PHP in der Nutzergemeinde so großer Beliebtheit erfreut.

CoffeeScript

CoffeeScript

Einige Programmierer gestalten ihren Code mit jeder Menge runder und geschwungener Klammern, weil dadurch klar werden soll, welche Logik hinter den Programmzeilen steckt. Andere empfinden sie eher als lästig und lassen keine Gelegenheit aus, sie zu vermeiden. An diese Gruppe wendet sich CoffeeScript.

CoffeScript ist ein JavaScript-Compiler, der dem Code zu einfacherer Lesbarkeit verhelfen will. Außerdem können Programme mit weniger Quellcode geschrieben werden. Ohne die geschwungenen Klammern und Strichpunkte sieht der Code gar nicht aus wie JavaScript, verhält sich jedoch genauso. Und nach dem Compilieren werden die knackigen CoffeeScript-Befehle wieder zu lupenreinem JavaScript.

Wer sich an den Compiler gewöhnt hat, kann sich nach kurzer Einarbeitungszeit durchaus Arbeitszeit einsparen. Experimentierfreudige können CoffeeScript in Echtzeit auf der Anbieterhomepage ausprobieren.

Git

Git

Git hat das einst populäre CVS abgelöst (Concurrent Versions System). Ursprünglich für die Quellcode-Verwaltung des Linux-Kernels entwickelt, ist die freie Software Git inzwischen der beste Freund vieler Programmierer in Sachen verteilte Versionsverwaltung. Positiv hervorzuheben ist der schnelle Zugriff auf die Dateihistorie sowie die Möglichkeit, sehr schnell neue Entwicklungszweige (branching) hervorzubringen und diese auch wieder zu verschmelzen (merging).

Bei Git gibt es keinen zentralen Server. Jeder Benutzer besitzt eine lokale Kopie des gesamten Repositories, inklusive der Versionsgeschichte (history). So können die meisten Aktionen lokal und ohne Netzwerkzugriff ausgeführt werden. Es wird nicht zwischen lokalen Entwicklungszweigen und Entwicklungszweigen entfernter Repositories unterschieden. Obwohl es keinen technischen Unterschied zwischen verschiedenen Repositories gibt, gilt die Kopie, auf die von einer Projekt-Homepage aus verwiesen wird, häufig als das „offizielle Repository”.

Die Popularität von Git wird durch Hosting-Unternehmen wie GitHub noch verstärkt. Dort lagern mittlerweile knapp drei Millionen Git-Repositories, wo Nutzer Code austauschen können.

Apache Hadoop

Hadoop

Hadoop ist ein freies, in Java geschriebenes Framework für skalierbare, verteilt arbeitende Software und unter dem Dach der Apache Software Foundation angesiedelt. Damit wird es für jedermann möglich, intensive Rechenprozesse mit großen Datenmengen bis in den Petabyte-Bereich auf einem Rechnerverbund durchzuführen. Die Initialzündung für das Projekt war der MapReduce-Algorithmus von Google. Unter den Nutzern finden sich prominente Namen wie Facebook, AOL, IBM oder Yahoo.

Zu Hadoop existieren mittlerweile fruchtbare Erweiterungen, die noch mehr aus dem Projekt herausholen. Das Hadoop Distributed File System (HDFS) ist ein Masterknoten für eingehende Anfragen. Wenn das nicht reicht, helfen Datenbanken wie Cassandra und HBase die Daten innerhalb eines Hadoop-Clusters zu verwalten. Ausgefeiltere Abfragen sind mit Hive möglich.

Hudson und Jenkins

Hudson/Jenkins

Hudson ist, genau wie Jenkins, ein System zur kontinuierlichen Integration in agilen Softwareprojekten. Die Hauptarbeit leistete der Entwickler Kohsuke Kawaguchi, der das Projekt seinerzeit für Sun Microsystems ins Leben rief. Nach der Übernahme von Sun durch Oracle verließ er das Unternehmen. Kawaguchi führt Hudson nun unter dem neuen Namen Jenkins weiter, weil Oracle die Namensrechte hält und selbst weiterentwickeln will. Diese Entwicklung hat jedoch keinen Einfluss auf den genialen Code der Anwendung.

Hudson/Jenkins bringt Intelligenz in Versionskontrollsysteme und ist zudem mit Plugins erweiterbar. Immer wenn neuer Code eingecheckt wird, prüfen Helferlein die Einträge, fahren Tests und stellen das Ergebnis übersichtlich in einer entsprechend colorierten Webseite dar. Somit können auch Außenstehende den Projekterfolg oder -misserfolg nachvollziehen. Wehe dem, der unsauberen Code einbringt.

jQuery Mobile und Sencha Touch

jQuery Mobile und Sencha Touch

Smartphone-Enthusiasten sagen schon das Ende von Laptops und Desktop-PCs voraus. Ungeachtet dieser Annahme kommen Webdesigner nicht mehr umhin, Inhalte an die kleinen Displays anzupassen und für Touchscreen-Bedienung zu optimieren. Dabei leistet jQuery Mobile gute Dienste. Basierend auf jQuery und jQuery UI macht es für mobile Webseiten Menüs, Buttons, Formulare, Schaltflächen und Grafiken möglich, die mit HTML-Divs und -Spans arbeiten. jQuery analysiert die einzelnen Divs und stellt sie dann als Baumstruktur dar, wie sie auf dem Smartphone-Display funktionieren. Später läuft alles in JavaScript.

Sencha Touch verfolgt einen anderen Ansatz. Sencha-Entwickler arbeiten in JavaScript und das Tool schreibt HTML-Code heraus. Sencha Touch basiert vollständig auf HTML5, Javascript sowie CSS3 und wartet mit einer einfachen Verwaltung für Touch-Ereignisse sowie einer umfassenden GUI-Bibliothek auf. Die Firma Sencha, die von den Machern der bewährten Javascript-Bibliotheken "jQTouch", "ExtJS", und "Raphaël" gegründet wurde, bietet das Framework unter der GPLv3-Lizenz an.

MongoDB

Mongo DB

Mongo DB ist eine NoSQL-Datenbank, die unter der Affero General Public Lizenz (AGPL) erscheint. Genau genommen führt die Bezeichnung NoSQL als Abgrenzung von SQL zu Missverständnissen. NoSQL steht nicht für "kein SQL", sondern für "Not only SQL", also nicht nur SQL. Dadurch ist der Begriff zwar einprägsam, aber unklar.

Mongo DB ist in C++ geschrieben, arbeitet hochperformant und sehr stabil. Die Dokument-orientierte Datenbank bietet UTF-8 Encoding und plattformübergreifende Unterstützung. Binärdateien sind für Windows, Linux, OS X, und Solaris erhältlich. Mongo DB beherrscht unter anderem Master-Slave, Sharding und bietet mächtige Management-Tools sowie hilfreiche GUIs.

Node.Js

Node.js

Node.js ist eine bei Web-Entwicklern zunehmend beliebte Plattform, die JavaScript-Programmierung auf die Server Side verlagert. Konkret handelt es sich um ein eventgetriebenes I/O-Framework auf Basis der "V8"-Engine aus Googles Browser "Chrome". Mit Node.js läuft der JavaScript-Code nicht im Browser, sondern auf dem Server. Das Projekt zielt auf Echtzeit-Web-Anwendungen ab. Ursprünglich wurde Node für Linux-Systeme entwickelt, ist aber bald als .exe für Microsoft Windows und die Cloud-Plattform Azure erhältlich.

Ein großer Vorteil von Node.Js ist, dass alle Anfrage an die Web-Anwendung in nur einem Thread behandelt werden können. Ein einzelner Thread verbraucht etwa 2 MB Speicher. Das scheint bei einer Desktop-App durchaus vertretbar, geht aber schnell ins bodenlose, wenn man für jede Anfrage an die Webseite einen neuen Thread aufmacht.

Web2py

Web2py

Web2py hat ursprünglich als Lern-Tool angefangen. Entwickelt von Massimo Di Pierro, einem Professor für Informatik an der DePaul University, legt es Wert auf ausgefeilte Funktionalität nebst einfacher Handhabung. Di Pierro hat sein Ziel scheinbar erreicht. Web2py ist ein intelligentes, gut durchdachtes Framework, das mit geringem Ressourcenhunger, übersichtlichen APIs, ausführlicher Dokumentation und einer ausgezeichneten Administrations-Oberfläche zu begeistern weiß.

Auch in Sicherheitsbelangen kann Web2py punkten. Standardmäßig werden Mechanismen zur Prüfung von Nutzereingaben und Maskierung von Ausgaben eingesetzt, wodurch viele gängige Angriffe wie SQL-Injections oder Cross-Site Scripting verhindert werden können.