Java vs C++

Fermé
Jokerali73 - 8 oct. 2008 à 15:27
 jokerali73 - 10 oct. 2008 à 16:16
Bonjour,

Je commence dans la programmation et je voudrais savoir ce que le java apporte de plus que le C++ ? Je remarque que certain hardware sont programmé en c ou c++ mais bénéficie aussi d'une optimisation spéciale pour le java. pourquoi ne pas garder que le c++ pour la programmation ?

Merci de vos réponse.
A voir également:

9 réponses

depuis maintenant peu de temps, le Java est interprété au niveau hardware par certain processeur ARM comme des instructions natives (comme le C) grâce à la technologie Jazelle, mais cela nécessite un co-processeur dédié ce qui n'est pas toujours possible à être intégré.
Néanmoins merci pour ton support.
2
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 842
10 oct. 2008 à 14:38
Oui il y a toujours des cas particuliers.
Mais, le cas général répond à ta question initiale ;)
Tout le monde n'a pas des processeurs "jazelle".
0
le C++ ne peut il pas faire la meme chose que le Java ?

Je sais que sur le web il y a de nombreux sujets a ce propos, mais je cherche plus une réponse précise plutôt qu'une complète encyclopédie (que je lis pourtant mais qui ne m'apporte pas pour autant des réponses très attendue).

d'ailleurs, une question, pourquoi intégré un co-processeur Java à un system on chip (SoC) si le c++ a les meme possibilité ? est ce que le code est plus petit ?

et dernièrement, est ce que Java Direct Bytecode eXecution (DBX) est la possibilité d'exécuter du code Java comme un code natif par le microprocesseur ?
1
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 842
8 oct. 2008 à 15:51
Je vais pas pouvoir répondre à toutes tes questions, pas trop mon domaine.
Mais sinon, le Java a l'avantage d'être compilé en un langage intermédiaire (le byte-code). Et ce code-là pourra être distribué sur toutes les plates-formes. Ce n'est pas l'OS qui exécutera directement le code semi-compilé mais la machine virtuelle. C'est ce qui explique la portabilité.
Avec le C++, tu le compiles pour un type de processeur. Donc ton code ne sera pas portable.

Voilà la principale différence.
0
Bien que le java soit mis en avance pour sa portabilité n'est pas vraiment ydillique il est vrai, mais il semble que les efforts pour les nouvelles release soit mis en avant par les développeurs. Ce qui est intéressant, je crois, c'est lorsqu'on désire faire des gros projets qui supporte plusieurs programme, venant d'origine différente de pouvoir les assembler ensemble sans a avoir de tout réécrire et recompiler toujours. Même si il semble qu'il y ai toujours un petit temps d'adaptation de programme. Cela ne marche pas "first try, fisrt done" (je crois que l'expression s'écrit comme ça). Mais après toute mes recherches, en effet la portabilité semble être le plus gros souci du java.
1
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 842
10 oct. 2008 à 16:04
Le plus gros souci ?
Bof. Pas vraiment. Le seul problème de compatibilité est dans les machines virtuelles. Si ce n'est pas la bonne version, ça ne marchera pas. Ce qui est logique.
Pour moi le plus gros souci de java est sa lourdeur. Tout est plus lourd que dans les autres langages. Bon ceci est de moins en moins un problème avec le progrès des PC (mémoires et processeurs).
Mais pour les petites mémoires, le JAVA pose toujours problème.
0
Parmi mes recherches c'est en effet un point sur lequel j'ai oublier d'ajouter dans les défauts. Le java (même la techno Jazelle) est réservé pour les processeurs supérieur à 1GHz, avant la lourdeur empêche une réelle fluidité des programmes. C'est d'ailleurs pourquoi cette techno n'est pas intégré au processeur plus vieux.
1

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 842
8 oct. 2008 à 15:36
Salut,
Sur internet, il y a pleins de sites qui parle de ça.
Sinon sans rentrer dans les détails. Le Java a l'avantage d'être facilement portable, tout du moins plus que le C++ car pas besoin de recompiler pour chacune des plate-formes.
0
J'apporte moi même quelques réponses à mes propres questions si un jour qq un se pose les même questions :

Pourquoi choisir le JAVA plutôt que le C/C++

1er : Les applications écrites en JAVA sont plus facilement portable sur d'autre plateforme et généralement plus rapide. Ce qui permet un cout plus faible et un temps de développement plus rapide.

2eme : il y a une grande communauté qui supportent le JAVA, constamment en amélioration d'ou le développement des application third parties.

3eme : Java est un langage plus sécurisé.

4eme : Bytecode permet un bon rendement pour la mémoire, cela réduit le temps de téléchargement d'une application, et un stockage plus facile.
En parlant des applications portables, avec une quantité de mémoire plus petites et un cout moindre (acheter un téléphone portable a 500€, pas facile).

Je travaille conjointement avec la compagnie ARM qui implante de plus en plus des optimisations pour le JAVA grâce à leur technologie Jazelle.

Si des personnes sont intéressé par des informations ou souhaiterais s'équiper de produit de développement ARM, je peux les aider.

Voila je crois avoir répondue finalement à toutes mes questions.

_________________________________________

CMP, Distributor for ARM tools for university and laboratory
0
cedric1989 Messages postés 257 Date d'inscription samedi 19 avril 2008 Statut Membre Dernière intervention 25 octobre 2012 37
9 oct. 2008 à 20:58
bof la portabilité faut faire attention, car si on travaille en entreprise, ou dans un école sur des machines qui n'ont pas de machines virtuelles, et ou bien sur on ne peut pas en installer, je vois pas trop ou est l'avantage de portabilité.(Avec un programme écrit en C, il n'y aurait pas eu ce problème)
Et en C/C++, il suffit d'utiliser des bibliothèques portables, et on peut compiler sur plusieurs système d'exploitation.
De plus, les problème de portabilité inévitable en C++, qui sont évitable en java, j'en ai jamais vu, maintenant j'ai peut être pas assez d'expérience.

Le langage C++ a aussi une grande communauté. On trouve très facilement de l'information, et on obtient très facilement des réponses a nos problèmes que ce soit java ou C++.

Sinon C++ serait légèrement plus rapide que java (mais c'est pas toujours visible à l'oeil humain), mais la probabilité de faire des erreurs de programmations seraient un peu plus élevé en C++.

Sinon je pense qu'il n'y a pas de réponse exacte à ta question, il n'y a pas vraiment de langage meilleur que d'autres. Les deux ont leur avantages et inconvénients. Ceux qui te répondent en te parlant seulement d'un seul langage ne sont pas trés objectif, pour les 2 langages on peut trouver des bons arguments. Par exemple, c'est clair que jokerali73 n'a juste pour objectif de faire de la pub pour java.

J'ai quand même l'impression que concernant les jeux vidéo, il est quand même plus facile de trouver de l'aide, et des bibliothèques en C++, qu'en java. Pour le reste, je sait pas lequel pourrait être le meilleur.
0
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
10 oct. 2008 à 15:22
Les problème de portabilité en C++ qui ne sont pas en java interviennent dans certain cas. Je n'utilise que Linux et XP, donc il peut y avoir d'autres souci lorsque les processerus sont différents :
Problèmes de portabilité des interfaces graphiques, si tu utilise les GUI windows, impossible de porter directement sous Linux (ou alors peut être avec Wine, mais c'est pas gagné) et inversement si tu utilise le X11 de base.
Ensuite, les sockets ne sont pas exactement pareil.
Dernier exemple, la mesure de l'occupation CPU. Bref plein d'exemple.
Par contre, plutôt d'accord sur la portabilité Java qui n'est pas aussi idyllique qu'on le dit souvent.
0
Ahh désolé que vous me compreniez comme ça. En effet j'ai posé des questions car vraiment je ne savais pas. ensuite après des recherches j'ai finalement trouvé des réponses à mes questions. Mais dans un cas précis d'une utilisation de Java dans des application embarqué et une implantation de Java dans les microprocesseurs.

Ma question original était pourquoi faire tant d'effort pour implanté un technologie pour exploité le Java alors que les processeurs sont à la base programmé en C/C++.

Ensuite mes réponses sortent des documentations du constructeur. Pour une plus grande flexibilité, il a été choisi de donner la possibilité d'utiliser le Java et le C sur leur processeur et dans un effort de donné des programme rapide, autant en C que en Java il implante leur technologie.

De plus je ne parlais pas de langage meilleur qu'un autre, mais seulement pourquoi préféré l'un plutôt que l'autre ou pourquoi faire tant d'effort pour intégré le java si le C permet la même chose. Sachant que le C est un langage de base qui ne nécessite pas de techno particulière contrairement au Java.

Alors oui c'est étrange j'ai donné moi même des réponses, je n'aurais pas donné les réponses si cela n'intéressait personne. Ensuite je ne travaille pas POUR ARM, mais je travaille conjointement.

Et pour la gouverne de NiqueLapub (un pseudo très évocateur, a se demander si tu n'es pas venu ici pour pourrir mon post) ARM possède près de 80% du marché des microprocesseurs. Tu as un portable, une console de jeux portable, un GPS, baladeur mp3, il y a de forte chance qu'il soit équipé d'un processeur ARM. Si tu avais lu les autres posts, tu te serais rendu compte que je parle dans un cas précis : SoC.

Je ne fais pas de pub, qui acheterais un processeur nu ? pourquoi faire ? mais si des universités ont des volonté d'apprentissage, alors elles peuvent être intéressées.
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 842
10 oct. 2008 à 13:32
La comparaison entre le C et le java est rapide. Java est objet et le C non.
Donc on va comparer plutôt le Java avec le C++ qui sont tous les deux des langages objets.
Le java comme je t'ai dit plus haut, est portable contrairement au C++. Mais le Java n'est pas compréhensible directement par le processeur. Il faut donc installer une machine virtuelle. Donc pour l'embarqué, c'est hors de question.
De plus le Java est extrêmement coûteux en mémoire, tout du moins plus que le C++. Mais le Java est plus sécurisé.
Tu vois donc que chacun ont des avantages et des inconvénients.
Voilà pourquoi les deux sont tant utilisés.

Cdt
0