OVH Cloud OVH Cloud

bases de données et cocoa

28 réponses
Avatar
une.bevueVOTEZ
je n'ai jamais programmé en cocoa, seulement en java et assembleur (je
connais un peu applescript) je souhaite faire un petit bout d'essai en
cocoa.

j'ai une base de données (aujourd'hui se sont des objets java, mais pour
construire cette bd j'ai des fichiers textes que je pourrais convertir).

cette base de données décrit la système des appellations de vin
(ambition mondiale, réalisation france quasi totale et quelques autres
pays démarés)

donc je voudrai m'essayer en cocoa sur un exemple concret : représenter
dans une fenêtre l'arbre des appellations "mondiales"

(copie écran à http://yvon-thoraval.com/jCave/)


et ensuite les feuilles sur les cépages

(copie écran à
http://yvon-thoraval.com/jCave/index.php?page=vp-view&lang=fr&mode=zoom)


et ainsi de suite pour traduire mon appli java en cocoa.

(outre appellations et cépages dans mon appli il y a un carnet
d'adresses et une gestion des bouteilles en cave)


où trouver des infos pour démarrer ainsi ?

exemples ?


supposons maintenant que je finisse cette appli en cocoa. Bon des gens
me demandent la même chose sous unix et win* y a t'il moyen de traduire
depuis du cocoa ou faut-il tout refaire ?

10 réponses

1 2 3
Avatar
Schmurtz
(Une bévue) wrote:

je n'ai jamais programmé en cocoa, seulement en java et assembleur (je
connais un peu applescript) je souhaite faire un petit bout d'essai en
cocoa.


Sur quelle version de MacOS X ? où plutôt sur quelles versions tu
souhaites que ce soit compatible (à chaque version majeure, il y a une
grande avancée dans les APIs cocoa, en particulier en ce qui concerne la
création d'interface pour Panther et le stockage de données pour Tiger).

À part ça, j'imagine que ce sera du cocoa écrit en java ?

j'ai une base de données (aujourd'hui se sont des objets java, mais pour
construire cette bd j'ai des fichiers textes que je pourrais convertir).

cette base de données décrit la système des appellations de vin
(ambition mondiale, réalisation france quasi totale et quelques autres
pays démarés)

donc je voudrai m'essayer en cocoa sur un exemple concret : représenter
dans une fenêtre l'arbre des appellations "mondiales"

(copie écran à http://yvon-thoraval.com/jCave/)

et ensuite les feuilles sur les cépages

(copie écran à
http://yvon-thoraval.com/jCave/index.php?page=vp-view&lang=fr&mode=zoom)

et ainsi de suite pour traduire mon appli java en cocoa.

où trouver des infos pour démarrer ainsi ?


Pour commencer (le premier est en objective-C mais est beaucoup plus
complet en ce qui concerne la création d'interfaces, le second en java) :
http://developer.apple.com/referencelibrary/GettingStarted/GS_Cocoa/index
.html
http://developer.apple.com/documentation/Cocoa/Conceptual/CocoaObjects/Ar
ticles/JavaCocoa.html#//apple_ref/doc/uid/20001937

La doc de référence :
Par thème (User Experience = Interface) :
http://developer.apple.com/documentation/Cocoa/index.html
Par non de classe :
http://developer.apple.com/documentation/Cocoa/Reference/ApplicationKit/J
ava/index.html
http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Java/
index.html

Pour ce qui est du stockage de ta base de donnée, avant Tiger il n'y a
rien de vraiment pratique fourni par Apple (il y a bien les fichiers
plist, mais si ta base est grande, je ne sais pas si ça sera
utilisable). Peut-être avec sqlite si ça s'installe pas trop
difficilement. Mais si tu programmes en java, tu peux toujours récupérer
se que tu faisais avant avec les APIs java de BDD.

Pour les sites non-Apple :
http://www.cocoadev.com/
http://www.cocoa-x.com/ (en français)
http://www.macdevcenter.com/
http://www.cocoadevcentral.com/

exemples ?


Les exemples installés avec Xcode dans /Developer/Examples/AppKit/ ou
/Java/AppKit.
Sur le site web d'Apple :
http://developer.apple.com/samplecode/Cocoa/index.html

supposons maintenant que je finisse cette appli en cocoa. Bon des gens
me demandent la même chose sous unix et win* y a t'il moyen de traduire
depuis du cocoa ou faut-il tout refaire ?


Le meilleur moyen, c'est encore de rester en java ;). Pose-toi vraiment
la question du réel intérêt de jeter ton appli en java pour la refaire
en cocoa.

Pour être plus constructif :
- le Cocoa-java n'est à ma connaissance non portable tel que. Par
contre, tu peux avoir le c¦ur de ton programme codé en java pur et juste
l'interface en cocoa. Tu n'auras que l'interface à porter dans ce cas.
- le Cocoa-Objective-C lui peut être porté assez facilement grâce au
projet GNUStep qui propose une implémentation libre (fonctionne sous
linux et windows) des framework Foundation et AppKit. Attention
toutefois, tout n'est pas entièrement implémenté : faut pas utiliser des
fonctionnalité plus récente que Jaguar.

--
Schmurtz

Avatar
une.bevueVOTEZ
Schmurtz wrote:

(Une bévue) wrote:

je n'ai jamais programmé en cocoa, seulement en java et assembleur (je
connais un peu applescript) je souhaite faire un petit bout d'essai en
cocoa.


Sur quelle version de MacOS X ? où plutôt sur quelles versions tu
souhaites que ce soit compatible (à chaque version majeure, il y a une
grande avancée dans les APIs cocoa, en particulier en ce qui concerne la
création d'interface pour Panther et le stockage de données pour Tiger).


min Panther voire Tiger

À part ça, j'imagine que ce sera du cocoa écrit en java ?



Non, si j'envisage cocoa c'est pour Objective-C, le but est d'obtenir
qqc de + rapide que java...

Pour commencer (le premier est en objective-C mais est beaucoup plus
complet en ce qui concerne la création d'interfaces, le second en java) :
[...]

un grand merci pour toutes les refs

Le meilleur moyen, c'est encore de rester en java ;). Pose-toi vraiment
la question du réel intérêt de jeter ton appli en java pour la refaire
en cocoa.

Pour être plus constructif :
- le Cocoa-java n'est à ma connaissance non portable tel que. Par
contre, tu peux avoir le c½ur de ton programme codé en java pur et juste
l'interface en cocoa. Tu n'auras que l'interface à porter dans ce cas.
donc ça ne m'intéresse pas

- le Cocoa-Objective-C lui peut être porté assez facilement grâce au
projet GNUStep qui propose une implémentation libre (fonctionne sous
linux et windows) des framework Foundation et AppKit. Attention
toutefois, tout n'est pas entièrement implémenté : faut pas utiliser des
fonctionnalité plus récente que Jaguar.
ok, donc je dois me documenter sur ce qu'il faut éviter.


donc, en conclusion, je ferais d'abord un petit test autonome en
Cocoa-Objective-C (les appellations) puis quand et si satisfait je
regarde de suite le projet GNUStep...


merci encore pour toutes ces infos...


Avatar
Bruno CAUSSE
dans l'article 1gwi0oq.1pq4c0gtphfluN%, Une bévue à
a écrit le 13/05/05 11:57 :

Non, si j'envisage cocoa c'est pour Objective-C, le but est d'obtenir
qqc de + rapide que java...


Alors la c'est pas gagner, Objective-c repose lui aussi sur un runtime.
Je ne suis pas sur que les perf Objective-c soit supérieur a java.

Qui confirme/infirme?

Pour les mêmes raisons (perf) je migre mon appli java en c++ (recoder quelle
galère), un temps j'avais envisager comme toi Objective-c mais différentes
lectures n'en avais dissuadé.

Avatar
Bruno CAUSSE
dans l'article BEAA51A9.362E%, Bruno CAUSSE à
a écrit le 13/05/05 12:44 :

dans l'article 1gwi0oq.1pq4c0gtphfluN%, Une bévue à
a écrit le 13/05/05 11:57 :

Non, si j'envisage cocoa c'est pour Objective-C, le but est d'obtenir
qqc de + rapide que java...


Alors la c'est pas gagner, Objective-c repose lui aussi sur un runtime.
Je ne suis pas sur que les perf Objective-c soit supérieur a java.

Qui confirme/infirme?

Pour les mêmes raisons (perf) je migre mon appli java en c++ (recoder quelle
galère), un temps j'avais envisager comme toi Objective-c mais différentes
lectures n'en avais dissuadé.

je compte sur un facteur de 2 (j'espère 3) mon appli java est la plus

rapide que je connaisse :-) mais est 2 ou 3 fois plus lente que les progs
concurrents en c ou c++.


Avatar
une.bevueVOTEZ
Bruno CAUSSE wrote:

Non, si j'envisage cocoa c'est pour Objective-C, le but est d'obtenir
qqc de + rapide que java...


Alors la c'est pas gagner, Objective-c repose lui aussi sur un runtime.
Je ne suis pas sur que les perf Objective-c soit supérieur a java.

Qui confirme/infirme?

Pour les mêmes raisons (perf) je migre mon appli java en c++ (recoder quelle
galère), un temps j'avais envisager comme toi Objective-c mais différentes
lectures n'en avais dissuadé.


ton point de vue m'intéresse beaucoup, en fait je vais réaliser un test
avec d'un côté :

- swing + swingX + java + base de données objet java (db4o)

de l'autre :

- cocoa + objective-C + une bd (je ne sais pas en quoi)

s'il n'y a pas de gain de vitesse dans ce cas je laisse tomber
objective-C

je ne savais pas qu'il y avait aussi un runtime avec objective-C...

merci pour ces infos...

si le test objective-C je regarderai côté C++ (il paraît que le fait,
pour moi, d'avoir pratiqué l'assembleur est un +) mais existe-t'il de
framework sur MacOS X qui permettent de développer en cross-plateforme ?


Avatar
thomas-ml
Une bévue wrote:

je ne savais pas qu'il y avait aussi un runtime avec objective-C...

merci pour ces infos...


Obj-C repose sur un runtime mais pas sur une machine virtuelle... Le
code Obj-C est natif, contrairement au code Java !

--
Thomas Deniau

Avatar
une.bevueVOTEZ
Thomas Deniau wrote:

Obj-C repose sur un runtime mais pas sur une machine virtuelle... Le
code Obj-C est natif, contrairement au code Java !


ah oui, "détail" d'importance...
enfin il n'est pas exclu que la jvm le devienne...

Avatar
Schmurtz
(Thomas Deniau) wrote:

Une bévue wrote:

je ne savais pas qu'il y avait aussi un runtime avec objective-C...
merci pour ces infos...


Obj-C repose sur un runtime mais pas sur une machine virtuelle... Le
code Obj-C est natif, contrairement au code Java !


Tout à fait.

Et d'ailleurs ce qui prend du temps ce ne sont que les appels de
fonctions : appeler une méthode d'un objet en Objective-C, revient à
faire un appel de fonction + une recherche dans une table de hashage (de
la taille du nombre de méthode de la classe) + un peu de code
intermédiaire.

Par contre pour ce qui est du code interne d'un fonction, c'est
exactement aussi rapide que du C, puisque... c'est du C. Donc au final,
seules les parties sensibles doivent être optimisées, par exemple en
écrivant le c¦ur du code de calcul en C pur. Il est aussi possible si on
appelle plusieurs fois la même méthode d'un objet d'effectuer une seule
fois la recherche dans la table de hash (on récupère alors un pointeur
vers une fonction C).

--
Schmurtz


Avatar
Bruno CAUSSE
dans l'article 1gwi5yh.1h9bp3v1nf1ep6N%, Une bévue
à a écrit le 13/05/05 13:53 :

Obj-C repose sur un runtime mais pas sur une machine virtuelle... Le
code Obj-C est natif, contrairement au code Java !


ah oui, "détail" d'importance...
enfin il n'est pas exclu que la jvm le devienne...


une fois que le code java est passé au hotspot (ou JIT) quelle est la
difference?


Avatar
Schmurtz
(Une bévue) wrote:

Schmurtz wrote:

(Une bévue) wrote:

je n'ai jamais programmé en cocoa, seulement en java et assembleur (je
connais un peu applescript) je souhaite faire un petit bout d'essai en
cocoa.


Sur quelle version de MacOS X ? où plutôt sur quelles versions tu
souhaites que ce soit compatible (à chaque version majeure, il y a une
grande avancée dans les APIs cocoa, en particulier en ce qui concerne la
création d'interface pour Panther et le stockage de données pour Tiger).


min Panther voire Tiger


Si tu penches vers Tiger, ça ne sera jamais compatible avec GNUStep.
C'est le fameux dilemme "j'utilise ou pas cette nouvelle
fonctionnalité ?" ou "programmation simple et rapide vs compatibilité"...

À part ça, j'imagine que ce sera du cocoa écrit en java ?



Non, si j'envisage cocoa c'est pour Objective-C, le but est d'obtenir
qqc de + rapide que java...


Si la partie lente de ton code forme un bloc (ie, qu'elle n'est pas
éparpillé dans toute l'appli), ou alors peut être centraliser sur une
seule classe, il fait savoir que tu peux garder tout ton code java et ne
réécrire que les fonctions coûteuses de cette classe en C. Je n'ai
jamais testé, mais c'est sensé bien marcher (chercher JNI : Java Native
Interface). Ça à l'avantage d'être très portable si ton code C n'utilise
pas de bibliothèques exotiques. On peut aussi exposer une classe
Objective-C pour quelle soit vu comme une classe Java par Java (c'est ce
que fait Apple pour permettre de programmer du Cocoa avec java).

--
Schmurtz



1 2 3