Java et le mac

macmaniaque

Membre junior
9 Octobre 2003
70
1
35
Nantes
www.macstuce.fr.st
Bonjour, je suis étudiant en IUT informatique et l'on apprend Java, on utilise Linux (RedHat 9) et on tape dans le Xterm des commandes pour lancer la machine virtuelle, pour compiler, et pour lancer l'executable. De plus on a un projet à faire avec des interfaces graphiques (Swing certainement ou awt), et je possede un mac qui tourne sur OS X.3 et j'aimerais travailler chez moi pendant les vacances. Alors ma question est: Quelle sont les commandes a rentrer dans le Terminal pour pouvoir lancer la machine virtuelle de MacOS X, pour compiler des fichiers, et pour lancer les éxécutables, comme sous Linux?
Et comment pouvoir tenir compte de fichier ".class" dans mes fichiers sources?
 

Ptit-beignet

Membre émérite
7 Novembre 2001
630
30
38
Raleigh, NC, ... euh nan ca c'est fini :(
c'est pareil que sous Linux.
Tu ouvres un terminal situé à Applications/Utilitaires/terminal.app
et apres tu tapes java, javac, javah, javadoc, jdb bref toutes commandes sont la. En fait java est installé par défaut sous Os X. La version est la 1.4.1.
Tes .class coompilés sous Linux peuvent tourner sous OSX pas de problème. Par contre si c'est pas la meme version de java, mieux vaut recompiler.
L'avantage de Java est qu'il est multiportable donc la dessus tu n'as pas de souci a te faire. D'ailleurs pour se la "péter" un peu, Sun a élu MacOSX meilleur plateforme de dev pour Java. ehehe !!
 

Bobbus

Membre confirmé
5 Décembre 2001
146
1
39
Java portable...
Arf, ça fait marrer tous les informaticiens un peu sérieux que je rencontre. Déjà entre deux JVM sur le même OS il n'est pas rare d'avoir des différences de comportements, mais entre des OS différents... Faut arrêter la blague...

Java, c'est peut-être portable quand tu fais deux-trois additions avec une interface graphique à deux boutons, mais au delà (c'est-à-dire pour une véritable application, destinée à être vraiment utilisée, avec des vraies contraintes d'exécution des threads, et/ou de réseau), autant choisir un vrai langage et écrire proprement l'application...

Y a qu'à regarder LimeWire, ça m'a toujours fait rire...

Enfin bon, Java a d'autres avantages et c'est sans aucun doute un bon langage d'un point de vue pédagogique (un peu moins qu'Ada, quand même
(Oups, je suis dans une phase un peu trolleuse, j'ai l'impression
)...

Bob
 

Ptit-beignet

Membre émérite
7 Novembre 2001
630
30
38
Raleigh, NC, ... euh nan ca c'est fini :(
mouai ...
Toi t'es le genre C++ a fond nan ?
du type
for(i=0+2;i<20000;a=k+2,b=a+200,c=*b);
nan ?

Java n'a jamais eu les pretentions d'un langage type C, C++.

Cependant :
-Java est portable:je developpe une application
a usage pro sur Mac OSX, Linux, Windows. Aucun probleme alors que j'utilise des librairies un peu spé comme JAXB, JNI, JDBC,JDO & co.
-Java est facile: faire ce que j'ai fait en C++ ou autre m'aurait pris (allez on va etre gentil) 2 fois plus de temps.
-Java est de plus en plus rapide. Un groupe de chercheurs qui codent des algos d'interpolation & co pense à passer du Fortran au Java car sur certaines operations, il est aussi rapide que gcc.
-Java est cohérent niveau architecture ce qui n'est pas du tout le cas du C++ par exemple.
-Java a de la tres bonne doc.

Pour toutes ces raisons, java est un bon langage.
Alors amuse toi avec des Makefile. Mais le langage de programmation de l'an 2050 ressemblera plus a Java qu'au C++.

A+
Vincent

PS:
Java portable...
Arf, ça fait marrer tous les informaticiens un peu sérieux que je rencontre
bah je dois pas etre un informaticien serieux.

5 ans post bac pour rien ... c'est deprimant !
 

cux221

Membre émérite
20 Avril 2002
719
1
39
MASSY
Java est portable mais pas pour tout.
J'ai une application développée par une société spécialisé dans l'orienté objet, ben sur mon PC ça marche, sur mon Mac ça marche pas.
C'est une application permettant d'auditer du code.
De plus Java est loin d'être parfait et n'implante pas tous les concepts de l'orienté objet. Mais bon C++ c'est pire
 

simon

Membre d’élite
Club MacG
18 Juin 2000
3 669
16
Singapore
www.simonganiere.ch
On peut quand même trouver un bon exemple de compatibilité c'est quand même les application Java Client de WebObjects qui tourne très bien sur OS X, sur Windows 2000 Server (pour le dev) + Solaris pour le deploy
 

Bobbus

Membre confirmé
5 Décembre 2001
146
1
39
Ptit-beignet a dit:
.....
Cependant :
-Java est portable:je developpe une application
a usage pro sur Mac OSX, Linux, Windows. Aucun probleme alors que j'utilise des librairies un peu spé comme JAXB, JNI, JDBC,JDO & co.
Java est portable jusqu'à un certain point, mais ce n'est pas la panacée contrairement à ce que Sun essaye de faire croire. Je voulais réagir à cette habitude d'ajouter l'adjectif 'portable' à toutes les sauces dès qu'on entend le mot Java.

-Java est facile: faire ce que j'ai fait en C++ ou autre m'aurait pris (allez on va etre gentil) 2 fois plus de temps.
Effectivement, mais cette facilité a un prix, en performance et en propreté...

-Java est de plus en plus rapide. Un groupe de chercheurs qui codent des algos d'interpolation & co pense à passer du Fortran au Java car sur certaines operations, il est aussi rapide que gcc.
Oui, alors là, j'attendrai un peu quand même avant d'utiliser le mot 'rapide' ou 'performances', parce que Java part de tellement loin que c'est pas demain la veille que ce sera une fusée... Que Sun l'améliore est la moindre des choses, mais les autres langages (et leurs compilateurs) aussi évoluent...

Pour toutes ces raisons, java est un bon langage.
Pour toutes ces raison, Java est un langage qui peut être adapté en certaines circonstances (Non, le C++ n'est pas plus un bon langage, il est juste adapté pour d'autres choses...)

Alors amuse toi avec des Makefile. Mais le langage de programmation de l'an 2050 ressemblera plus a Java qu'au C++.


bah je dois pas etre un informaticien serieux.

5 ans post bac pour rien ... c'est deprimant !
Trop gros le troll sur les Makefile, il est pas passé

Mais sinon on peut effectivement aussi jouer à celui qui a la plus grosse, si vraiment ça en fait un argument dans le débat
:
Si j'avais su qu'on peut tout faire sur toutes les plateformes avec Java, je me serai pas tapé 7 ans d'informatique après le bac... T'aurais du me prévenir plus tôt


Enfin bon, la chose qu'il serait peut-être intéressant de comprendre, c'est que même en 2050 il n'y aura pas LE langage de programmation magique, il y en aura toujours plusieurs, qui seront chacun plus ou moins adaptés pour certaines taches (certains pour les UI (Objective-C ?), d'autres pour la performance, d'autres pour la sécurité d'exécuion (Ada encore ?), d'autres enfin pour la simplicité. Et je serai ravi que Java fasse partie de ceux-là, mais d'ici-là on aura appris à faire des garbage collector qui ne soient pas des veaux...

Bob
 

Strubie

Nouveau membre
22 Janvier 2004
1
0
Ce que bobbus voulait dire (et je pense pas me tromper, vu qu'on en discutait entre autres geekeries y a quelques heures de ça :0) c'est que c'est un poil exaspérant ces derniers temps, le côté "hype" de java. Surtout quand ça veut dire qu'un tas de softs sont écrits en java alors que cela ne se justifie pas, et encore plus quand ça pousse un tas d'écoles à donner beaucoup trop d'importance à ce langage dans la formation des informaticiens de demain.

Java c'est portable, oui, relativement, mais ce n'est pas la seule manière de faire du code portable. Le C et le C++ POSIX, c'est aussi portable, et ça veut dire qu'il existe plusieurs API multi-plateformes écrites dans ces langages (Qt, wxWindows, GTK+, le tout est libre en plus).

Et question facilité, c'est encore plus simple de coder en python ou C#, en utilisant les "bindings" pour ces langages de ces mêmes API. Et ça permet de s'interfacer à des librairies performantes écrites en langage compilé pour les parties gourmandes en performances. Et de distribuer un programme portable sans inclure dans le README "Ce programme tourne sur toutes les plateformes, à condition d'avoir la JRE-1.4.1bis de Sun et pas une autre, et de faire trois fois le tour de sa machine à cloche-pied en hululant avant de la lancer, les nuits de pleine lune".

Bref, java, c'est pas mal, mais la raison pour laquelle des programmes sont écrits en java est trop souvent que "java c'est à la mode, et vendeur", ou que l'auteur ne connait rien d'autre. Ce qui est dommage, et pourrait devenir problématique quand la mode sera passée.

Moi j'aime bien le troll sur les makefiles, mais j'ai pas mal codé en C++, et je me souviens pas avoir jamais écrit un makefile à la main. Tout ce que je connais c'est un peu de automake/autoconf.

De toutes façons, les vrais hommes, ça code en Ada, avec vi. Non mais.

'lut bobbus
 

Ptit-beignet

Membre émérite
7 Novembre 2001
630
30
38
Raleigh, NC, ... euh nan ca c'est fini :(
ça veut dire qu'il existe plusieurs API multi-plateformes écrites dans ces langages (Qt, ...
Oui Qt est excellent.

Et question facilité, c'est encore plus simple de coder en python ou C#,...
Ouai en plus le C# c'est super portable ...

le côté "hype" de java
Et le coté pseudo underground des gros codeurs en C ?
Et le coté pseudo marginal des codeurs en Ada ?


Je suis pas le preux chevalier Java.
Je n'ai jamais dit que Java etait LE langage.
Je ne me sens pas a la mode en codant en java.

Simplement je trouve que Java est tres utile pour beaucoup de types d'applications et bien plus adapté que le C/C++ ou autres.
Exemple:
aujourd'hui j'ai porté une bonne grosse application standalone sur le web avec servlets, jsp, tomcat. Ca m'a pris qu'une seule journéé
.

Désolé mais quoi qu'en pense ses destructeurs Java est un bon langage.

De toutes façons, les vrais hommes, ça code en Ada, avec vi. Non mais
Faux, ils codent en Lisp !


A+
Vincent
 

Moi66

Nouveau membre
22 Janvier 2004
1
0
Concernant la portabilité du Java: certes ce n'est pas parfait, mais aux dernières nouvelles, c'est ce qu'il y a de plus efficace et économique pour développer sur plusieurs OS
Les frameworks C/C++ portables sont au rarement à un niveau similaire de portabilité, c'est à dire avec des bouts de codes spécifiques aux OS pour se débarasser des problèmes d'affichage, ceux que j'ai pu évaluer à ce sujet n'atteignait jamais autant la portabilité du java (on a une machine (virtuelle) identique en plus !).

Concernant le "prix" de la facilité du java, personnellement je trouve le code java bien plus propre que le C/C++, l'orienté objet, une fois un peu maitrisé, conduit à des architecture claires
(au delà d'une certaine des projets cela dit...) ; et dans le corps des algos, en général le Java est quand même plus lisible que le C (avec les kilos de typecast par exemple... cela dit ça dépend énormément du codeur tout ça, même si disons que le Java facilite les bonnes manières... :p ). Concernant la vitesse, il faut aller voir ça : OsNews - Benchmark de quelques langages sur PC

Concernant les "bons" et "mauvais" langages, je suis assez d'accord, ils ont chacun leur marché, même si le Java empiète de plus en plus sur les terres du C/C++
Cela dit, ce n'est pas demain que je vais programmer mes micro controlleurs en Java, je suis tout juste en train de faire la transition au C
(imaginez: 200 octets de RAM !!!
)

Pour en revenir à la vitesse du java, travaillant pas mal sur PC, je peux vous dire que Java est bien plus réactif sur mon Athlon XP 1800 que sur mon Titanium 867, alors que pour pas mal de chose ces machines ce valent. Je ne suis pas convaincu que l'on ait une JVM tellement au top que ça sur Mac, même si la progression est plutôt dans le bon sens.
Manu
 

cux221

Membre émérite
20 Avril 2002
719
1
39
MASSY
On va faire plus court, JAVA sous UNIX c'est lent!!!
J'ai fait le test avec la même appli et la même machine sous Win et FreeBsd, et ben il y a une grosse différence!!
 

molgow

Vétéran
Club MacG
4 Janvier 2002
5 493
612
37
Suisse
www.monts-chevreuils.ch
cux221 a dit:
On va faire plus court, JAVA sous UNIX c'est lent!!!
J'ai fait le test avec la même appli et la même machine sous Win et FreeBsd, et ben il y a une grosse différence!!
Tu as essayé sur quel Unix?

Parce que ça m'étonne que Sun ait raté leur machine virtuelle pour Solaris par exemple


A part ça, c'est rigolo comme "java: bien ou pas?" doit être le troll le plus facile à faire marcher chez les développeurs.

Je dois avouer que j'adore le Java. Que je prêche facilement pour le Java que je trouve vraiment agréable pour les qualités que je lui trouve : gestion de la mémoire sûre, propreté du code, vérification des types relativement stricte (oui c'est un +), etc.
Mais je n'en suis tout de même pas fermé à d'autres langages.
Par contre, je trouve assez triste de voir que certains ne peuvent jurer que par le C++ ou d'autres langages et rejettent en bloc le Java. Le Java n'a certes pas que des avantages, mais au fur et à mesure que le langage et que les machines évolues, il perd partiellement certains de ses désavantages, notamment sa "lenteur" à l'exécution.Quant à sa portabilité, oui le langage est portable pour autant que vous utilisiez une machine virtuelle qui n'est pas faite par Microsoft et que vous utilisez des classes standardes. Maintenant si vous n'êtes tout de même pas d'accord, rien ne vous empêche de faire du Java uniquement pour une plateforme. Ca n'a rien de choquant pour moi.
 

cux221

Membre émérite
20 Avril 2002
719
1
39
MASSY
Ben, justement,J'ai testé sous FreeBSD. Je dis bien sûr que c'est une application avec interface graphique, par une appli réseaux.
J'ai aussi regardé sous Sun OS c'est pas la joie non plus.
 

cux221

Membre émérite
20 Avril 2002
719
1
39
MASSY
molgow a dit:
Tu as essayé sur quel Unix?

Parce que ça m'étonne que Sun ait raté leur machine virtuelle pour Solaris par exemple


A part ça, c'est rigolo comme "java: bien ou pas?" doit être le troll le plus facile à faire marcher chez les développeurs.

Je dois avouer que j'adore le Java. Que je prêche facilement pour le Java que je trouve vraiment agréable pour les qualités que je lui trouve : gestion de la mémoire sûre, propreté du code, vérification des types relativement stricte (oui c'est un +), etc.
Tu peux très bien faire du code Java comme un dégueulasse
.
Pour ce qui est de la gestion de la mémoire, c'est un piège dans lequel il ne faut pas tomber car bcp de développeurs ne vérifie pas cet aspect, or Java a aussi des problèmes de gestion de la mémoire (certes bcp moins que les autres).
C'est vrai que Java est un bon langage mais pas pour tout. Le problème est là, on l'utilise pour tout et n'importe quoi.
Chaque langage a son domaine bien spécifique. Quand tu fais de l'audit de code, tu t'appercois qu'il y a des gens qui utilisent Java en programmant comme du C.
 

Bobbus

Membre confirmé
5 Décembre 2001
146
1
39
Cux221 et Strubie ('lut Strub's
) ont bien traduit le fond de ma pensée...

C'est marrant de voir à quel point ça marche toujours aussi bien le chti troll des forêts sur Java...


Bob
 

grenoble

Membre confirmé
22 Novembre 2000
388
3
Je dirais surtout que Java est reposant.


Pour un vieux routier du code comme moi, c'est un plaisir d'attaquer pas mal de projets avec ce langage.

Il faut dire qu'il devient vite fatiguant de switcher sans cesse de langage en langage. On perd souvent du temps à retrouver ses habitudes et références du langage, allant jusqu'à mélanger des concepts etc.

Et pour le langage à la mode, j'étais persuadé que c'était Qt la star du moment. On m'en rabat les oreilles à longueur de journée, à juste titre quand même.
 

eTeks

Membre confirmé
12 Novembre 2001
274
5
Paris
www.eteks.com
Bobbus a dit:
Java portable...
Arf, ça fait marrer tous les informaticiens un peu sérieux que je rencontre.
Ben alors, on n'a pas du encore se rencontrer...
Personnellement j'ai utilisé plusieurs fois la portabilité de Java et globalement ça marche très bien. Mais attention Portable ne veut pas dire que ça t'affranchit de faire des tests et que quelque soit ton programme il fonctionnera exactement de la même façon sur tous les systèmes. L'avantage d'un mac en l'occurence, c'est qu'avec une seule machine tu peux tester tes programmes Java sous MacOS, Windows et Linux (grâce à VirtualPC).
Si tu vises la portabilité, il faut faire attention par exemple :
<ul type="square">[*]A utiliser le séparateur de dossier stocké dans File.separatorChar et ne pas mettre / ou \ sans se poser de question
[*]A faire attention à l'encodage de tes caractères accentués (personnellement j'utilise systématiquement le code Unicode des lettres accentuées)
[*]A utiliser les layouts et pas les coordonnées absolues pour positionner les composants d'une fenêtre
[*]A étudier les documentations concernant les spécificités de chaque système, comme le fait que la barre de menu doit être positionnée en haut de l'écran sous MacOS (voir les propriétés System propres à MacOS X) [/list]
Comme tu peux voir, ça représente plus de travail mais au final tu n'auras qu'une seule version des fichiers sources .java.
Personnellement, fin 2003, j'ai développé sous MacOS X une application Web en JSP/Struts/MySQL avec une autre personne qui était sous Windows, l'application finale tournant sous Linux ! Tout ça a marché parfaitement dès le départ...
Une autre preuve de la portabilité Java, tous les programmes présentés dans le Cahier du Programmeur Java [1] ont été testés sous MacOS X, Windows et Linux, et fonctionnent sans problème sur chacun de ces systèmes...
 

Bobbus

Membre confirmé
5 Décembre 2001
146
1
39
Bobbus a dit:
avec des vraies contraintes d'exécution des threads, et/ou de réseau
Si tu avais lu l'intégralité de mon post (qui, je l'admets, était volontairement provocateur), tu aurais vu que je parlais de chose un poil plus bas niveau que des Layout ou des séparateurs de dossiers.

Et moi aussi, j'ai déjà fait du Java, et je vais me répéter, mais si ton application a des grosses contraintes d'exécution de threads et/ou de réseau, Java n'est plus vraiment portable, tout ce qui arrivera au moment de l'exécution (et l'ordre dans lequel ça arrivera) dépendra de la JVM utilisée.

Enfin, bon, je crois qu'on a fait le tour du troll maintenant...

Bob