IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Débats sur le développement - Le Best Of Discussion :

[Débat] C++ vs Java


Sujet :

Débats sur le développement - Le Best Of

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    259
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 259
    Par défaut
    Citation Envoyé par Elrond
    C++ est plus complet (on peut a peu pres tout faire avec), plus performant (quand correctement concu et code), plus generaliste(bien que en principe objet, on n'est pas oblige de faire de l'object avec), plus puissant (template, ...), plus complet (il vit depuis longtemps et possede de tres nombreuses librairies, standard ou non). C'est egalement un langage tres complique et tres sujet a l'erreur et a l'introduction de bogues.

    Java est plus facile a apprendre et utiliser, plus portable, plus objet.

    Dans les deux cas il peut y avoir des problemes de compatibilite. Au niveau C++, c'est surtout lie a la portabilite (si tu code du C++ standard), mais le code est ensuite rarement compatible, sur une meme machine , d'un compilateur a un autre. Au niveau Java, il y a des problemes de compatibilite et support entre les versions. La version 2.0 de Java n'est pas supportee partout et par tous.
    Juste une chose : tu dis qu'il y a en C++ plus de librairies, ca j'en suis pas bien certain, mais une chose est sure, c'est qu'elles sont très inégales, et peu facile a trouver contrairement a java qui apporte en standard un bon paquet de librairies, et qui ensuite a des groupes comme apache qui hébergent des tas de librairies de qualité. Ca aide beaucoup a trouver ce qu'on veut.

    Quant a la version 2.0, c'est un peu obsolète, on en est a la 6.0 là. J'imagine que tu veux parler des applets et de Windows qui a souvent une jvm 1.1. Mais c'est en train de changer car heureusement Microsoft n'a plus le droit de distribuer sa JVM.

    Et enfin pour ce qui est de la rapidité du langage, c'est un peu plus complexe que ce que tu affirmes.
    Prend un simple exemple de md5. En java il est 2 fois plus rapide que le md5sum de linux. Ensuite c'est vrai que tu peux optimiser a mort ton md5 en C et tu ira encore plus vite que java, mais tu auras perdu beaucoup de temps.
    Bref dans beaucoup de cas il est faux de dire que le C/C++ est plus rapide que java car ca dépend énormément du développeur derrière et du type de projet. C'est sur que pour écrire un driver ou un moteur 3d le C++ sera plus adapté. Mais pour écrire un traitement de texte pas sur du tout que le c++ soit plus efficace

  2. #2
    Membre éprouvé
    Homme Profil pro
    Développeur
    Inscrit en
    Août 2003
    Messages
    1 504
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Août 2003
    Messages : 1 504
    Par défaut
    JAVA :
    - plus simple que C++
    - Documentation plus accessible
    - Multi plateforme
    - GUI facile a mettre en place

    J'aime aussi c++ pour les raisons suivantes :
    - natif donc plus rapide que java a l'execution
    - gestion de la memoire
    - pour les GUI, il faudrait que j'essaye des librairies specifiques (GTK...) car WINAPI

  3. #3
    Membre éclairé Avatar de Hypnos
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2002
    Messages : 87
    Par défaut
    Citation Envoyé par elrond
    C'est egalement un langage tres complique et tres sujet a l'erreur et a l'introduction de bogues
    Effectivement, car le C te permet de faire n'importe quoi, tu dois donc bien savoir ce que tu fais, car tu peux vite arriver à écrire dans une partie de la mémoire non désrée et écraser des données d'autres variables de ton programme. Le C ne te dira pas qu'il y a une erreur si ton programme est syntaxiquement correct, c'est à toi à garder les yeux ouverts.

    En Java tu es beaucoup plus paterné, tu ne sais pas faire grand chose par toi-même, tu appelles des fonctions qui se débrouillent.

    Pour moi, je me suis directement tourné vers le C et n'ai appris le Java que plus tard, par curiosité. Parce qu'avec le C je me sentais plus libre.

  4. #4
    Membre confirmé
    Inscrit en
    Décembre 2002
    Messages
    152
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 152
    Par défaut
    à tous pour vos réponses !

    Je crois que c'est la rapidité d'exécution et la liberté du fait de pouvoir accéder à tout qui m'attirent le plus et c'est pour cela que je vais me mettre sérieusement au C++ (m'en tape d'la difficulté ).

    Encore une chose : N'existe-t'il pas différents compilateurs pour permettre de porter un code sous différentes platformes ? Du style j'écris un prog, je crée un executable pour Windows avec un compilateur puis je crée un deuxième executable (du même code) pour Unix avec un compilateur pour Unix ? Ou bien c'est plus compliqué du fait que vous vous servez vraiment de l'architecture de la machine en question ?

    Merci !

  5. #5
    Membre expérimenté Avatar de Epictète
    Inscrit en
    Mars 2002
    Messages
    219
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 219
    Par défaut
    Citation Envoyé par Gregork
    Encore une chose : N'existe-t'il pas différents compilateurs pour permettre de porter un code sous différentes platformes ? Du style j'écris un prog, je crée un executable pour Windows avec un compilateur puis je crée un deuxième executable (du même code) pour Unix avec un compilateur pour Unix ? Ou bien c'est plus compliqué du fait que vous vous servez vraiment de l'architecture de la machine en question ?
    C'est possible pour du code pur C++ANSI

    Cependant contrairement à Java, il manque plein de chose à C++ ce qui fait que pour faire certaines choses (exemple interfaces utilisateurs : swing en java, en C++ rien) , ou accès sgbd (jdbc en Java, en C++ rien), etc, tu doit soit utiliser une lib pour l'OS, donc non portable, soit trouver une lib portable. Mais c'est une LIB en plus, c'est pas inclus dans le standard C++.

    Dans Java c'est inclus, donc toujours standard et toujours portable.

    Le vrai choix entre C++ ou Java se situe au niveau du besoin. Exemples de besoins :

    - Faire un jeux 3D compilé en natif pour windows : C/C++/Delphi
    - Faire une application web : Java, ASP, ASPX, PHP, Delphi, etc...
    - Faire une application distribuée d'entreprise : Java, .NET...

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 8
    Par défaut
    Citation Envoyé par Epictète
    Cependant contrairement à Java, il manque plein de chose à C++ ce qui fait que pour faire certaines choses (exemple interfaces utilisateurs : swing en java, en C++ rien) , ou accès sgbd (jdbc en Java, en C++ rien), etc, tu doit soit utiliser une lib pour l'OS, donc non portable, soit trouver une lib portable. Mais c'est une LIB en plus, c'est pas inclus dans le standard C++.
    Personnellement, je suis un adepte de C++ + QT. Et franchement, à part pour des application Internet, java ne fait pas le poids !

  7. #7
    Membre très actif
    Inscrit en
    Août 2005
    Messages
    307
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 307
    Par défaut Le vrai pb de C++: la standardisation
    Je crois que comme certain l'on peut être déjà dit (mais chui pas sûr), le vrai problème de C++ est le manque de biblio standard de haut niveau, et je trouve que là c'est un serieux problème, lorsqu'on doit par exemple maintenir un code qui a été écrit par une tierce personne, car la probabibilité qu'il ait utilisé une bibliothéque qu'on ignore totalement est beaucoup plus élévé qu'en Java. (ce qui va dimunier la productivité)

  8. #8
    Expert confirmé
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 540
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 540
    Par défaut
    Citation Envoyé par kisitomomotene
    Je crois que comme certain l'on peut être déjà dit (mais chui pas sûr), le vrai problème de C++ est le manque de biblio standard de haut niveau,
    tout à fait mais cela ne se fait pas parce que les éditeurs d'OS se font la guerre Voir Java , Sun vs M$...
    Si Sun et M$ se seraient mis d'accord sur un standard commun de telles biblios existeraient

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    38
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 38
    Par défaut
    Citation Envoyé par Mat.M
    tout à fait mais cela ne se fait pas parce que les éditeurs d'OS se font la guerre Voir Java , Sun vs M$...
    Si Sun et M$ se seraient mis d'accord sur un standard commun de telles biblios existeraient
    Il y a de toute façon une abstraction trop faible entre la plateforme d'execution et le langage C++ pour que soit viable comme idée, au contraire du langage Java.

    C++ est un langage, ni plus ni moins. Et Java est un langage qui s'accompagne d'un environnement d'execution ( sa machine virtuelle et son framework de classes ), son abstraction le lui permettant.

    Comparer les deux, c'est un peu comme comparer la grammaire française et un dictionnaire anglais.

    Alexis.

  10. #10
    Modérateur
    Avatar de bruno_pages
    Homme Profil pro
    ingénieur informaticien à la retraite
    Inscrit en
    Juin 2005
    Messages
    3 551
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : ingénieur informaticien à la retraite
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2005
    Messages : 3 551
    Par défaut
    Citation Envoyé par audibert
    Personnellement, je suis un adepte de C++ + QT. Et franchement, à part pour des application Internet, java ne fait pas le poids !
    je suis bien d'accord avec toi

    le fait de préférer tel ou tel langage pour des raisons de gout ne se discute pas, mais pour le reste il faut bien dire qu'il n'y a pas photo lorsque l'on developpe de 'vraies' applications, les faits parlent d'eux-même et sont particulièrement tétus. Si Bouml utilise aussi peu de resources mémoire et CPU c'est aussi grace au couple C++ & Qt. La comparaison avec des modeleurs écrit en Java est particulièrement édifiante

    S'il n'y a pas qu'un seul langage de programmation ce n'est pas pour rien, chacun à sa place quelque part et des domaines il est mieux adapté que les autres. Le problème ne se pose donc pas au niveau des langages eux-même, le problème se pose au niveau des utilisations inapropriées. Je ne vais donc pas utiliser C++ pour animer une page Web, et je ne vais pas utiliser Java pour le développement d'une grosse application ayant des contraintes de temps et mémoire comme un modeleur UML
    Bruno Pagès, auteur de Bouml (freeware), mes tutoriels sur DVP (vieux, non à jour )

    N'oubliez pas de consulter les FAQ UML et les cours et tutoriels UML

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    259
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 259
    Par défaut
    Citation Envoyé par bruno_pages
    je suis bien d'accord avec toi

    le fait de préférer tel ou tel langage pour des raisons de gout ne se discute pas, mais pour le reste il faut bien dire qu'il n'y a pas photo lorsque l'on developpe de 'vraies' applications, les faits parlent d'eux-même et sont particulièrement tétus. Si Bouml utilise aussi peu de resources mémoire et CPU c'est aussi grace au couple C++ & Qt. La comparaison avec des modeleurs écrit en Java est particulièrement édifiante

    S'il n'y a pas qu'un seul langage de programmation ce n'est pas pour rien, chacun à sa place quelque part et des domaines il est mieux adapté que les autres. Le problème ne se pose donc pas au niveau des langages eux-même, le problème se pose au niveau des utilisations inapropriées. Je ne vais donc pas utiliser C++ pour animer une page Web, et je ne vais pas utiliser Java pour le développement d'une grosse application ayant des contraintes de temps et mémoire comme un modeleur UML
    Tu as a moitié raison, certaines choses sont plus adaptées a un langage plutot qu'un autre. Mais le cas de l'UML est exactement le cas ou le C++ ne fait pas nécéssairement la différence.
    Effectivement Bouml est plus léger que la plupart des autres modeleurs UML. Mais faut aussi voir au niveau de ce qu'il peut faire. Et surtout, du point de vue des performances pures, ses concurrents sont plus lent et plus lourds qu'ils soient écrit en Java ou non. Donc dans ce cas précis ce n'est peut être pas le langage qui fait la différence.
    Si énormément de soft UML sont écrit en Java, j'imagine que c'est pas juste parce que les éditeurs sont des idiots, et que finalement l'intérêt du C++ n'est pas si décisif que ca et que le choix est possible.

  12. #12
    Expert confirmé
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 540
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 540
    Par défaut
    Citation Envoyé par bruno_pages
    le fait de préférer tel ou tel langage pour des raisons de gout ne se discute pas, mais pour le reste il faut bien dire qu'il n'y a pas photo lorsque l'on developpe de 'vraies' applications, les faits parlent d'eux-même et sont particulièrement tétus. Si Bouml[/URL] utilise aussi peu de resources mémoire et CPU c'est aussi grace au couple C++ & Qt. La comparaison avec des modeleurs écrit en Java est particulièrement édifiante
    Cela fait des années que je le dis ; quand on va à la Fnac et qu'on achète un soft pro c'est pas développé en Java...et Ms Office ou Open Office par exemple ne sont pas développés en Java

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    259
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 259
    Par défaut
    Citation Envoyé par Mat.M
    Cela fait des années que je le dis ; quand on va à la Fnac et qu'on achète un soft pro c'est pas développé en Java...et Ms Office ou Open Office par exemple ne sont pas développés en Java
    Je connais aucun soft vendu a la Fnac qui soit développé en QT ... Et j'imagine que tu es simplement un trolleur car il existe des softs pro écrit en Java.

  14. #14
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Mat.M
    Cela fait des années que je le dis ; quand on va à la Fnac et qu'on achète un soft pro c'est pas développé en Java...et Ms Office ou Open Office par exemple ne sont pas développés en Java
    Même s'il est principalement développée en C/C++, de nombreuse fonctionnalité d'OpenOffice.org sont écrite en Java (ce qui avait posé une grosse polémique dans le monde du libre à l'époque puisque Java n'était pas libre).

    Et cette absence de Java coté client est du au fait que depuis longtemps Sun avait privilégier J2EE (les applications serveurs) aux dépend des applications clientes. Mais cela aussi c'est en train de changer et on voit Java revenir petit à petit sur le poste client...

    a++

  15. #15
    gl
    gl est déconnecté
    Rédacteur

    Homme Profil pro
    Inscrit en
    Juin 2002
    Messages
    2 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 165
    Par défaut
    Citation Envoyé par Elrond
    C++ est plus complet (on peut a peu pres tout faire ).
    Je ne suis pas tout a fait d'accord, il existe de nombreuses choses qui n'existe pas directement en C/C++, mais qui necessite des bibliotheques speciales ou qui sont des fonctionnalites propres au compilateur (ex : IHM, Son, Graphisme, Base de donnee, etc.) alors que la plupart de ces fonctionnalites sont de base en Java.

  16. #16
    Membre actif
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2009
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 39
    Par défaut
    Citation Envoyé par gl Voir le message
    Je ne suis pas tout a fait d'accord, il existe de nombreuses choses qui n'existe pas directement en C/C++, mais qui necessite des bibliotheques speciales ou qui sont des fonctionnalites propres au compilateur (ex : IHM, Son, Graphisme, Base de donnee, etc.) alors que la plupart de ces fonctionnalites sont de base en Java.
    Entierement d'accord avec toi, je ne suis pas d'accord sur le le fait que le C++ est plus complet, surtout que Java n'est pas seulement un langage mais une technologie, avec J2EE tu peux pratiquement développer n'importe quelle application d'entreprise, web, appli local, appli client serveur, des applets etc...

  17. #17
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    842
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 842
    Par défaut
    Pour quoi Java ou .net pour une application distribuée en entreprise ???

    Quoiqu'il en soit, une autre particularité du C++ est de n'etre pas restreint a la programmation sur PC. En C++ tu peux très bien programmer pour des machines des automates des plateformes ou je ne sait quoi. Pour quasiment tout ce qui est programmable on pourra creer un compilateur C++

    Quoiqu'il en soit, si tu apprends le C++, il n'y aura pas grand chose de plus a apprendre pour le Java. (En fait il y aura surtout a oublier) Et quoiqu'on en dise, même si il y a des noms de fonctions a rééaprendre pour le Java, ce n'est qu'un moindre mal, sachant qu'en C++ tu as enormement de fonctions qui font plus ou moins la même chose, suivant les librairies que l'on choisit d'utiliser. Les noms fonctions ca s'apprends pas par coeur, ca s'utilise a l'arrache.

  18. #18
    Membre expérimenté Avatar de Epictète
    Inscrit en
    Mars 2002
    Messages
    219
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 219
    Par défaut
    Citation Envoyé par Blustuff
    Pour quoi Java ou .net pour une application distribuée en entreprise ???
    C'est ce qui se dessine dans la majorité des grand comptes : Java (80%) ou .NET (20%) (option CORBA ou SOAP)

    Citation Envoyé par Blustuff
    soit, une autre particularité du C++ est de n'etre pas restreint a la programmation sur PC. En C++ tu peux très bien programmer pour des machines des automates des plateformes ou je ne sait quoi. Pour quasiment tout ce qui est programmable on pourra creer un compilateur C++
    Comme pour Java

    -> énormément d'applications embarquées pour Java...

    Pour se former sur Java voir ces cours et tutoriels : http://java.developpez.com/cours/

    Pour les débutants Java celui la est vraiment au top : Programmation Java pour les enfants, les parents et les grands-parents.

  19. #19
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 5
    Par défaut
    je suis tout à fait d'accord avec epictète. Java était avant tout destiné à être embarqué, mais a d'abord percé là où on ne l'attendait pas.

    Aujourd'hui certaines machines virtuelles ont été porté vers de architectures autres que x86 (strongarm, powerpc ...).

    Pourquoi java est il devenu le numéro 1: tout simplement parce qu'il permet au développeur de s'affranchir d'un grand nombre de difficultés (notamment au niveau gestion de la mémoire). On peut donc développer plus vite des applis souvent moins buggées.

    Le C++ n'est cependant pas mort pour autant, et est encore largement utilisé en entreprise, notamment grâce à ces performances par rapport à java (langage compilé).
    Mais en ce qui concerne la portabilité, il vaut mieux ne pas trop y penser

  20. #20
    Membre confirmé
    Inscrit en
    Décembre 2002
    Messages
    152
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 152
    Par défaut
    Mais y-a-t'il une chance pour que C++ soit abandonné un jour ou cela semble-t'il impossible du fait de sa grande popularité mais surtout du fait qu'il n'y a pas (ou peu) d'autres langages natifs aussi puissants ?

    Même question pour Java : quelles sont ses chances d'être remplacé un jour, par quoi, etc. ?

Discussions similaires

  1. [Débat] Technologie .NET vs JAVA
    Par neo.51 dans le forum Débats sur le développement - Le Best Of
    Réponses: 1047
    Dernier message: 14/01/2019, 16h15
  2. [Débat] .NET vs JAVA/J2EE
    Par tssi555 dans le forum VB.NET
    Réponses: 5
    Dernier message: 10/12/2008, 07h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo