Java-Cocoa Applications

Floppy

Membre expert
Club iGen
19 Avril 2001
1 621
40
Salut,

J'ai trois petites questions concernant le sujet des applications Java-Cocoa :

1. Est-ce que l'application produite s'exécute dans la JVM ou bien - comme je le pense - l'application est réellement compilée pour produire une application "native" ?

2. Pour ce type d'application, utilise-t-on les classes Java ou les classes Cocoa (celles utilisées en Objective-C) ? Voire les deux ?

3. Existe-t-il des restrictions quand on utilise Java au lieu d'Objective-C pour écrire une application Java ?
 
<BLOCKQUOTE><font size="1" face="Verdana, Geneva">quote:</font><HR>1. Est-ce que l'application produite s'exécute dans la JVM ou bien - comme je le pense - l'application est réellement compilée pour produire une application "native" ?<HR></BLOCKQUOTE>

Je pense qu'elle est exécutée dans la JVM puisque ton programme reste un programme Java bénéficiant du Garbage Collector, des Threads et de toutes les classes de la bibliothèque Java en plus des classes Cocoa.

<BLOCKQUOTE><font size="1" face="Verdana, Geneva">quote:</font><HR>2. Pour ce type d'application, utilise-t-on les classes Java ou les classes Cocoa (celles utilisées en Objective-C) ? Voire les deux ?<HR></BLOCKQUOTE>

Les classes Cocoa viennent en plus des classes Java, donc tu peux faire normalement ce que tu veux. De là à mélanger du Cocoa avec du Swing dans une IHM peut-être qu'il ne faut pas abuser...

<BLOCKQUOTE><font size="1" face="Verdana, Geneva">quote:</font><HR>3. Existe-t-il des restrictions quand on utilise Java au lieu d'Objective-C pour écrire une application Java ?<HR></BLOCKQUOTE>

Certaines classes du ObjC Framework ne sont pas présentes dans le Java Framework. Tu peux comparer les listes des classes dans la page developer de la doc Cocoa (file://localhost/Developer/Documentation/Cocoa/CocoaTopics.html)
 
Merci pour tes réponses.

1. Je ne suis toujours pas convaincu que l'application s'exécute dans la JVM. Je trouverais ça dommage car pour moi, le concept des appli Java-Cocoa a été ajouté pour draguer les développeurs Java (ne voulant pas apprendre ObjC) pour créer des appli Cocoa. Donc, si c'est pour obtenir une appli tournant dans la JVM, autant la faire tout en Java (au moins, elle est portable).

En plus, le main est en Objective-C. Donc, je penche plutôt pour l'idée qu'elle n'est pas dans la JVM.

J'arrête pas de lire de la doc Apple et pas moyen de lire clairement noir sur blanc si ça tourne dans la JVM ou pas.


2. On peut mélanger Swing et Cocoa. En tout cas, j'ai réussi à compiler
grin.gif



3. Le fait qu'on ne retrouve pas toutes les classes ne signifie pas nécessairement qu'il existe des restrictions. Par exemple, Java n'a peut être pas besoin de NSString puisqu'il a déjà String.
 
<BLOCKQUOTE><font size="1" face="Verdana, Geneva">quote:</font><HR>Posté à l'origine par Floppy:
Merci pour tes réponses.

1. Je ne suis toujours pas convaincu que l'application s'exécute dans la JVM. Je trouverais ça dommage car pour moi, le concept des appli Java-Cocoa a été ajouté pour draguer les développeurs Java (ne voulant pas apprendre ObjC) pour créer des appli Cocoa. Donc, si c'est pour obtenir une appli tournant dans la JVM, autant la faire tout en Java (au moins, elle est portable).
<HR></BLOCKQUOTE>

y a un test tout simple qui semble prouver le contraire:

tu prends Project Builder, tu fais New Project, tu choisis Cocoa-Java Application, tu entres le nom de ton projet, et une fois ton projet créé, tu choisis Edit Active Target (menu Project), tu prends l'onglet Application Settings, puis bouton Expert, et là, tu constateras que tu as le flag NSJavaNeeded réglé à YES. Ce flag indique qu'il faut lancer la JVM pour cette application, valable pour des applis Cocoa-Objc avec bridge java, ou pure appli Cocoa-Java.
Et tu constateras aussi que ton appli est un .jar dans le petit tableau NSJavaPath, donc du java de chez java
wink.gif


Tout porte à croire donc que l'appli est inutilisable sans JVM...
 
Oui tu as raison. Très Dommage.

Bon je vais me peut-être me mettre à l'Objective-C alors ou bien je vais attendre qu'on puisse compiler du Java.
 
<BLOCKQUOTE><font size="1" face="Verdana, Geneva">quote:</font><HR>Posté à l'origine par Floppy:
Bon je vais me peut-être me mettre à l'Objective-C alors<HR></BLOCKQUOTE>
Voilà, tu as tout compris
wink.gif

Et si tu es déja à l'aise avec Java, tout va aller très très vite, crois-moi.
 
Merci pour cette confirmation.

Je n'ai pas très envie de me mettre à l'ObjC. J'ai lu la doc d'Apple sur le langage et ça à l'air puissant mais plutôt casse-gueule et imprévisible côté gestion de la mémoire. Mais surtout, avec ObjC, je resterais cantonné au développement pour Os X.

Avec Java, en revanche, je pourrais utiliser mon savoir faire Java sur d'autres projets que du développement pour OS X qui est un marché que je trouve vraiment trop restreint comparé à celui qu'ouvre Java.

La seule chose que je reproche à Java c'est ce mode de fonctionnement émulé. Pour faire des applets c'est bien mais pour faire des applications sérieuses c'est grotesque.

Une collègue utilise Forte for Java pour faire un peu de développement Java sur son PC. On voit bien que c'est écrit en Java à cause du look. Eh bien ça rame et de toute manière ça ne marche même pas sur Mac OS X. Donc, la compatibilité... mon oeil !

Faut vraiment que les petits gars de Sun inventent un mode compilé pour les appli pour de vraies performances.


Encore une question, vu que les appli Cocoa en ObjC résolvent aussi les appels de méthode à l'exécution, est-ce que c'est tellement plus rapide que Java ?
 
Je confirme la VJM est obligatoire pour les programme en Cocoa-Java .. mais losque l'on utilise l'interface Cocoa les objets d'interfaces sont compilé donc par rapport a une application 100% java evec Swing l'affichage est beaucoup plus rapide.. et franchement j'ai écris des applications en java cocoa et ça tourne plustôt bien.

Dans le futur j'espere qu'apple va intégré le compilateur GCJ qui se trouve dans la nouvelle mouture GCC http://gcc.gnu.org/java/

on attends pour voir.....