Passer du Java à Objective-C, ou pas ?

Lapin Masqué

Membre confirmé
27 Janvier 2009
74
2
Paris
Salut, salut,

Je programme principalement par hobby, mais j'ai finalement un plutôt bon niveau en java. Et j'aimerais développer des application 100% Mac, histoire d'exploiter au mieux Cocoa et les ajouts sympa de la part d'Apple.

J'ai regardé du côté de la programmation Java pour Mac, l'avantage c'est que je connais, j'installe Eclipse et j'y vais.
Maintenant j'ai vu que le Java Bridge (qui permet d'utiliser Cocoa et d'avoir du java sous-jacent) était abandonné, et que le seul moyen de développer une interface graphique "macifiée" était d'utiliser Swing (qui est selon moi la pire chose éxistante sur terre) ou d'utiliser SWT-Cocoa qui est encore en béta.

Du coup j'ai regardé du côté de l'Objective-C qui à l'air proche du Java (Orienté Objet, Présence d'un GC, CoreData (proche de JDO/Hibernate)...) mais qui m'oblige à réapprendre les subtilités d'un langage, un nouvelle syntaxe (qui à l'air un peu tordue avec des crochets partout), et un nouvel environnement.

Donc est-ce que je peux exploiter à fond les possibilités du mac avec Java, si oui comment ?
Est-ce que ça vaut le coup de démarrer en Objective-C ?
Est-ce que je peux faire ça avec Eclipse (J'ai pas trop exploré XCode mais si je peux rester dans un environnement familier c'est mieux)

Voilà, merci d'avance pour les conseils =')
 
La philosophie d'Obj-C est bien plus proche de celle du Java que ne l'est le C++.
Xcode et Interface bUilder sont des outils bien plus puissants pour faire des interfaces graphiques sous Mac OSX que ce que tu pourras trouver en Java, Swing ou SWT à côté semblent préhistoriques. Mais cela nécessite un apprentissage, non pour connaître l'Obj-C mais pour maîtriser Cocoa. Mais avec une bonne lecture ("Cocoa par la pratique") et de bonnes notions de programmation objet cela se fait sans trop de problème.
Et comme préciser plus haut, faire du Cocoa passe par l'utilisation de Xcode et surtout d'Interface Builder qui prend en charge une bonne part du travail nécessaire à l'élaboration de ton interface. Donc dans ce cas oublie Eclipse.
 
Pas grand chose de mieux à ajouter. Apprendre la syntaxe d'un langage quand t'en connais déjà un relativement proche, ça prend 1Heure ou 2 maxi. Après faudra t'habituer aux mécanismes de cocoa oui. Mais bon, c'est pas la mer à boire non plus.
 
Je conseille aussi l'excellent document de Pierre Chatelier, qui m'a permis de faire des gros progrès en Objective C (et objective C++ bien sur)

http://pierre-chatelier.developpez.com/tutoriels/mac/objectivec/migration/

En fait, ce livre décrit comment passer de C++ à objective C mais la partie Objective C se suffit à elle même.

ha bon :rolleyes: de ce que j'en ai lu c'est concon et confu sur beaucoup de point que ce soit coter c++ ou obj-c

"3.6 Différenciation entre fonctions et méthodes
Objective-C n’est pas un langage « dont les appels de fonction s’écrivent avec des crochets ».
C’est en effet ce que l’on pourrait penser en voyant écrit
[object doSomething];
au lieu de
object.doSomething();
D’une part, comme Objective-C est un sur-ensemble du C, les fonctions respectent la même syntaxe
et la même logique que le C quant à la déclaration, l’implémentation et l’appel. En revanche, les
méthodes , qui n’existent pas en C, ont une syntaxe spéciale avec des crochets. De plus, la différence
ne se situe pas seulement au niveau de la syntaxe mais également de la sémantique. Cela est expliqué
plus en détails dans la section 5.2 page suivante : ce n’est pas un appel de méthode, c’est l’envoi
d’un message. Cette originalité n’est pas une préciosité gratuite, c’est un mécanisme beaucoup plus
cohérent avec le langage. Et la syntaxecascade (cf. section 5.3.1 page 12).
"

peut etre que je devrais me mettre a ecrire...
parce que la mais oui mon guigui, c'est une hashtable, avec un lookup de symbols
c'est un runtime objet pour C avec une grammaire pour gcc c'est tout

la syntax est juste la pour aider le parser quand il genere la table
pfeueueu, et c'est le pourquoi des warnings de symboles, mais ceci abscent quand l'init se fait un constructeur? pourquoi bah mon guigui c'est comme en c++, enfin il n'aborde meme pas la question,

donc le expert c++, c'est quoi ce guigui de mon cul?
 
Mais sinon t'as déjà pensé à apprendre à écrire et à pas être désagréable dans tous tes replies ou quoi ?
 
Mais sinon t'as déjà pensé à apprendre à écrire et à pas être désagréable dans tous tes replies ou quoi ?

Avà, c'est juste que Eric s'occupant du port openoffice je suis etonné qu'il est trouvé un quelquonque interet a ce brouillon, plus que brouillonant, quand on met un intitulé pour "programmers C++ experimentes" donc des gens qui pratique ce language depuis une 10ene d'annees on s'attend a quelque chose de correcte et interressant. that's it

:p

ps: ne soit pas desagreable s'il te plait oukoi
 
Xcode et Interface bUilder sont des outils bien plus puissants pour faire des interfaces graphiques sous Mac OSX que ce que tu pourras trouver en Java, Swing ou SWT à côté semblent préhistoriques.

http://www.netbeans.org/features/java/swing.html
:siffle:

Le monde Java et NetBeans en particulier ont bcp bcp évolué... du mal à voir ce qui manque par rapport a XCode..

J'ai pu participé à une conf de Sun récemment sur leur nouveautés, et NetBeans et leurs nouveaux produits sont réellement bluffants! :up:
 
@tatouille

Tu as raison, le point que tu as soulevé est douteux, et mérite d'être amélioré.

Nous utilisons à la fois de l'objective C et de l'objective C++ dans OpenOffice.org (90% du code est du C++), et cette partie conversion/équivalence C++ -> obj C /C++ n'avait jamais été abordée de cette manière (ou je n'ai pas lu les bons livres). C'est donc très courageux de la part de l'auteur, de s'être lancé, et tant pis si ce n'est pas parfait.

Par ailleurs, en tant que volontaire, je ne suis pas un grand expert, ni un professionnel du code, et je dois être moins exigeant que toi, mais je continue de penser qu'il y a des choses très intéressantes dans ce document, et qui montrent que ce qui est exposé a été vraiment essayé.

Enfin, toute contribution est la bienvenue pour améliorer ce document, et tu me sembles être un excellent candidat (je ne manquerai pas de te lire, le cas échéant ;-) )