Cappuccino und jQuery im Vergleich

written by Martin HĂ€cker on

Ich beschÀftige mich ja seit einiger Zeit intensiver mit Web-Entwicklung - und da im besondern mit Cappuccino um damit GUIs in WebBrowsern zu bauen.

Cappuccino ist zwei Sachen - eine dĂŒnne Schicht JavaScript die einen Translator implementiert der aus Objective-J (Quasi Objective-C fĂŒr JavaScript) normales JavaScript macht und eine Bibliothek an Objekten die der [Cocoa Bibliothek] von Apple aus dem Gesicht geschnitten ist.

Und Cocoa ist immer noch die schönste und knackigste Bibliothek die ich kenne - allerdings kenne ich auch noch nicht so viele.

Um so spannender fand ich es daher eines der Beispiele des Cappucino Projektes noch einmal in jQuery implementiert zu sehen (Blog dazu)

jQuery ist nÀmlich eine Bibliothek die die Möglichkeiten von JavaScript (Closures!) mal wirklich vollstÀndig ausreizt und soweit ich das beurteilen kann ein Musterbeispiel von richtig gutem JavaScript Code ist.

Auf der anderen Seite ist Cappuccino - eine Sprache die von C portiert wurde, und die daher eben keine Closures einsetzt - weder in der Sprache, noch in der Bibliothek.

Und das rennen fĂ€ngt gut fĂŒr jQuery an - jQuery braucht fĂŒr das gleiche Beispiel nur 45 Zeilen Code, wĂ€hrend Cappuccino mit 400 Zeilen dabei ist - und enthĂ€lt an manchen Stellen sogar noch mehr Bling! (Die Bilder faden schön ein statt einfach nur zu erscheinen)

Schaut man sich die Beispiele genauer an, stellt man fest, dass bei jQuery zu den 45 Zeilen Javascript noch mal 200 Zeilen CSS kommen und dass der JavaScript Code völlig ohne Leerzeilen auskommt, wĂ€hrend bei Cappuccino besonders auf ĂŒbersichtlichkeit geachtet wurde.

Korrigiert man das und vergleicht erneut, dann sieht das Ergebnis etwas anders aus: jQuery + CSS ~= 200 Zeilen vs. Cappuccino ~= 200 Zeilen.

Whoa.

Also muss der Vergleich inhaltlich stattfinden: Cappuccino isoliert den Applikationsentwickler komplett vom DOM und seinen Schwierigkeiten, wĂ€hrend jQuery natĂŒrlich komplett damit Arbeitet - und man sich auch selber um die Komplikationen kĂŒmmern muss die man mit der BrowserkompatibilitĂ€t hat.

DafĂŒr ist der Code von jQuery inhaltlich wirklich sehr schön kurz - ich finde man sieht ganz hervorragend was man erreichen kann wenn man benannte Parameter (hier durch JavaScript Objekt-Literale Vertreten) und konsequenten Einsatz von Closures kombiniert.

Das hier zum Beispiel:

$.each(data.items, function(i,item){
   img = new Image();
   img.src = item.media.m;
   img.onload = function() {
        $(this).animate({opacity: 1}, "normal");
   }
   $(img).css({opacity: 0}).appendTo("#content").wrap("<div></div>");
   if ( i == 20 ) return false;
   });

ist einfach sehr ausdrukstark. Ich freue mich schon darauf wenn Apple Snow-Leopard herausbringt und damit Closures auch in Objective-C einzug halten - weil dann wird auch Cappuccino diese Möglichkeiten endlich nutzen ohne die KompatibilitÀt mit Cocoa zu verlieren.

Auf der anderen Seite finde ich den Objective-J Code wie bei Cocoa auch sehr ausdrucksstark - und vielleicht etwas verbose. DafĂŒr dokumentiert sich der Code aber auch ganz excellent.

Und da er nicht lĂ€nger ist als der andere, sehe ich da ĂŒberhaupt kein Problem.

Alles in allem also ein guter Grund jQuery zu lernen um die Möglichkeiten von JavaScript wirklich mal zu verstehen.