Ein grosser Schritt vorwärts
Am 09.03.2011 veröffentlichte Apple nach einer neunmonatigen Beta Phase Xcode in der neusten Version 4.0. Xcode beinhaltet eine integrated development environment, welches auf der Frontendseite die Projektverwaltungs- und Editierumgebung besteht und für die eigentliche Kompilation eine GCC Toolchain in Version 4.2.1, sowie den neuen Apple LLVM Kompilierer in Version 2.0 zur Verfügung stellt. Als weiteres Feature wurde ebenfalls das clang Frontend für LLVM in den Editor integriert. Im Folgenden werde ich kurz berichten, welche Aspekte bei Xcode 4 positiv auffallen und an welchen noch Arbeit nötig ist.
Die neue GUI
Die auffälligste Neuerung wird mit Sicherheit das neue Fenster von Xcode sein. Auf den ersten Blick sieht es etwas so aus wie iTunes mit einem Texteditor. So verfügt das Fenster über einen Play und Stop Knopf, sowie ein Display in dem bei iTunes Titelnamen und die Timeline dargestellt würden. In diesem Hauptfenster findet nun der Hauptteil der Entwicklungsarbeit statt. Es können mehrere Dateien gleichzeitig dargestellt werden, die Benutzeroberfläche entworfen und in alten Versionen der Datei gesucht werden. Dies bedeutet im Vergleich zu Xcode3 eine grosse Umstellung, da vorher mein Workflow so war, daß ich mit einem condensed Xcode projektfenster gearbeitet habe, in dem ich jede Datei ein neues Fenster geöffnet hatte. Natürlich bekommt man so sehr schnell ein Fensterchaos wo das Navigieren schwer fallen könnte. Vor allem hat mich gestört, dass es in Mac OS X keine native Möglichkeit gibt, Fenster an einander auszurichten. Abhilfe schaffe da das sehr praktische Tool Optimal Layout. Dieses Programm nutzt die Bedienungshilfe Schnittstelle des Betriebssystems, um mit der Tastatur Fenster verschieben und vergrössern zu können. Darüber hinaus ermöglich dieses Programm auch bis zu vier Fenster auszuwählen und die dann nach einem festgelegten Schema auf dem Bildschirm anzuordnen. In meinem Fall war das das header file links und die Implementierung rechts. So konnte ich mich sehr gut auf den Code konzentrieren.
Diese Jongliererei ist nun nicht mehr nötig. Xcode 4 stellt neben einem Standard Modus, in dem die komplette Breite des Fensters von einem Editorbereich gefüllt wird, auch einen Assistant Modus zur Verfügung, in dem das Hauptfenster 2 oder mehr Untereditoren füllen können. Natürlich ist die Möglichkeit Editorfenster zu splitten und zwei Dateien gleichzeitig zu betrachten nicht neu, Emacs und auch VIM konnten das schon seit einer gefühlten Ewigkeit. Was mir jedoch neu vorkam ist die Möglichkeit, im Hilfseditor eine Datei anzeigen zu lassen, die in einem bestimmten Verhältnis zu der ausgewählten Datei steht. Das kann beispielsweise das header file zur gewählten Datei sein, aber auch beispielsweise die Elternklasse, was besonders dann nützlich wird, wenn man eine neue Unterklasse implementieren möchte. Neben diesen Automatismen kann man auch die Datei manuell auswählen.
Einen besonderen Anwendungsfall des Assistant Modus ist das Entwerfen von graphischen Benutzeroberflächen mit dem nun in Xcode integrierten Interface Builder. Man kann nun die XIB Datei öffnen und daneben den Quelltext des zuständigen Controllers sehen. So kann man auch mit dieser neuen Version Outlets erzeugen, indem man mit Rechtsklick von einem XIB Objekt direkt rüber in den Texteditor zieht. Mit Sicherheit ist dies eine grosse Verbesserung, da man vorher doch einige Zeit beschäftigt war, die graphischen Bedienelemente und den Quelltext synchron zu halten. Oft wurden da beim Wechsel der Programm gerade von Anfängern vergessen, Outlets zu verbinden, was zu lustigem Nachrichtenschicken an nil führt, was zwar Objective‑C erlaubt, aber in diesem Falle recht zwecklos ist.
Das Beste ist unter der Haube
Was einem erst auf den zweiten Blick und beim eigentlichen Einsatz auffällt ist das sofortige Markieren von Fehlern während man den Code noch eingibt. So wird sofort markiert, wenn beispielsweise der Typ der Variablen falsch ist oder wenn ein Tippfehler gemacht wurde. Bei offensichtlichen Fehlern schlägt Xcode4 sogar eine Lösung vor. Die Zeiten, in denen man erst den Compiler starten mußte, um rauszufinden, daß man sich irgendwo vertippt hat sind damit vorbei. Die Technik, die dahintersteckt ist die moderne Compilertechnik und der Clang static analyzer.
Neben den neuen Dingen die dazugekommen sind, sollte man auch mal erwähnen, was man nicht mehr mit Xcode4 machen kann: code für PowerPC Prozessoren compilieren, dafür fehlt die entsprechende GCC Toolchain. Ebenfalls wurden auch die legacy optionen von Mac OS X 10.4 eingestellt. Es gibt anscheinend Möglichkeiten, die fehlenden Komponenten, besonders die PPC Unterstützung aus einem alten Xcode3 dranzubasteln, ob das sich aber auf Dauer bewährt ist fraglich.
Apple macht in diesem release von Xcode4 auch einen klaren Schritt weg von GCC hin zu LLVM und damit auch weg von GDB hin zu LLDB. Das Programm ist schneller erzeugt, der Code läuft schneller und ist auch deutlich kleiner.
Das Fazit
Xcode4 ist ein grosser Schritt in die richtige Richtung. Über jeden Zweifel erhaben ist die neue Toolchain, die mit LLVM und LLDB neueste Compilertechnik einsetzen. Der schon von vorherigen Xcode Versionen bekannte Clang static analyzer ist noch mal eine ganze Ecke besser geworden und der Editor zeigt seine gefundenen Fehler und Warnungen direkt an.
Über die Benutzeroberfläche ist erst mal zu sagen, daß es einerseits gut ist, daß es endlich mit dem Fensterverhau vorbei ist, jedoch wird dies durch ein riesiges monolithisches Fenster erkauft. Wer gerne mehrere Programme mit ihren Fenstern kunstvoll auf dem Bildschirm anordnet, kann durch dieses neue Design gezwungen werden, seinen Arbeitsablauf umzustellen.
Gut gelungen ist die Integration von Interface Builder direkt in Xcode. Besonders das Erstellen von neuen Outlets geht sehr schnell von der Hand und dort spielt auch der neue doppelte Assistant Editor seine Vorzüge aus: Links die graphische Benutzeroberfläche und rechts daneben ihr zugehöriger Controllercode, so hat man alles direkt im Blick
Xcode4 hat noch seine Schwächen was die Stabilität angeht, aber das wird nur eine Frage der Zeit sein, bis Apple diese behoben hat. Mir gefällt es sehr gut, allerdings ist die Umstellung gerade was das Build System und die Projekteinstellungen angeht nicht trivial. Nachdem diese Hürden überwunden sind ist programmieren mit Xcode4 deutlich effizienter als bei seinen Vorgängern. Inwiefern sich dies in besserer Code- und damit letztendendes auch Programmqualität widerspiegelt wird die Zukunft zeigen.