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

  1. #801
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par Luc Hermitte Voir le message
    Hum ... Permets-moi d'être circonspect. Je vois quantité de problèmes. Que le code client implémente de l'interface, et il n'y a aucun moyen de vérifier automatiquement (dans le code client) que les contrats des opérations de l'interface seront bien respectés si le client n'encapsule pas son objet dans le décorateur qui va bien.
    Oui, c'est sur, il faut avoir une bonne "hygiène" de programmation pour faire de la prog par contrat en Java. Cela dit, en C++ aussi.

    Quelque soit le langage, ces problèmes peuvent être résolus d'une ou plusieurs façons différentes. Ces besoins existent de manière complètement indépendante de l'OO. L'OO apporte juste de nouvelles façons de les solutionner. Si on doit évaluer les nouveaux apports OO du C++, c'est relativement aux problèmes qu'ils solutionnent. Pas par rapport à des éléments syntaxiques prochent qui ne solutionnent pas les mêmes problèmes.
    A mais je suis totalement d'accord avec toi. La discussion s'est un peu enflammée suite au post de Jean-Marc.Bourguet sur le hack de Java concernant les littéraux. Et dans ce cas, je voudrais bien qu'on m'explique quel était le "problème" dont la solution naturelle en Java est la modification par reflection des attributs privés d'un objet java.lang.String

  2. #802
    Membre actif Avatar de 5:35pm
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    201
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2006
    Messages : 201
    Points : 217
    Points
    217
    Par défaut
    Au sujet de l'obsolescence de c++, je ne l'ai pas meme entrapercu.
    allez faire un tour sur sourceforge.net, vous verrez du c++, du php, des languages libre en tres grande majorite.
    C++ traverse le temps car, il s'est impose a un moment tres important dans l'histoire de l'informatique, on ne change pas un standard comme on change de slip.
    Les librairies c++ sont tres diverse, deviennent toujours plus mature; les choix sont de qualite; et tres important: on controle tout.

    Java a de grandes qualites; qui resident dans la simplicite de development, la productivite, la portabilite; son framework; beaucoup de belles choses qui facillitent la vie.
    Mais Java est une technologie jeune, et proprietaire, et c'est pour cela que son obsolescence; sa longevite est plus a remettre en question que C++.

  3. #803
    Nouveau Candidat au Club

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    452
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Afghanistan

    Informations forums :
    Inscription : Juin 2003
    Messages : 452
    Points : 0
    Points
    0
    Billets dans le blog
    1
    Par défaut
    Dire que java est lent ne veut rien dire ,ca dépend du programme qu'on fait tourné et de la machine.
    Aujourd'hui bcp de machine sont sous employé au niveau puissance de calcul...
    Dire :
    sur mon ordi quadri coeur je vais programmer mon tetris en C++ car c'est plus rapide que JAVA n'a aucun sens.

    L'utilisateur final ne verra pas la différence...

    Art of illusion est un modeleur ecrit en java ...

    l'équivalence sémantique ne veut pas dire grand chose.
    si pour un concept dans un langage il faut pour le même concept écrire 10 fois plus de ligne de code dans un autre langage, l'équivalence sémantique n'a pas bcp de sens.
    Et si on automatise cette écriture on créé en quelque sorte un nouveau langage donc la comparaison des deux langages est faussé.

  4. #804
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    361
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 361
    Points : 429
    Points
    429
    Par défaut
    Citation Envoyé par 5:35pm Voir le message
    Mais Java est une technologie jeune, et proprietaire, et c'est pour cela que son obsolescence; sa longevite est plus a remettre en question que C++.
    Java est devenu open source il n'y a pas très longtemps.

    Quand on voit par exemple tous les projets de qualité qui augmentent la productivité (qui est à notre époque un élément clé en entreprise) des développeurs, je ne vois pas comment tout serait abandonné ... Surtout que ça ne fait que de s'améliorer. Les différences de performances entre Java et C++ se réduisent de plus en plus ...

    Mais après croire que faire un programme est simple avec Java, ça peut être une grosse erreur, car finalement, à part les pointeurs et le GC (qui est complexe à configurer), tout le reste il faut le gérer quand même. On gagne certes en lisibilité, mais tout le boulot reste à faire. La concurrence par exemple ne va pas être gérée à ta place.

    Enfin bref, on commence à tourner en rond là.

    Citation Envoyé par Luc Hermitte
    Oui. Comment tu spécifies tes pré- et post-conditions, ainsi que tes invariants dans une interface ? (sans passer par un outil pré-processant ta javadoc)
    Le C++ le permet nativement en héritant multiplement de classes abstraites, qui elles enforcent les contrats en vérifiant tout cela. Cela demande certes de l'huile de coude (comparé à Eiffel ou D), mais c'est supporté nativement.
    Ok. Il y a d'autres façons de faire ce genre de choses, même si c'est peut être moins pratique.
    Mais vu l'utilisation fait en C++ de l'héritage multiple, je suis bien content qu'il n'y en ait pas en Java (peut être pu pour longtemps d'ailleurs ...).

  5. #805
    Membre éprouvé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2006
    Messages
    519
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Septembre 2006
    Messages : 519
    Points : 1 104
    Points
    1 104
    Par défaut
    Citation Envoyé par leopard261 Voir le message
    ce debat ne finira jamais,
    je fais de la 3D en java, base de donne,site web, essaie de faire ca en c++.
    il n y a pas une grande difference de rapidite en java et c++. et java est un langage qui est mis à jour, donc l ecart va se reduire
    C++ est aussi mis à jour

  6. #806
    Nouveau Candidat au Club

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    452
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Afghanistan

    Informations forums :
    Inscription : Juin 2003
    Messages : 452
    Points : 0
    Points
    0
    Billets dans le blog
    1
    Par défaut
    Peut on gérer en C++ les template aussi bien qu'en java

    Par exemple pour spécifier qu'un type paramétré doit être une sous classe d'un type donnée.

    T <T extends Bidule> get(T x)

    Je vois que personne n'a répondu pour l'implémentation d'un proxy en c++ comme en Java

    un Proxy en java permet d'implémenter dynamiquement une interface

    par example
    interface Personne {
    String nom();
    String prenom (); }

    on peut créer un objet proxy (sans créer explicitement de classe ) qui implemente l'interface
    et chaque appel à un méthode de l'interface provoque l'execution d'une méthode
    Object invoke(Object reiceiver,Method m,Object [] arguments)

    cet mecanisme permet de faire bcp de chose par exemple tracer tous les appel fait a un objet

  7. #807
    Expert éminent sénior
    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
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par super_navide Voir le message
    Peut on gérer en C++ les template aussi bien qu'en java
    En Java ce n'est pas des templates mais des generics, qui malgré une apparente similarité, mettent en place des mécanisme très différent...

    Mais ce petit jeu du "Java a çà et pas C++" est loin d'être intéressant ou utile. Et à ce jeu là le C++ serait grand gagnant car il comporte beaucoup plus de concept que Java...

    a++

  8. #808
    Membre actif Avatar de 5:35pm
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    201
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2006
    Messages : 201
    Points : 217
    Points
    217
    Par défaut
    Citation Envoyé par nicØB
    Java est devenu open source il n'y a pas très longtemps.
    je serais curieux de voir la liscence
    la machine virtuelle est open source?
    tu veux probablement dire "a ete standardise".
    Les différences de performances entre Java et C++ se réduisent de plus en plus ...
    oui ce meme refrain que j'entends souvent; il ne faut pas oublier la consomation de memoire vive qui est enorme; et puis, je le croirais quand je verrai l'industrie du jeux video migrer vers Java

    Citation Envoyé par nicØB Voir le message
    Mais vu l'utilisation fait en C++ de l'héritage multiple, je suis bien content qu'il n'y en ait pas en Java (peut être pu pour longtemps d'ailleurs ...).
    c'est quoi l'utilisation qu'on en fait en c++? ah c'est sur faut savoir determiner ou et comment l'utiliser. perso je m'en passerai difficilement; Je me suis souvent sentis limite en c# par l'absence d'heritage multiple.
    Et si ca peut te rassurer, en Java ce ne sera pas possible (toute classe derivant de "object")

    Mais après croire que faire un programme est simple avec Java, ça peut être une grosse erreur, car finalement, à part les pointeurs et le GC (qui est complexe à configurer), tout le reste il faut le gérer quand même.
    Du point de vue d'un Cplusplusien; programmer avec Java, c'est simple. Mais faut pas le prendre mal, c'est une bonne chose nan?

    Je sais que tout ce qu'on dit la a deja ete dis, mais c'est tellment marrant de taper sur java

  9. #809
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Points : 9 818
    Points
    9 818
    Par défaut
    Citation Envoyé par 5:35pm Voir le message
    je serais curieux de voir la liscence
    la machine virtuelle est open source?
    tu veux probablement dire "a ete standardise".

    Pour openJDK : licence GPL : http://www.openjdk.org/ (il y a la JDK, la machine virtuelle et le compilateur).

  10. #810
    Nouveau Candidat au Club

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    452
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Afghanistan

    Informations forums :
    Inscription : Juin 2003
    Messages : 452
    Points : 0
    Points
    0
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par adiGuba Voir le message
    En Java ce n'est pas des templates mais des generics, qui malgré une apparente similarité, mettent en place des mécanisme très différent...

    Mais ce petit jeu du "Java a çà et pas C++" est loin d'être intéressant ou utile. Et à ce jeu là le C++ serait grand gagnant car il comporte beaucoup plus de concept que Java...

    a++

    oui mais tu n'a pas répondu a ma question en c++ peut-on spécifier cette contrainte.....
    oui mais il y a un point commun faire des type paramétré.

    Après générer du code avec le préprocesseur/compilateur via les templates
    a un intéret discutable.

  11. #811
    Expert éminent sénior
    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
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par 5:35pm Voir le message
    je serais curieux de voir la liscence
    la machine virtuelle est open source?
    tu veux probablement dire "a ete standardise".
    GPLv2, avec la Classpath-exception qui permet de ne pas avoir d'impact sur la licence les programmes développés en Java...

    Plus d'info : https://openjdk.dev.java.net/


    Citation Envoyé par 5:35pm Voir le message
    perso je m'en passerai difficilement; Je me suis souvent sentis limite en c# par l'absence d'heritage multiple.
    Perso c'est plutôt l'inverse : je n'en sens pas vraiment le besoin. C'est surement une question d'habitude...

    Au passage l'héritage multiple en Java aurait été plus problématique du fait que toutes les méthodes sont virtuelles par défaut (à l'inverse du C++).


    Citation Envoyé par 5:35pm Voir le message
    Du point de vue d'un Cplusplusien; programmer avec Java, c'est simple. Mais faut pas le prendre mal, c'est une bonne chose nan?
    C'est étrange car beaucoup de dev C/C++ ont cette idée en tête et viennent faire débugger du code Java tout pourris par méconnaissance du langage


    a++

  12. #812
    Membre actif Avatar de 5:35pm
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    201
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2006
    Messages : 201
    Points : 217
    Points
    217
    Par défaut
    Citation Envoyé par millie Voir le message
    Pour openJDK : licence GPL : http://www.openjdk.org/ (il y a la JDK, la machine virtuelle et le compilateur).
    oui, donc Java a ete "standardise".

  13. #813
    Expert éminent sénior
    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
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par super_navide Voir le message
    oui mais tu n'a pas répondu a ma question en c++ peut-on spécifier cette contrainte.....
    Je ne connais pas suffisamment le C++ pour répondre à cela. Je n'ai que des notions de base et je n'ai jamais vraiment manipulé les templates...

    Citation Envoyé par 5:35pm Voir le message
    oui, donc Java a ete "standardise".
    Que veux-tu dire par "standardisé" ? Ce n'est pas très clair ???

    a++

  14. #814
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Citation Envoyé par 5:35pm Voir le message
    oui, donc Java a ete "standardise".
    La quasi-totalité du JDK est maintenant sous GPL, je n'appelle pas ça une "standardisation", j'appelle ça une libération de code.

    --
    Jedaï

  15. #815
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Points : 9 818
    Points
    9 818
    Par défaut
    Ca dépend. Il existe d'autre JDK. Par exemple le JDK d'IBM qui lui est toujours sous licence pas GPL.

    Par exemple l'entête du fichier String.java :

    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    /*
     * @(#)src/classes/sov/java/lang/String.javam, asdev, as1420, 20040618 1.3.1.1
     * ===========================================================================
     * IBM Confidential
     * OCO Source Materials
     *
     * IBM SDK, Java(tm) 2 Technology Edition, v1.4.2
     * (C) Copyright IBM Corp. 1998, 2004.
     *
     * The source code for this program is not published or otherwise divested of
     * its trade secrets, irrespective of what has been deposited with the U.S.
     * Copyright office.
     * ===========================================================================
     */
     
    /*
     * ===========================================================================
     * Copyright 2002 Sun Microsystems, Inc. All rights reserved.
     * ===========================================================================
     */
    /*
     * @(#)src/classes/sov/java/lang/String.java, lang, asdev, 20031210 1.38
     */

  16. #816
    Membre actif Avatar de 5:35pm
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    201
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2006
    Messages : 201
    Points : 217
    Points
    217
    Par défaut
    Au passage l'héritage multiple en Java aurait été plus problématique du fait que toutes les méthodes sont virtuelles par défaut (à l'inverse du C++).
    alors je suis reste sur cette phrase un bon moment. Qu'elle est le rapport entre l'heritage multiple et les methodes virtuelles? j'ai beau chercher, je vois pas, c'est normal n'y en a pas. les limitations de l'heritage multiple ce situent lorsqu'il y a des ambiguites; par exemple quand deux classes ont la meme methode.

    C'est étrange car beaucoup de dev C/C++ ont cette idée en tête et viennent faire débugger du code Java tout pourris par méconnaissance du langage
    eh bien personellement, je connais pas Java, mais je sais que C# est tres simillaire; pour quelqu'un qui a fait du c++, ca s'apprend vite, et effectivement c'est simple. mais c'est pour ca que j'aime C#, pas de prises de tete =)
    donc je pourrais tres bien aimer Java pour ca; et comme je l'ai dis, pourquoi le prendre mal?

    Que veux-tu dire par "standardisé" ? Ce n'est pas très clair ???
    ca veut dire que Java n'est plus proprietaire, c'est un standard, comme c++.
    les specifications de Java sont disponible, mais pas l'implementation.

  17. #817
    Membre actif Avatar de 5:35pm
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    201
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2006
    Messages : 201
    Points : 217
    Points
    217
    Par défaut
    La quasi-totalité du JDK est maintenant sous GPL, je n'appelle pas ça une "standardisation", j'appelle ça une libération de code.
    Que veux-tu dire par "standardisé" ? Ce n'est pas très clair ???
    pfff qu'est-ce que je fous dans ce forum?
    ca vole bas!

  18. #818
    Membre chevronné
    Avatar de Deadpool
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    1 312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 1 312
    Points : 2 011
    Points
    2 011
    Par défaut
    Citation Envoyé par 5:35pm Voir le message

    ca veut dire que Java n'est plus proprietaire, c'est un standard, comme c++.
    les specifications de Java sont disponible, mais pas l'implementation.
    L'est buté lui.


    http://www.sun.com/2006-1113/feature/

    Lis ce qu'il y a écrit, java est devenu LIBRE, pas standardisé, LIBRE.

    Sun is opening the door to greater innovation by open sourcing key Java implementations—Java Platform Standard Edition (Java SE), Java Platform Micro Edition (Java ME), and Java Platform Enterprise Edition (Java EE)—under the GNU General Public License version 2 (GPLv2), the same license as GNU/Linux

  19. #819
    Membre actif Avatar de 5:35pm
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    201
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2006
    Messages : 201
    Points : 217
    Points
    217
    Par défaut
    Citation Envoyé par Deadpool Voir le message
    L'est buté lui.


    http://www.sun.com/2006-1113/feature/

    Lis ce qu'il y a écrit, java est devenu LIBRE, pas standardisé, LIBRE.
    naan... il l'ont fait! j'aurais pas cru !
    eh bien bravo sun =)
    Le seul bemol est qu'on puisse batir que de l'open source sur liscence GPL, mais c'est genial =)
    ils sont alles plus loin que microsoft.
    mes excuses a millie que j'ai pris pour un(e) noob

  20. #820
    Membre chevronné
    Avatar de Deadpool
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    1 312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 1 312
    Points : 2 011
    Points
    2 011
    Par défaut
    Citation Envoyé par 5:35pm Voir le message
    naan... il l'ont fait! j'aurais pas cru !
    eh bien bravo sun =)
    Le seul bemol est qu'on puisse batir que de l'open source sur liscence GPL, mais c'est genial =)
    ils sont alles plus loin que microsoft.
    Si tu lisais ce qu'on écrivait, notamment adiGuba :

    Citation Envoyé par adiGuba Voir le message
    GPLv2, avec la Classpath-exception qui permet de ne pas avoir d'impact sur la licence les programmes développés en Java...

    Plus d'info : https://openjdk.dev.java.net/
    Tu aurais vu que justement, avec java on est pas obligé de faire que de l'open source.

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