# Passer du Java à Objective-C, ou pas ?



## Lapin Masqué (7 Février 2009)

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 =')


----------



## ntx (7 Février 2009)

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.


----------



## grumff (8 Février 2009)

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.


----------



## Céroce (9 Février 2009)

ntx a dit:


> Mais avec une bonne lecture ("Cocoa par la pratique")



Préfère Programmation Cocoa sous Mac OS X (c'est le même livre, mais Cocoa par la pratique correspond à la deuxième édition, celui-ci à la troisième).
Sinon, rien à ajouter.


----------



## ericb2 (9 Février 2009)

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.


----------



## tatouille (9 Février 2009)

ericb2 a dit:


> 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  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 Di&#64256;é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 e&#64256;et 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 di&#64256;é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?


----------



## Rez2a (10 Février 2009)

Mais sinon t'as déjà pensé à apprendre à écrire et à pas être désagréable dans tous tes replies ou quoi ?


----------



## tatouille (10 Février 2009)

Rez2a a dit:


> 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



ps: ne soit pas desagreable s'il te plait oukoi


----------



## Zeusviper (11 Février 2009)

ntx a dit:


> 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


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!


----------



## ericb2 (12 Février 2009)

@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 ;-)  )


----------

