Kann mir mal einer auseinandersetzen, wie der Zusammenhang zwischen cocoa, java und objective-c ist?
Erste Frage: Ist cocoa eine eigenständige Programmiersprache? Oder nur so etwas wie ein framework/plugin, das ich in java und objective-c nutzen kann um noch besser auf meinen mac ein zu gehen?
Java und objective-c sind beides Programmiersprachen, Cocoa ist das wichtigste Framework um für OS X (und nur für OS X) zu programmieren. Zu Java muss man wohl nichts sagen; objective-c ist ebenfalls eine mischung zwischen c und smalltalk, allerdings mit anderen akzenten: erstens ist es ein reines superset zu C, du kannst also in einem objective-c programm ganz auch mit ganz normalem C-code arbeiten. allerdings heisst das (zumindest bis leopard) auch, dass du dich mit hässlichen sachen wie memory management und pointer rumschlagen musst. java ist weit verbreitet und es gibt auch im internet sehr viele informationen dazu, objective-c wird fast ausschliesslich von mac-programmierern benutzt, entsprechend ist auch die info-beschaffung schwieriger.
cocoa ist das framework, welches die beiden wichtigsten frameworks foundation und appkit zusammenfasst. diese stammen noch aus der zeit von nextstep, also dem Vorgänger von OS X. cocoa hat den ruf eines der geilsten frameworks zum erstellen von desktop-applikationen zu sein, eine aussage die ich fast vorbehaltslos unterstütze.
cocoa zwingt dich, zwischen modell, view und dem controller dazwischen zu unterscheiden, bringt dir dafür mit sachen wie cocoa bindings und core data sehr viele sachen ohne jeglichen aufwand frei haus.
cocoa gibt es sowohl für objective-c als auchfür java. allerdings ist die java-lösung grösstenteils gebridged, und die übersetzung schlägt sich teilweise auf die performance nieder. allerdings hat apple in den letzten jahren fast nichts mehr für java-cocoa gemacht, all die geilen neuen sachen wurden immer nur auf objective-c herausgegeben. das gleiche gilt für die dokumentation, sowohl von apple selber wie auch durch sonstige quellen im internet - die kombination von java und cocoa ist noch nicht offiziell für tot erklärt, aber sie riecht schon sehr muffig.
Zweite Frage: Ich komme von basic (damals noch unter GEM) über TurboPascal (unter DOS und WIN) und würde jetzt gerne nach einer langen Pause und einem switch (zu mac) mal ein wenig programmieren. Was meint ihr, cocoa, java und/oder objective-c?
Java ist für zwei Sachen hervorragend: Man kriegt in 99% der Fällen Plattformunabhängigkeit frei haus geliefert, während du mit objective-c ausschliesslich für macs programmierst. Und: Java ist extrem verbreitet - sei es in Uni-Kursen und -Skripten oder in anderen Internet-Quellen, sei es in der Privatwirtschaft, wenn du eines Tages das programmieren zu deinem Beruf machen willst, sei es in der Open Source Community. Man kommt leicht zu Dokumentationen, Fallbeispielen und Foren. Objective-C hingegen hat eine kleine Verbreitung, die grosse Karriere wirst du als Obj-C-Programmierer kaum machen, und zT ist es ziemlich mühsam, an Informationen und gute Tutorials zu kommen. Dafür ist die Community sehr freundlich und hilfsbereit. (letzteres findest du allerdings auch für Java).
java hat vermutlich die etwas flachere lernkurve - wenn du keine C-kenntnisse besitzt und auch noch nichts von objekt-orientierten programmieren weisst, kann objective-c ein sehr happiger und allenfalls demotivierender einstieg sein. allerdings gibt es neben java auch noch einfachere ernstzunehmende sprachen.
wovon ich aber abraten würde, ist mit java cocoa-applikationen zu erstellen. denn damit verlierst du die grossen vorzüge von java (plattformunabhängigkeit + viele infos), gewinnst aber nur die wenigsten features von cocoa hinzu. wenn du dich für java entscheidest, mach ganz normale java-programme mit swing, swt etc. - die laufen auf dem mac genauso, auch wenn sie nicht so schön aussehen.