Bien entendu un développeur java fera effectivement une catastrophe s'il essaye de coder du c++ comme du java.
Et non tu prend un code c++ tu ne peux pas obligatoirement l'adapter à la lettre en java, ou le résultat sera minable. Mais bon c'est peut être après avoir fait des trucs comme ca qu'après les gens vont dire que java c'est lent
Je fait du java à mon travail, à peu près tous les jours, et je n'ai jamais eut besoin du c++.
Il en va de même si tu connais que le c++ ou tout autre langage. Il faut avoir plusieurs cordes à son arc.Je remarque cependant, le java est bien plus utilisé que le c++ dans mon secteur. (banque-assurance)
Aujourd'hui il est possible d'utiliser Qt avec java.Java étant portable natif, on n'a pas besoin de s'en pro-occuper (sauf en cas d'utilisation de jni/jna). Pour les performances, si tu ne développes pas correctement ton c++, tu peux avoir des baisses de performance ou des fuites de mémoire. Ces problèmes, tu peux les retrouver, je pense, dans d'autres langage.
Je n'éprouve pas ce sentiment. Mais cette remarque, dépend à quel secteur on l'applique. Pour le secteur web/intranet, je doute (je peux me tromper) que le c++ propose des outils du même niveau que ceux dont on dispose en java. Que ce soit pour le développement ou le déploiement.
Tout dépend ce que tu fais.
Je veux dire par là que quelqu'un qui connait le C++ s'aura s'adapter au C ( pointeurs & co ) comme au Java ( objet ). Après, c'est vrai que le Java est très utilisé, c'est indéniable.
Pour les performances, le compilateur fait déjà une bonne optimisation ( sans compter la gestion simplifiée des threads par les bibliothèques tierces ). Pour ce qui est des fuites mémoires et autres, la majorité des bibliothèques actuelles intègrent un ramasse-miettes ( Qt, Boost ) . De plus, beaucoup de problèmes rencontrés en C++ seront bientôt résolus directement dans le langage d'ici 1 ou 2 ans ( nouveau standard C++-0x, ratifié ISO en 2009, déjà géré par GCC 4.3 ) .
Je suis entièrement d'accord avec toi pour le web, j'utilise le C++ côté GUI ( et bibliothèques applicative ) et le PHP côté web service ( aidé par le C++ si problème de performance il y a ) .
Par contre, la prise de tête en Java pour déployer le moindre programme... surtout si tu ne connais pas l'architecture Java.
Je ne suis pas d'accord. Un programme java sous forme de jar est facile à déployer. Un simple zip(les scripts batchs sont devenus inutiles), un installeur en java ou un java web start rend cette opération très simple.
Pour les applications plus complexes genre une application web avec ou sans EJB, il y a des tâche ant dédiés au déploiement. Maven simplifie aussi ce genre d'opération. Parfois un simple déploiement à chaud par l'interface web du serveur d'application ou du conteneur.
Oui : le langage en lui-même est très simple. C'est d'ailleurs son but à la base : créé facilement des petites applets pour s'amuser.
Le problème, c'est que ça devient vite une usine à gaz car on est totalement prisonnier du modèle objet. D'un point de vue conceptuel, c'est sympa, c'est carré. Mais d'un point de vue productivité, c'est très moyen.
Pour passer une application C++ entière en UTF-8 par exemple, c'est 2 appels maximum ( un pour l'interface, un pour les flux de données, après c'est de la customisation au cas par cas ). En Java, c'est une autre paire de manche.
Dans le même esprit, la dépendance entre Java et le GUI ( Gtk+ sous Linux ) peut rapidement poser des problèmes. Pour le GUI toujours, si on veut personnaliser le moindre élément, c'est la croix et la bannière : il faut déjà penser optimisation. En C++, tu as l'embarras du choix : attaquer le moteur de rendu, mettre une feuille de style, ... de toutes façon, l'optimisation est en très grande partie le travail du compilateur ( hormis l'aspect SQL & co, bien entendu ), donc la seul limite est l'imagination.
Au niveau cross-plateforme, c'est le même topo :
- un moteur web rigoureux et performant ? WebKit,
- un moteur multimédia ? Phonon, VLC,
- de la 3D ? OpenGL,
- ...
Concrètement, j'ai eu à réaliser une application au niveau réseau récemment : à faire fonctionner sous Linux, Windows, SCO avec des performances accrues. C et autotools : du vrai cross-plateforme. C'est vrai, une bibliothèque autre que la standard m'aurait aidé, mais bon. Un seul source pour 3 plateformes, fuites mémoires contrôlées ( en majeure partie, personne n'a le contrôle total ) grâce à Valgrind : ça tourne depuis un moment et on n'a pas besoin de revenir dessus.
Pour avoir travaillé avec les 2 environnements, je constate que Java est de la poudre aux yeux : c'est bien uniquement dans les cas académiques.
Quel genre de projet as tu fait avec Java ? Car dans le monde industriel c'est surtout utilisé pour faire du Java EE ce qui est loin d'être un cas académique. (comme c'est du Java EE, le déploiement n'est pas compliqué car il suffit de déposer l'EAR ou le war sur le serveur d'application)
C'est rarement utilisé pour faire des applets en fait. Le but de base de Java, c'est surtout d'offrir un compilateur compilant vers un bytecode multiplateforme et une machine virtuelle sachant l'exécuter.Oui : le langage en lui-même est très simple. C'est d'ailleurs son but à la base : créé facilement des petites applets pour s'amuser.
Comme on l'aura remarqué je suis pro C/C++ et pas très fana de Java ( et autres C# sharp machin ) .
Ceci dit Java et consorts comme C# c'est sensé "améliorer la productivité et réduire les lignes de code" , non ?
En C/C++ pour déclarer une chaine et l'affecter il faut utiliser strcpy en faisant gaffe aux débordements de tableaux.
Remarque il y a std::string et CString pour MFC,String pour la VCL
C'est curieux concernant ton exemple de chaine de caractere avec Utf8 cela devrait être plus simple en Java, il ya des classes pour ça ? ( je ne suis pas assez calé sur Java )
C'est vrai en Java et autres langages avec GC comme VB.NET et C# on ne peut pas faire un code source "hétéroclite" et déclarer des fonctions que j'appelle dans le vide c.a.d. du genre _cdecl c.a.d. non encapsulée dans une classeLe problème, c'est que ça devient vite une usine à gaz car on est totalement prisonnier du modèle objet. D'un point de vue conceptuel, c'est sympa, c'est carré. Mais d'un point de vue productivité, c'est très moyen.
salut,l'avantage de java c'est la portabilité,plus simple,le graphisme,et pour l'inconvegnent c'est qu'il na pas la gestion des pointeurs et il'est résever au web seulement,pour le c++ son avantage c'est les pointeurs est il'est réserver pour les OS mais malheuresement il n'st pas universel.
Bon, là déjà ça part mal. Quelqu'un qui s'amène en disant "voilà, c'est comme ça et pas autrement", j'sais pas pourquoi mais d'office je me mefie de ca qu'il va dire...
là, je suis bien obligé d'admettre que c'est vrai (même si le C++ reste très portable, mais requiert en général une recompil)c'est la portabilité,
ce serai bien d'expliciter ce que tu entends par plus simple. Mais c'est vrai que d'une manière générale, java est plus simpleplus simple,
????le graphisme,
bizarre, en général on considère cela plutot comme un avantage.et pour l'inconvegnent c'est qu'il na pas la gestion des pointeurs
ah bon, première nouvelleet il'est résever au web seulement,
avantage ou désavantages?pour le c++ son avantage c'est les pointeurs
Ben pas de bol, le C++ a été conçu de sorte à pouvoir convenir dans un maximum d'applications. Cela ne signifie pas qu'il est universel, mais quel langage l'est?est il'est réserver pour les OS mais malheuresement il n'st pas universel.
Partager