Cappucino != Cocoa

written by Martin HĂ€cker on

Tja, also nach lÀngerer Neugierde habe ich mich mal mit Cappucino auseinander gesetzt und ein wenig damit Programmiert.

Und das hat fĂŒr mich als Cocoa Programmierer eine Menge Spaß gemacht.

Erst mal ein paar Kleinigkeiten:

  • Der Java-Script Parser von Safari saugt. Er sagt einem nie wo der Fehler jetzt genau aufgetreten ist. :-( Unbedingt mit Firefox und Firebug entwickeln!
  • Wenn man sich den git tip of the tree auscheckt kriegt man weit mehr Klassen als in der offiziellen Dokumentation erwĂ€hnt sind. Insbesondere funktioniert das nib2cib tool auch ein wenig besser - und das spart unmengen von Zeit.
    • Allerdings funktioniert nib2cib auch nicht soo gut. Viele Klassen die es können könnte gehen damit nicht. NSScrollView zum Beispiel.
  • Wenn man sein eigenes Objective-J kompilieren will darf man keine spaces im Pfad haben. (arrrrghhh!!!!!)
  • Man kann (noch) nicht den Code so ohne weiteres in Unterverzeichnisse auslagern. Das macht die Projekte unĂŒbersichtlich - aber angeblich soll das bald gefixt sein.
  • nib2cib darf man nie mit mehr als einem Filenamen aufrufen. Sonst schreibt es nĂ€mlich einfach in das zweite Argument den output hinein.
    • Wo ich gerade darĂŒber nachdenke: das geht eigentlich mit kaum einem objective-j tool ojtest zum beispiel... Dabei ist der Startup von Rhino immer das langsamste daran. :-(
  • Und man muss einiges an Umgebungsvariablen setzen. Am besten macht man sich ein ein shell script was diese dinger setzt und dann wieder eine shell exec'd. Damit hat man dann gleich eine Arbeitsumgebung fĂŒr Cappucino ohne alles irgendwohin in standard-Betriebsystem-Locations installieren zu mĂŒssen.
#!/bin/sh

PROJECT_DIR="/path/to/the/cappucino/sources/but/without/spaces/cappuccino"

# you can move this elsewhere to keep things separate
export STEAM_BUILD="${PROJECT_DIR}/build"
TOOLS_DIR="${STEAM_BUILD}/Cappuccino/Tools/objj"
NIBTOOLS_DIR="${PROJECT_DIR}/Tools/objj"

export OBJJ_HOME="${TOOLS_DIR}"
export PATH="${PATH}:${TOOLS_DIR}/bin:${NIBTOOLS_DIR}/bin"
"${SHELL}"

Damit kann man immerhin die ganzen objj tools (ojtest, nib2cib, etc) direkt benutzen.

Cappucino selber benutzt sich tatsÀchlich ziemlich wie eine recht alte Version von Cocoa. Erstmal keine Bindings und entsprechende Controller und !CPBundle ist reichlich underpowered - Lokalisierter Resourcen-Lookup ist damit erst mal noch nicht drin.

Die Tools sind natĂŒrlich nicht so toll. Insebesondere fehlt ein vernĂŒnftiger Ersatz fĂŒr Interface Builder.

Aber ansonsten rockt Cappuccino schon gewaltig. Jedem Cocoa-Programmierer sei also eine BeschÀftigung damit schwer ans Herz gelegt.