• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> Klick

cocoa, java und objective-c

iltis

Cox Orange
Registriert
01.02.06
Beiträge
99
Hallo zusammen

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?

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?

Im Moment sehe ich gerade einen Vorlesungs-Podcast zum Thema Algorithmen. Da gibt es viele java Beispiele. Das macht Lußt auf mehr.

Vielen Dank für eure Meinung und Hilfe!

Gruß
Michael
 

mewX

Wohlschmecker aus Vierlanden
Registriert
26.12.06
Beiträge
241
Zwischen Objective-C und Java: Generell keiner.
Objective-C ist die programmiersprache für Mac-Apps, und Cocoa ist ein Framework/Bibliothek/wie auch immer, das C-Klassen bereitstellt um Mac-Anwendungen, Buttons, Fenster usw. zu steuern.

Dazu sei gesagt: Ich bin weit weg davon ein Profi zu sein und das ist mehr meine Anfängerische Sicht darauf :)

Zum Programmieren würde ich also Objective-C & Cocoa empfehlen. Bin auch gerade dabei, das zu "lernen"... Hab selber leider kaum gute Tutorials usw...
Dazu musst du dann mal im Forum suchen.

Gruß
 

Wikinator

Adams Parmäne
Registriert
21.08.04
Beiträge
1.297
naja, ich hab zuerst Java gelernt, benutze jetzt aber Objective-C.

Es kommt ganz darauf an, was du machen willst: Wenn du Netzwerk- oder plattforumunabhängige Sachen machen willst, ist Java sicher die richtige Wahl.
Willst du aber "native" OS X-Programme schreiben, Objective-C

Mir macht Objective-C ein bisschen mehr Spaß (ist aber natürlich rein subjektiv und nicht begründbar ;))
 

mullzk

Linsenhofener Sämling
Registriert
04.01.04
Beiträge
2.529
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.
 

Bölzebub

Querina
Registriert
27.05.05
Beiträge
180
die kombination von java und cocoa ist noch nicht offiziell für tot erklärt, aber sie riecht schon sehr muffig.
Ich würde das schon für tot erklärt nennen:
http://developer.apple.com/documentation/Cocoa/Conceptual/JavaTutorial/chapter01/chapter_1_section_1.html schrieb:
Important: The Java API for Cocoa is deprecated in Mac OS X version 10.4 and later. You should use the Objective-C API instead.
 

pepi

Cellini
Registriert
03.09.05
Beiträge
8.740
Was die Literatur angeht kann ich ebenfalls
Cocoa Programming for Mac OS X (unbedingt auf die 2. Edition achten!)
Programming in Objective-C
empfehlen. Sie gelten mit gutem Grund als die Standardwerke zum Thema Objective-C und Cocoa.

Als wichtigstes Framework unter Objective-C würde ich sogar das Foundation Framework ansehen, Cocoa ist für Mac OS X spezifische Programmierung das nächste wichtige Framework.

Objective-C ist übrigens eine (alle sagen immer simple) Erweiterung zu C.

Was die Kombination von Java und Cocoa angeht möchte ich ergänzen, daß es zwar eine Java–Obj-C Bridge gibt, daß diese aber offiziell nicht mehr unterstützt wird. Sie wird nicht mehr weiterentwickelt.
Zur reinen Java Entwicklung ist evt. Eclipse die bessere Wahl als Xcode. (Außer für WO.)

Ich bin beim "Programming in Objective-C" Buch inzwischen bei Kapitel 12 Angelangt und beim Cocoa Buch bei Kapitel 3. Es geht langsam voran. :) Der übliche Überschuß an Zeitmangel tut sein übriges.
Gruß Pepi
 

Senior Sanchez

Damasonrenette
Registriert
08.09.06
Beiträge
491
Also wenn es ums programmieren lernen geht, würde ich wie gesagt Java empfehlen. Es ist wie ich finde, einfacher als Objective-C.

Ich selber lerne gerade Objective-C, sodass ich mir dann meine eigenen Cocoa-Apps zusammenbauen kann und was ich bisher mitbekommen habe, ist, dass Objective-C irgendwie ziemlich style hat ;) Ich find das Konzept der Messages ne interessante Geschichte, wenngleich ich da jetzt keinen großen Vorteil oder Nachteil zur klassischen Java-Variante des Methodenaufrufes per Punkt sehe.

Ich habe bisher auch nur mal kurz reingeschnuppert aber der Interface Builder von Xcode scheint mir das beste zu sein, was ich jemals in diesem Bereich gesehen habe.

Meine Empfehlung ist: Wenn du dich in die objektorientierte Programmierung erstmal einarbeiten willst, nimm Java. Da wird erstmal auf das semiautomatische Speichermanangement von Objective-C verzichtet, der GC (Garbage Collector) nimmt dir das alles ab. Wenn du dich dann aber besser vor allem in der Objektorientierung auskennst, würde ich Objective-C empfehlen, auch wenn es noch etwas ein Nischendasein pflegt - aber hey, wer kann dann schon von sich behaupten dass er Objective-C kann und das kann mal sehr nützlich sein.


@mullzk
Was macht Cocoa denn so geil im Vergleich zu anderen Frameworks?
 

mullzk

Linsenhofener Sämling
Registriert
04.01.04
Beiträge
2.529
so etwas wie cocoa bindings, dass dir das ewig-gleiche rumcoden an den controllern erspart, gibt es schlichtwegs nirgends.

was hinzukommt ist vor allem das prinzip der delegates - fast alle anderen frameworks für desktop-applikationen beruhen darauf, dass man die verschiedenen views beerbt und dann neue funktionen hinzuknallt. in cocoa bleibt ein nswindow ein normalerweise nswindow, wenn man etwas zusätzlich machen will, definiert man dies im delegate - die gefahr unbeabsichtigter nebeneffekte sinkt dramatisch.

und der umfang der frei haus mitgelieferten funktionalitäten ist schlicht gigantisch.
 

pepi

Cellini
Registriert
03.09.05
Beiträge
8.740
Objective-C hat meiner Ansicht kein Nischendasein. Immerhin ist Objective-C nur eine Erweiterung zu C. Die Messages ind genaugenommen auch nicht wirklich was anderes als ein Methodenauruf. Lediglich die Syntax ist ein wenig anders. Mit Objective-C 2.0 (kommt mit Leopard) kann man soweit mir bisher bekannt auch die Dot-Notation für Aufrufe verwenden. Dann gibt es auch einen Garbage Collector der das Speichermanagement vereinfacht. Die bisherige Variante bleibt aber ebenfalls verfügbar. Einerseits wegen Abwärtskompatibilität zu bestehendem Code, andererseits weil damit die Lebensdauer jedes Objektes exakt bestimmt werden kann.

Die Syntax und die Namenskonventionen von Objective-C machen de Code meiner Ansicht nach sehr gut lesbar. So ein Methodenaufruf ist durch die explizite Benennung von Parametern sehr einfach verständlich.
Ein Beispiel aus Cocoa Programming for Mac OS X - Second Edition (Kapitel 3, Using existing classes, p39) verdeutlicht dies sehr stark:
In dieser Art würde man das in C++ schreiben:
Code:
if (x.intersectsArc(35.0, 19.0, 23.0, 90.0, 120.0))

Dies wäre das Objective-C equivalent:
Code:
if ([x intersectsArcwithRadius:35.0
                   centeredAtX:19.0
                             Y:23.0
                     fromAngel:90.0
                       toAngle:120.0])

Mit welcher Programmiersprache man beginnen möchte hängt meiner Meinung auch viel davon ab was man schlußendlich programmieren möchte. Bzw. auf welcher Plattform man deployen möchte. Wenn man zum Ziel hat Mac OS X Tools oder Applikationen zu schreiben, dann ist Objective-C sicherlich die Sprache der Wahl.
Gruß Pepi
 
Zuletzt bearbeitet:

iltis

Cox Orange
Registriert
01.02.06
Beiträge
99
Also:

Vielen Dank an euch alle! Genau so hatte ich mir das gewünscht. (Damit möchte ich die Diskussion nicht abwürgen)

Ich denke, ich werde es mal mit Objective-C probieren. Denn ich möchte ja nur für meinen Mac programmieren und nicht für WIN und nicht für Linux. Das bedeutet wohl, dass ich den Vorteil von Java nicht nutzen werde.

Jetzt stellt sich mir eine weitere Frage. Warte ich auf Leopard? Oder hat vielleicht einer von euch das "Objective-C und Cocoa: Programmieren unter Apple Mac OS X", braucht es nicht mehr und würde es mir günstig verkaufen. Dann kann ich schon mal anfangen und muss mich nicht ärgern, wenn morgen eine neue Version auf den Markt kommt.

Gruß
Michael
 

MacApple

Schöner von Bath
Registriert
05.01.04
Beiträge
3.652
Jetzt stellt sich mir eine weitere Frage. Warte ich auf Leopard?
Wozu? Alles was Du jetzt lernst kannst Du auch unter Leopard gebrauchen.

Oder hat vielleicht einer von euch das "Objective-C und Cocoa: Programmieren unter Apple Mac OS X", braucht es nicht mehr und würde es mir günstig verkaufen. Dann kann ich schon mal anfangen und muss mich nicht ärgern, wenn morgen eine neue Version auf den Markt kommt.
Das Buch ist gerade in der 2. Auflage erschienen. Ich würde mir die erste Auflage nicht mehr antun.

MacApple
 

KayHH

Gast
Die komplette Programmierumgebung ist kostenfrei und auf Deiner Start-DVD bereits dabei. Update (mtl. ca. 800 MB) gibt es bei Apple. Gruss KayHH
 

Amin Negm-Awad

Süsser Pfaffenapfel
Registriert
01.03.07
Beiträge
665
Hier steht ja schon einiges, leider nicht immer ganz richtig.

a)
Java und Objective-C sind zwei objekt-orientierte Programmiersprachen. Dennoch sind die Unterschiede erheblich, jeodch geringer als etwa zu C++. Dies liegt an den Vorbildern.

Grundsätzlich erlaubt jedoch Objective-C einen tieferen und flexibleren Eingriff in die RTE. Daher gibt es Cocoa-Technologien, die mit Java gegen Cocoa nicht möglich sind. Urpsrünglich hat Apple da noch selbst viel gestrickt, inzwischen sagen sie doch selbst, dass Java/Cocoa eine "Lernplattform" ist. Für native Software-Entwicklung unter OS X kommst du daher letztlich kaum an Objective-C gegen Cocoa vorbei. Und Mac-User achten auf Nativität. ;)

b)
Cocoa ist ein Framework. Das kannst du dir in etwa so vorstellen wie eine Lib in "älteren" Progrmmiersprachen. Du wirst Objective-C mit ziemlicher Sicherheit gegen Cocoa programmieren wollen. Wenn du andere BS unterstützen möchtest gibt es noch GNUStep und andere, neuere Ansätze. Schaue hierzu mal auf osxentwicklerforum.de und suche dort nach hns. Der ist dort sehr engagiert. Allerdings hinken die halt etwas hinterher.

Cocoa beinhaltet bereits neben dem AppKit die Foundation. Cocoa ist also sozusagen die Obermenge. Ab .4 ist noch das CoreData-Framework hinzugekommen:

Cocoa.h:
#import <Foundation/Foundation.h>
#import <AppKit/AppKit.h>
#import <CoreData/CoreData.h>

Es gibt noch weitere Frameworks, insbesondere AddressBook, welches nicht automatisch von Cocoa eingebunden werden.

c)
Wie ihr meinem Namen entnehmen könnt, habe ich an der 2. Auflage von "Objective-C und Cocoa" mitgeschrieben. Grundsätzlich kann man sich fragen, wie sinnvoll der Erwerb einer alten Auflage ist. Hier ist es aber so, dass es sich um eine wirklich umfangreiche Erweiterung in der 2. Auflage handelt, die vor allem Cocoa selbst betrifft. Eigentlich sollten jetzt alle Standard-Themen umfassend abgearbeitet sein, wenngleich es auch noch Arbeit für eine etwaige dritte Auflage gibt.

Wie man mit einem Buch zurecht kommt, ist ja auch Typfrage. Wer Interesse hat, sollte es sich einfach mal in der Buchhandlung seines Vertrauens anschauen. Hey, auch den Einzelhandel unterstützen! ;)