Sujet : JAVA - comment pas trainer la virtual machine ????? |
TontonVader |
eusebius a écrit a écrit :
j'ai pas eu le temps de tout lire mais j'ai quelques remarques :
- Certain disent que le C/C++ est portable, je dirais plutot qu'il est recompilable sans trop de difficulté mais cela n'est vrai que sur des systemes d'exploitations courants, vous oubliez qu'il existe de part le monde une bonne 50 aine de SDE dont pour la plupart vous n'avez jamais entendu parler ... A ma connaissance la VM a été portée sur la plupart des SDE qui ont une reelle utilité pour les entreprises ce qui est loin d'être le cas des compilos C/C++ (surtout au niveau des biblis graphiques).
- D'autre part le recompilation et les eventuelles modifs qu'il y a à faire neccessite les competences d'un programmeur alors qu'en Java une fois les .class (ou .jar) créé n'importe quel utilisateur avisé peut faire marcher le prog du moment qu'une VM à été installé.
A titre de temoignage je fais à l'heure actuel un stage en Java pour un organisme qui travail dans l'aeronautique et qui a pour client des boites comme EADS, Airbus, ... Le java à été choisie pour que le logiciel de relecture de fichier que je programme puisse marché sans probleme sur les different SDE et architecture hardware des clients et dans ces domaines la diversité est de mise : supercalculateur(Cray, Nec ...), station graphiques(SGI, Compaq...), machine temps reel(Dec sous VMS ...) ...
A l'heure actuelle ils en sont presque venu à faire un logiciel par client !
Pour ce qui est de la puce Java je n'y crois pas non plus d'une part car je ne pense pas que Sun soit en mesure d'imposer ce surcout au marché et au fabriquants et d'autre part la lenteur de Java n'est redibitoire que pour une part limité des applis (jeux ...) pour les applis graphique courantes l'amelioration des VM et la montée en puissance hardware permet aujourd'hui de les faires tourner tout à fait corectement si il n'y à pas trop de calcul.
Voilà, A+
|
- Je suis OK avec toi pour le C++, je te trouve encore gentil ! Recompilable facilement, c'est vite dit. Un exemple bête : une appli qui utiliserait les libs GTK sous Liux. Tu veux la porter sous Window, ben accroche toi, car à moins d'utiliser les libs GTK pour Windows (mais franchement c'est crade), ben tu peux te mettre à réécrire le code. Je trouve que bcp confondent portabilité et "recompilabilité"...
- Pour le Java par contre je suis pas *totalement* d'accord. Sur le principe oui, mais dans la pratique ça ne se passe pas toujours aussi bien. Premièrement, il se pose le problème des versions. Ce n'est pas vraiment un problème technique, mais dans le cadre d'une solution d'entreprise, c'est à prendre en compte.
Ensuite, toutes les VM ne sont pas implémentées de la même façon, donc toutes n'auront pas forcément le même comportement. Je pense notamment à al programmation multi-threadée qui peut poser pas mal de problèmes. Même avec du Java, la portabilité n'est pas assurée à 100% |
TontonVader |
eusebius a écrit a écrit :
j'ai pas eu le temps de tout lire mais j'ai quelques remarques :
- Certain disent que le C/C++ est portable, je dirais plutot qu'il est recompilable sans trop de difficulté mais cela n'est vrai que sur des systemes d'exploitations courants, vous oubliez qu'il existe de part le monde une bonne 50 aine de SDE dont pour la plupart vous n'avez jamais entendu parler ... A ma connaissance la VM a été portée sur la plupart des SDE qui ont une reelle utilité pour les entreprises ce qui est loin d'être le cas des compilos C/C++ (surtout au niveau des biblis graphiques).
- D'autre part le recompilation et les eventuelles modifs qu'il y a à faire neccessite les competences d'un programmeur alors qu'en Java une fois les .class (ou .jar) créé n'importe quel utilisateur avisé peut faire marcher le prog du moment qu'une VM à été installé.
A titre de temoignage je fais à l'heure actuel un stage en Java pour un organisme qui travail dans l'aeronautique et qui a pour client des boites comme EADS, Airbus, ... Le java à été choisie pour que le logiciel de relecture de fichier que je programme puisse marché sans probleme sur les different SDE et architecture hardware des clients et dans ces domaines la diversité est de mise : supercalculateur(Cray, Nec ...), station graphiques(SGI, Compaq...), machine temps reel(Dec sous VMS ...) ...
A l'heure actuelle ils en sont presque venu à faire un logiciel par client !
Pour ce qui est de la puce Java je n'y crois pas non plus d'une part car je ne pense pas que Sun soit en mesure d'imposer ce surcout au marché et au fabriquants et d'autre part la lenteur de Java n'est redibitoire que pour une part limité des applis (jeux ...) pour les applis graphique courantes l'amelioration des VM et la montée en puissance hardware permet aujourd'hui de les faires tourner tout à fait corectement si il n'y à pas trop de calcul.
Voilà, A+
|
- Je suis OK avec toi pour le C++, je te trouve encore gentil ! Recompilable facilement, c'est vite dit. Un exemple bête : une appli qui utiliserait les libs GTK sous Liux. Tu veux la porter sous Window, ben accroche toi, car à moins d'utiliser les libs GTK pour Windows (mais franchement c'est crade), ben tu peux te mettre à réécrire le code. Je trouve que bcp confondent portabilité et "recompilabilité"...
- Pour le Java par contre je suis pas *totalement* d'accord. Sur le principe oui, mais dans la pratique ça ne se passe pas toujours aussi bien. Premièrement, il se pose le problème des versions. Ce n'est pas vraiment un problème technique, mais dans le cadre d'une solution d'entreprise, c'est à prendre en compte.
Ensuite, toutes les VM ne sont pas implémentées de la même façon, donc toutes n'auront pas forcément le même comportement. Je pense notamment à al programmation multi-threadée qui peut poser pas mal de problèmes. Même avec du Java, la portabilité n'est pas assurée à 100% |
TontonVader |
Je vous parle en tant qu'adorateur du Java (et du C# maintenant)...
under> Comme Nomad, je pense qu'une VM "hardware" n'arrivera jamais, pour les mêmes raisons qu'il avance. A moins qu'on puisse flasher la puce comme on flashe le BIOS, mais honnêtement c'est beaucoup d'investissements pour pas grand chose....
Et puis il ne faut pas oublier le nouveau concurrent du Java, à savoir le C#, que MS a volontairement fait très très similaire au Java. Difficle de se prononcer, il faudra attendre de voir ce que donneront les versions finales du framework .NET et Sun One.
Niveau perf, faut pas rêver, même implémenté au niveau hardware, le Java ne sera jamais aussi rapide que le C++... C'est mathématique : qui dit hardware dit driver, et qui dit driver dit couche supplémantaire à traverser. De plus le C++ exploite directement le framework de l'OS sur lequel il tourne, d'où un gain de perf potentielement énorme par rapport à des langages inteprétés.
n0mad> Java ne montre pas sa puissance que dans des applis serveur. Dès que tu as besoin d'une appli de haut niveau le Java peut aussi convenir, d'autant plus qu'avec les nouvelles VM, le Java devient de plus en plus rapide. On dit souvent que le Java n'est pas adapté aux applis graphiques, c'est faux. Le Swing est une mine d'or pour qui n'a pas peur de plonger un peu dans l'API pour l'optimiser.
Matafan> Si je te dis "C# = 95% Java + 5% C++", ça répond à ta question ? Quoi que l'héritage multiple aurait pu faire partie des 5%, mais non :) En fait comme le Java il supporte l'implémentation multiple d'interfaces, mais pas l'héritage multiple.
Tout a vraiment été fait pour ne dépayser ni le programmeur C++ ni le programmeur Java. Et pour avoir essayer, je trouve que le pari est plutôt réussi : les constructions syntaxiques sont plus proches du C++ (donc MS peut toujous dire : c'est du C++ plus orienté objet) mais l'esprit est full Java.
Exemple : les destructeurs, c'est l'exemple le plus drôle. Ils ont la sytaxe du C++, mais ce sont en fait de simples "alias" vers la méthode Finalize() (méthode bien connue des developpeurs Java)de l'objet ! Du coup, et c'est là que ca devient drôle, si tu écris un destructeur ET une méthode Finalize() dans la même classe, le compilo va pleurer parce que tu as écrit deux fois la même méthode :lol: :lol: :lol: J'avais vu ca sur une FAQ mais je n'ai plus l'adresse, dès que je la retrouve je la poste ici. [edtdd]--Message édité par TontonVader--[/edtdd] |