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

Affichage des résultats du sondage: Quel est le meilleur des deux langages selon vous ?

Votants
1184. Vous ne pouvez pas participer à ce sondage.
  • Je suis intéréssé par Java et C#

    240 20,27%
  • C#

    377 31,84%
  • Java

    368 31,08%
  • J'apprécie le fait d'avoir l'alternative Java ou C#

    108 9,12%
  • Ni l'un ni l'autre

    36 3,04%
  • Sans opinion

    46 3,89%
  • Autre avis ? (précisez...)

    9 0,76%
C# Discussion :

C# versus Java [Débat]


Sujet :

C#

  1. #181
    Membre éclairé
    Avatar de bricecol
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Avril 2007
    Messages
    364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Avril 2007
    Messages : 364
    Points : 654
    Points
    654
    Par défaut
    J'aime JAVA tout simplement car c'est un langage objet exceptionnel (très bien pensé et c'est un plaisir de l'utiliser). J'aime être libre dans mes choix et j'apprécie le partage des connaissances... Je n'aime pas les langages trop abstraits qui font un peu l'effet masque (cf VB.NET). En gros, j'aime savoir ce que je fais et comment c'est fait.

    C# est plus rapide que JAVA (des fois...), mais arrêtons de nous voiler la face, tout le monde sait que c'est du copier/coller de JAVA SANS son incroyable portabilité bien sûr. VOILA ce qui explique (en partie) la différence de vitesse... M$ pour et avec M$... Petite question : avez-vous plus confiance en les développeurs M$ qu'en les experts en programmation et en sécurité internationals ?

    Pour moi, JAVA est beaucoup plus mûr et M$ a pondu VS pour essayer de ne pas tout perdre de se côté là et pour s'en convaincre, il suffit de se renseigner et de se remémorer l'histoire même de M$... Peut-on nier le fait que Bill soit un rapace ?

    Si vous aimez le développement l'informatique bien étudié et si vous tester ces différents langages, vous pencherez normalement vers JAVA. Enfin, qui peut me dire que le coût des licences M$ est négligeable ? Voyons, restons sérieux...

    Malgré tout ce qui a pu être dit, je persiste et je signe : JAVA est meilleur en moyenne que tout langage de M$. La seule chose que j'apprécie sur VS, c'est le formatage automatique du code source et quelques petits effets sympathiques.

    In fine, chacun fait ses choix !

    PS: J'ai développé un framework de création d'application graphique pour le CNRS, des projets J2EE et des librairies VB.NET.
    "Computers are like Old Testament gods ; Lots of rules and no mercy"
    [ Les ordinateurs sont comme les dieux de l’Ancien testament ; Beaucoup de règles et aucune pitié. ] Joseph Campbell

  2. #182
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par bricecol Voir le message
    C# est plus rapide que JAVA (des fois...), mais arrêtons de nous voiler la face, tout le monde sait que c'est du copier/coller de JAVA SANS son incroyable portabilité bien sûr.
    Mouais... Sans vouloir faire de troll, Java n'est pas un copie/collé de C++.... ?
    Citation Envoyé par bricecol Voir le message
    Pour moi, JAVA est beaucoup plus mûr
    Normal vue la différence d'âge..

    PS : je ne fais ni Java, ni C#, ni C++...

  3. #183
    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 kuzco Voir le message
    Mouais... Sans vouloir faire de troll, Java n'est pas un copie/collé de C++.... ?
    Non loin de là !
    Si les deux langages partagent la même syntaxe de base (hérité du C), cela aboutit à une approche de la POO très opposé sur de nombreux points... (mais c'est un autre débat).

    De même qu'on ne peut pas parler de "copie" pour le C# !
    Oui c'est un concurrent sur le même domaine que Java, mais malgré ma méconnaissance de C#, je sais qu'on y retrouve également beaucoup de notion différente de Java. Maintenant ces différences et ces choix ont pus être pris en considération de l'expérience apporté par Java... mais c'est tout à fait normal !



    Par contre bricecol : ton argumentaire me semble peu crédible et assez trollesque... sûrement à cause de tout ces "M$" qui traine et qui te décrédibilise encore plus

    a++

  4. #184
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par adiGuba Voir le message
    Non loin de là !
    Si les deux langages partagent la même syntaxe de base (hérité du C), cela aboutit à une approche de la POO très opposé sur de nombreux points... (mais c'est un autre débat).

    De même qu'on ne peut pas parler de "copie" pour le C# !
    Oui c'est un concurrent sur le même domaine que Java, mais malgré ma méconnaissance de C#, je sais qu'on y retrouve également beaucoup de notion différente de Java. Maintenant ces différences et ces choix ont pus être pris en considération de l'expérience apporté par Java... mais c'est tout à fait normal !
    Voilà un argument plus constructif, merci pour ce point de vue...

  5. #185
    Inscrit

    Profil pro
    Inscrit en
    Février 2004
    Messages
    862
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2004
    Messages : 862
    Points : 1 229
    Points
    1 229
    Par défaut
    Citation Envoyé par adiGuba Voir le message
    Par contre bricecol : ton argumentaire me semble peu crédible et assez trollesque... sûrement à cause de tout ces "M$" qui traine et qui te décrédibilise encore plus
    +1

    Citation Envoyé par bricecol Voir le message
    Pour moi, JAVA est beaucoup plus mûr et M$ a pondu VS pour essayer de ne pas tout perdre de se côté là...
    Par ailleurs, cette tendance à joyeusement confondre .Net et Visual Studio ne participe à crédibiliser cet avis, CNRS ou pas .

    Citation Envoyé par bricecol Voir le message
    La seule chose que j'apprécie sur VS, c'est le formatage automatique du code source et quelques petits effets sympathiques.
    Preuve supplémentaire, s'il en fallait une, que tu es visiblement passé complètement à côté du sujet. Mais bon, ça a au moins le mérite d'être drôle.

    Citation Envoyé par bricecol Voir le message
    mais arrêtons de nous voiler la face, tout le monde sait que c'est du copier/coller de JAVA SANS son incroyable portabilité bien sûr.
    Dans cette phrase, "toute le monde" est à prendre dans le sens "les développeurs du dimanche qui ne voient pas plus loin que le bout de leur nez et qui s'arrêtent aux similarités de syntaxe pour tirer des conclusions idiotes" ? N'est-ce pas ?

    Que Microsoft ai observé et appris de Java pour créer .Net ne fait aucun doute, mais comme l'a souligné adiGuba de nombreuses choses qui peuvent sembler similaires sont implémentées de manière très différentes (à tort, à raison, ou sans réelles conséquences).

    D'autre part, comme cela a déjà été évoqué ici, .Net bénéficie d'un rythme d'évolution plus soutenu que Java ce qui a pour effet d'avoir un peu inversé les points de référence; Java peut maintenant aussi "apprendre" de .Net et peut être même "copier" (OMG!) si le choix d'implémentation d'une fonctionnalité dans .Net est jugée bonne par la communauté Java.
    In my experience, any attempt to make any system idiot proof will only challenge God to make a better idiot.

  6. #186
    Invité
    Invité(e)
    Par défaut
    Je vais rajouter mon petit grain de sel, vu que ce débat est très passionnant et que j'ai plus ou moi touché aux deux technos (java 4 mois pour une appli desktop réseau et c# 1 an et demi d'asp.net et un zeste de desktop).

    Coté syntaxe, il n'y a pas de "meilleur" java est plus correct je pense sur l'objet (le "virtual" par exemple est une abération) que c# qui va permettre d'ici peu de faire ce genre de choses :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public string ma_fonction_string(this string toto){
    ....
    }
    public void Main(){
    string test =" haha";
    string res = test.ma_fonction_string();
    }
    La ça fout le bordel et ça casse tout, c'est moche et inmaintenable, mais le problème de notre métier c'est que tout est utilisé et qu'un jour ou l'autre je vais voir ce genre de saleté.

    Donc j'aurais tendance à préférer java parce qu'il est un peu plus contraignant , et dans un projet ou tout type de developpeur sont réunis, c'est pas de trop.

    Coté techno (sinon on s'arrète a la syntaxe).

    Les perfs j'ai pas assez d'expérience en desktop c# pour en juger, mais c'est vrai que les petite appli que j'ai faite n'avait pas des freezes comme celle java, mais la on touche swing plus que la techno java.

    Par contre la ou Java deviens ma technos préférée c'est sur le fait que ce n'est pas un framework ! on est pas en boite noire costemment, à décompiler les dll pour savoir comme ça se fait que mon programme bug des qu'il entre dans une fonction de .net, et en asp.net encore plus.

    Coté IDE, pour ma part c'est Eclipse VS Visual Studio

    Pas photo : Eclipse les yeux fermée sur un pied et sans les mains ! Visual Studio génère du code de partout, sans pour autant pouvoir l'éditer, il copie / colle très mal, le Team Foundation bugue vraiment pas mal , le wysiwyg est très très très lent, les possibilités de refactoring sont très limitée, il y a 40 style de projets on s'y retrouve jamais ("Projet Web ou site web ? that's the question").

    Mais java l'emporte tout de même haut la main (pour moi) pour les points suivent :
    - apache : l'équipe de IIS devrait etre fondu a la soude puis mangée puis refondue puis éparpilllée sur une planète qu'on aurait fondue, alors qu'apache c'est de la crème a administrer
    - communauté (beaucoup trop d'évangeliste microsoft sur la toile, l'example type est la folie qu'il y avait pour link to sql a la sortie, ça parlait que de ça, ils ont arrété depuis qu'on s'est rendu compte que ça servait a rien).
    - le nom ("c tiret" contre "ile du pacifique" ou "café" c'est ridicule)
    - la proximité avec le monde de l'open source qui le tire vers le haut, c'est pas visual stduio qui va se sentir mis en danger par la concurence.
    - il n'est pas lié a d'autre produits, c'est l problème de microsoft il veulent faire une toile entre tout leur machin


    Enfin voila.

  7. #187
    Inscrit

    Profil pro
    Inscrit en
    Février 2004
    Messages
    862
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2004
    Messages : 862
    Points : 1 229
    Points
    1 229
    Par défaut
    Citation Envoyé par Bourgui Voir le message

    Coté syntaxe, il n'y a pas de "meilleur" java est plus correct je pense sur l'objet (le "virtual" par exemple est une abération) que c# qui va permettre d'ici peu de faire ce genre de choses :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public static string ma_fonction_string(this string toto){
    ....
    }
    public void Main(){
    string test =" haha";
    string res = test.ma_fonction_string();
    }
    Pas d'ici peu...les méthodes d'extension sont déjà disponibles en C# 3.0.

    J'étais un peu dubitatif la première fois que j'ai vu ça, et j'ai également rapidement pensé aux abus que cela pouvait provoquer.

    Après quelques mois d'utilisation, j'ai largement modifié mon jugement ! Ce n'est au final qu'un sucre syntaxique, et comme tout les sucres syntaxiques, mal utilisé c'est pénible, mais utilisé intelligemment, c'est vraiment très très pratique et cela peut même rendre le code bien plus lisible.

    Citation Envoyé par Bourgui Voir le message
    Par contre la ou Java deviens ma technos préférée c'est sur le fait que ce n'est pas un framework ! on est pas en boite noire costemment, à décompiler les dll pour savoir comme ça se fait que mon programme bug des qu'il entre dans une fonction de .net, et en asp.net encore plus.
    7 ans que je travaille sur des projets .Net, et des bugs dans le framework lui-même j'en ai pas croisé des masses...

    Notons quand même que les sources de .Net sont maintenant disponibles en consultation et que l'on peut donc désormais se passer de décompilation pour comprendre le fonctionnement de telle ou telle fonction.

    Citation Envoyé par Bourgui Voir le message
    Coté IDE, pour ma part c'est Eclipse VS Visual Studio

    Pas photo : Eclipse les yeux fermée sur un pied et sans les mains ! Visual Studio génère du code de partout, sans pour autant pouvoir l'éditer, il copie / colle très mal, le Team Foundation bugue vraiment pas mal , le wysiwyg est très très très lent, les possibilités de refactoring sont très limitée, il y a 40 style de projets on s'y retrouve jamais ("Projet Web ou site web ? that's the question").
    Visual Studio est comme Eclipse : extensible. Donc les critiques sur le copier/coller ou le refactoring ne tiennent pas puisqu'avec quelques plug-ins on arrive à faire tout ce que l'on veut.

    Concernant les designer wysiwyg, il est vrai que celui d'asp.net a toujours été une catastrophe, à tel point que même s'il s'est largement amélioré au fil des versions, je connais très peu de développeurs qui l'utilise encore.

    Citation Envoyé par Bourgui Voir le message
    - apache : l'équipe de IIS devrait etre fondu a la soude puis mangée puis refondue puis éparpilllée sur une planète qu'on aurait fondue, alors qu'apache c'est de la crème a administrer
    Hors sujet, Apache != Java, de même que IIS != .Net.

    Citation Envoyé par Bourgui Voir le message
    - communauté (beaucoup trop d'évangeliste microsoft sur la toile, l'example type est la folie qu'il y avait pour link to sql a la sortie, ça parlait que de ça, ils ont arrété depuis qu'on s'est rendu compte que ça servait a rien).
    Oui, c'est sûr que l'objectivité des évangélistes microsoft n'est pas toujours à toutes épreuves...
    Mais bon, de là à dire que LINQ ne sert à rien, il y a de la marge...

    Dès que l'on touche à la problématique de réunir OO et relationnel, aucune solution n'est parfaite à 100%. LINQtoSQL est juste une solution parmi d'autre, mais ce n'est de loin pas la pire...


    Citation Envoyé par Bourgui Voir le message
    - il n'est pas lié a d'autre produits, c'est l problème de microsoft il veulent faire une toile entre tout leur machin
    C'est effectivement le but de Microsoft d'offrir une solution globale, et .Net est une brique de cette solution. Il s'agit clairement de philosophies différentes qui comportent chacune des avantages et des inconvénients, mais ce n'est pas là un critère pour juger des qualités de l'une ou l'autre des technologies...
    In my experience, any attempt to make any system idiot proof will only challenge God to make a better idiot.

  8. #188
    Membre habitué
    Inscrit en
    Septembre 2008
    Messages
    234
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 234
    Points : 156
    Points
    156
    Par défaut
    Citation Envoyé par bricecol Voir le message
    C# est plus rapide que JAVA (des fois...), mais arrêtons de nous voiler la face, tout le monde sait que c'est du copier/coller de JAVA SANS son incroyable portabilité bien sûr. VOILA ce qui explique (en partie) la différence de vitesse... M$ pour et avec M$... Petite question : avez-vous plus confiance en les développeurs M$ qu'en les experts en programmation et en sécurité internationals ?
    Pas nécessairement. Je tenais cet appriori lorsque le Java avais fais son apparition. Depuis, j'ai découvert que le Java a évolué et qu'il a été optimisé pour certaines opérations (comme d'autres langages sur machine virtuelle) de sorte que dans certains cas de figure les performances sont assez voisines.

    Mais il est vrai que l'avantage principal du Java est sa portabilité. Cela signe sans doute l'avenir en terme d'applications. Par exemple, saviez-vous que Eclipse a été conçu en Java ?

    Citation Envoyé par Bourgui Voir le message
    on est pas en boite noire costemment, à décompiler les dll pour savoir comme ça se fait que mon programme bug des qu'il entre dans une fonction de .net, et en asp.net encore plus.
    Tu pourrais m'en dire plus ?
    Développeur en devenir.

    A la recherche de toute source approfondissant Merise, UML, Java, l'objet, les design patterns hors GOF et le développement en général.

    Recherche également des informations sur les techniques de développement et les bonnes pratiques en terme de programmation en entreprise.

    "On en apprends beaucoup plus par la confrontation que par la conciliation"

  9. #189
    Invité
    Invité(e)
    Par défaut
    D'après Richard Stallman :
    Mono is a free implementation of Microsoft's language C#. Microsoft has declared itself our enemy and we know that Microsoft is getting patents on some features of C#. So I think it's dangerous to use C#, and it may be dangerous to use Mono. There's nothing wrong with Mono. Mono is a free implementation of a language that users use. It's good to provide free implementations. We should have free implementations of every language. But, depending on it is dangerous, and we better not do that.
    C# n'est pas vraiment portable, Microsoft ne propose pas d'environnement pour programmer en C# ailleurs que sous Windows à ma connaissance et utiliser Mono n'est pas sans risque légal. Au moins, avec Java, on a un JDK de Sun pour Linux, Solaris et Windows d'un côté et un JDK d'Apple pour Mac OS X de l'autre. On a aussi l'OpenJDK, je connais des gens qui arrivent à s'en servir sous OpenBSD donc on va encore plus loin en terme de portabilité.

    Citation Envoyé par kuzco Voir le message
    Java Quick Start apparu dans la version 1.6.0_u10 devrait améliorer ce point (je n'ai pas encore testé).
    Le Java Kernel et Java Quick Start ne sont pas encore très au point, c'est pas assez stable selon moi mais ça devrait s'arranger. C'est quand même bien, seulement 3 Mo à télécharger la première fois, ça rapproche de Flash (2.2 Mo je crois).

    J2EE vs c#.net

    d'après le lien .NET en moyenne 2 à 3 fois plus rapide que J2EE !
    C# plus performant que Java
    le seul avantage de Java est la portabilité ?
    c qoi ça ? si la comparaison est juste pourquoi on utilise Java donc ?
    c'est périmé ?[/QUOTE]
    Il y a une différence entre J2EE et J2SE et de toute façon, va jeter un oeil sur le blog de James Gosling, il y a un lien vers une étude de l'INRIA pour comparer Fortran et Java. De même, sur wikipedia, dans "java performance", on précise bien que Java fait parfois mieux parfois pire que C/C++ donc je pense que c'est vrai aussi pour C#. Je ne vois pas pourquoi C# serait plus rapide que Java.

    J'aime bien ce benchmark :
    http://bytonic.de/html/benchmarks.html
    C# peut-il aller plus vite que C/C++ sur certaines machines?
    Dernière modification par Sendusha ; 07/05/2011 à 13h46.

  10. #190
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 537
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 537
    Points : 2 548
    Points
    2 548
    Par défaut
    Les cas ou java/C# sont plus rapides que du langage natif sont quand même très marginaux. Et pour peu qu'on se fasse une gestion de la mémoire maison, cet avantage s'écroule

    Cela dit, ces langages ont bien d'autres avantages : API bien fournie, code rapide a faire, plus simple a débugguer, etc . . .

  11. #191
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Je ne vois pas pourquoi C# serait plus rapide que Java.
    Déjà, quand le langage lui-même supporte des concepts permettant d'éviter une allocation mémoire dynamique à chaque manip, ça aide.
    Voir les types valeur complexes (comme DateTime), et le passage par référence, qui permet à une fonction de retourner deux valeurs sans qu'une allocation dynamique soit nécessaire...

    Tu auras beau améliorer les performances de ton allocateur, ça sera toujours plus lent que sans...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  12. #192
    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 Médinoc Voir le message
    Déjà, quand le langage lui-même supporte des concepts permettant d'éviter une allocation mémoire dynamique à chaque manip, ça aide.
    Voir les types valeur complexes (comme DateTime), et le passage par référence, qui permet à une fonction de retourner deux valeurs sans qu'une allocation dynamique soit nécessaire...
    En java on manipule des références : donc bien que tous les passages se fassent par copie cela revient au même ou presque (on copie une référence et non pas l'objet ).

    [edit] Donc je ne comprend pas où tu vois les allocations "à chaque manip"...

    Citation Envoyé par Médinoc Voir le message
    Tu auras beau améliorer les performances de ton allocateur, ça sera toujours plus lent que sans...
    En Java comme en C#, dans la majorité des cas, le coût de l'allocation est dérisoire en comparaison des autres langages. Tout cela pour une simple raison : il n'y a pas d'accès au système et donc aucune interruption...


    a++

  13. #193
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 679
    Points
    18 679
    Par défaut
    Citation Envoyé par adiGuba Voir le message
    En java on manipule des références : donc bien que tous les passages se fassent par copie cela revient au même ou presque (on copie une référence et non pas l'objet ).

    [edit] Donc je ne comprend pas où tu vois les allocations "à chaque manip"...


    En Java comme en C#, dans la majorité des cas, le coût de l'allocation est dérisoire en comparaison des autres langages. Tout cela pour une simple raison : il n'y a pas d'accès au système et donc aucune interruption...


    on dirait surtout que tu n'as pas compris (voulu comprendre ?) les propos cités ci-dessus
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  14. #194
    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 gorgonite Voir le message
    on dirait surtout que tu n'as pas compris (voulu comprendre ?) les propos cités ci-dessus
    Si je ne me trompe pas, les types valeurs correspondent à un type primitif dont les valeurs peuvent être limité, et auquel on peut associer des méthodes comme un vrai objet. J'en comprend très bien l'intérêt et les avantages que cela peut apporter... mais pas vraiment au niveau de l'optimisation de l'allocation mémoire

    Mais je ne dis pas non à un exemple


    Quand au passage par référence : s'il s'avère très utile en C++ où on manipule des objets, il l'est bien moins en Java où l'on manipule des références, et où le passage d'un objet à une méthode n'implique pas une recopie de l'objet...

    a++

  15. #195
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Types valeurs: Le plus simple, c'est de regarder le type DateTime de .Net, ou l'équivalent en java. Dans les deux cas, ces types sont immuables.
    Imagine que je veuille une date deux heures, trois minutes et dix secondes après "maintenant".

    En .Net: DateTime dt = DateTime.Now.AddHours(2).AddMinutes(3).AddSeconds(10).
    Je ne connais pas la syntaxe java, mais je sais qu'elle est similaire. Maintenant, au niveau performance:
    • En .Net, DateTime est un type valeur qui correspond tout simplement à un long, donc aucune allocation dynamique n'a eu lieu. C'est comme si chaque fonction avait retourné un long.
    • En Java, à chaque opération on a fait un new Date, donc une allocation dynamique.



    Pour le passage par référence, c'est encore plus simple: Écris-moi une fonction java qui retourne deux long. Puis essaie de la réécrire pour qu'elle retourne deux long sans qu'aucune allocation dynamique soit faite.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  16. #196
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par deadalnix Voir le message
    Les cas ou java/C# sont plus rapides que du langage natif sont quand même très marginaux. Et pour peu qu'on se fasse une gestion de la mémoire maison, cet avantage s'écroule
    Marginaux? Je ne crois pas, l'exemple que je viens de donner est un jeu vidéo en 3D certes aux graphismes "vieux" en comparaison des standards actuels mais s'inspirant du moteur d'un jeu commercial et l'INRIA a fait des tests poussés sur du calcul intensif (voir "Current State of Java for HPC").

    Citation Envoyé par Médinoc Voir le message
    [*]En Java, à chaque opération on a fait un new Date, donc une allocation dynamique.
    Si tu veux bosser sur un long, tu fais getTime() sur une date que tu as déjà ou bien System.currentTimeInMillis() et tu as ce qu'il faut.

    Sinon, tu peux faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Calendar c=Calendar.getInstance();
    c.roll(Calendar.HOUR,2);
    c.roll(Calendar.MINUTE,3);
    c.roll(Calendar.SECOND,10);
    et dans ce cas, tu as une seule allocation, pas une allocation par opération.
    Dernière modification par Invité ; 29/12/2008 à 13h03.

  17. #197
    Inscrit

    Profil pro
    Inscrit en
    Février 2004
    Messages
    862
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2004
    Messages : 862
    Points : 1 229
    Points
    1 229
    Par défaut
    Désolé de couper dans les échanges sur les types valeur, mais j'aimerais quand même répondre à ça :

    Citation Envoyé par gouessej Voir le message
    C# n'est pas vraiment portable, Microsoft ne propose pas d'environnement pour programmer en C# ailleurs que sous Windows à ma connaissance et utiliser Mono n'est pas sans risque légal. Au moins, avec Java, on a un JDK de Sun pour Linux, Solaris et Windows d'un côté et un JDK d'Apple pour Mac OS X de l'autre.
    Le risque légal me paraît quand même très très faible.
    Le SDK .Net est gratuit depuis le début (seul Visual Studio hors versions express est payant), C# est standardisé, et les sources du framework ont été ouvertes...un retour en arrière me semble très peu probable.

    Concernant le disponibilité multi-plateforme, Microsoft a fait un choix assez clair dès le début. .Net s'inscrit dans une stratégie globale d'unification et comme un "argument" de vente de solutions d'entreprise complètes. Ce n'est pas sur les ventes de licences Visual Studio que Microsoft fait son chiffre, donc .Net n'est pas un but en soit, c'est un moyen.

    Partant de là, il est parfaitement logique (commercialement parlant) de ne pas gaspiller du temps et des ressources pour proposer du multi-plateforme.
    Rappellons quand même que le but final, chez MS comme chez Sun, est de faire des bénéfices; les stratégies sont justes différentes.

    Citation Envoyé par gouessej Voir le message
    De même, sur wikipedia, dans "java performance", on précise bien que Java fait parfois mieux parfois pire que C/C++ donc je pense que c'est vrai aussi pour C#. Je ne vois pas pourquoi C# serait plus rapide que Java.
    Parce que même si .Net et Java reposent sur le même principe, les implémentations diffèrent sur quelques points (boxing/unboxing, virtual, etc...), il est donc normal que l'on puisse observer des différences.

    Par ailleurs, et je ne sais pas si l'argument a déjà surgit dans ce débat, je me demande si la fameuse portabilité de Java n'a justement pas un revers de médaille au niveau des perfs...

    De manière intuitive je pense que plus on cherche la portabilité, plus les besoins d'abstraction sont grands, et un accroissement de l'abstraction est rarement synonyme de performances accrues...
    In my experience, any attempt to make any system idiot proof will only challenge God to make a better idiot.

  18. #198
    Membre éclairé
    Avatar de bricecol
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Avril 2007
    Messages
    364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Avril 2007
    Messages : 364
    Points : 654
    Points
    654
    Par défaut
    Je tiens à préciser quelques points essentiels concernant mon précédent message.

    Premier point : Je n'ai jamais nié le fait que
    je préfère JAVA aux langages .NET
    et je
    n'ai jamais prétendu être objectif
    ,
    bien au contraire. Donc les remarques du genre
    "mauvaise argumentation" ou alors "peu crédible"
    non pas lieu d'êtres ici, je pense.

    Deuxième point : Je fais tout à fait la différence entre un
    environnement de développement et un langage de programmation
    .
    Mais il y a malheureusement des personnes prétentieuses
    qui aiment jouer avec les mots, alors qu'elles ont tout à fait
    compris ce que j'ai voulu dire et qui me font donc passer pour un idiot...

    Dernier point : Je n'ai pas la prétention de me croire meilleurs que
    les autres développeurs simplement parce que j'ai travaillé un peu
    dans la recherche
    et je n'apprécie pas qu'on le sous-entende.
    J'ai spécifié ce détail dans le but d'exprimer le fait que j'ai déjà
    utilisé les deux technologies.

    Je terminerai sur le fait que je déteste les personnes qui cherchent
    à tout pris à descendre les autres en jouant sur les mots, les faux sous-entendus ou insinuations blessantes ainsi que celles qui coupent
    les cheveux en quatre. Je ne pense pas avoir blessé qui que ce soit,
    ayez donc un minimum de respect envers cela.

    Bonne journée.
    "Computers are like Old Testament gods ; Lots of rules and no mercy"
    [ Les ordinateurs sont comme les dieux de l’Ancien testament ; Beaucoup de règles et aucune pitié. ] Joseph Campbell

  19. #199
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Keihilin Voir le message
    Le risque légal me paraît quand même très très faible.
    Le SDK .Net est gratuit depuis le début (seul Visual Studio hors versions express est payant), C# est standardisé, et les sources du framework ont été ouvertes...un retour en arrière me semble très peu probable.
    Là n'est pas le problème. A ma connaissance, 89% des postes client sont sous Windows, moi je ne parlais pas de ça, j'évoquais les risques autour de Mono pour développer en C# sur d'autres systèmes d'exploitation.

    Citation Envoyé par Keihilin Voir le message
    Parce que même si .Net et Java reposent sur le même principe, les implémentations diffèrent sur quelques points (boxing/unboxing, virtual, etc...), il est donc normal que l'on puisse observer des différences.

    Par ailleurs, et je ne sais pas si l'argument a déjà surgit dans ce débat, je me demande si la fameuse portabilité de Java n'a justement pas un revers de médaille au niveau des perfs...

    De manière intuitive je pense que plus on cherche la portabilité, plus les besoins d'abstraction sont grands, et un accroissement de l'abstraction est rarement synonyme de performances accrues...
    C'est de l'intuition pour l'essentiel,
    l'intuition et le bon sens ne font pas la science
    (je crois que c'est de Claude Allègre). J'ai montré un benchmark avec les limites que ça a. Si Java peut aller légèrement plus vite que des langages natifs sur des exemples non triviaux (un jeu vidéo en 3D), il est légitime que je pose la question concernant C#. imadin a cité un benchmark fait dans de mauvaises conditions avec une vieille machine virtuelle (1.4 c'est pas tout jeune), une méthode de mesure discutable (currentTimeMillis est peu précise sous Windows) et une option de compilation inutilisée depuis des lustres pour dire que Java est 2 à 3 fois plus lent que C#, voilà la question que je vous pose :
    Comment Java pourrait être 2 à 3 fois plus lent que C# si Java peut aller légèrement plus vite que des langages natifs? Si c'est vrai, ça veut dire que C# est 2 à 3 fois plus rapides que des langages natifs, non? Ca ne paraît pas tiré par les cheveux?

  20. #200
    Inscrit

    Profil pro
    Inscrit en
    Février 2004
    Messages
    862
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2004
    Messages : 862
    Points : 1 229
    Points
    1 229
    Par défaut
    Citation Envoyé par bricecol Voir le message
    Premier point : Je n'ai jamais nié le fait que
    je préfère JAVA aux langages .NET
    et je
    n'ai jamais prétendu être objectif
    ,
    bien au contraire. Donc les remarques du genre
    "mauvaise argumentation" ou alors "peu crédible"
    non pas lieu d'êtres ici, je pense.
    Ah ? Et tu ne penses pas qu'il y a un petit paradoxe entre avouer ne pas être du tout objectif et s'offusquer à propos des critiques sur l'argumentation ?


    Citation Envoyé par bricecol Voir le message
    Deuxième point : Je fais tout à fait la différence entre un
    environnement de développement et un langage de programmation
    .
    Heureux de l'apprendre car cela n'était pas évident dans ton premier message.

    A l'avenir, si tu ne veux pas donner de fausses impressions, je te suggère d'éviter de citer la coloration syntaxique de VS comme point technique "sympa" de .Net...

    Citation Envoyé par bricecol Voir le message
    Mais il y a malheureusement des personnes prétentieuses
    qui aiment jouer avec les mots, alors qu'elles ont tout à fait
    compris ce que j'ai voulu dire et qui me font donc passer pour un idiot...
    On ne se permettrait pas, d'autant plus que tu y arrives très bien tout seul.

    Citation Envoyé par bricecol Voir le message
    Je ne pense pas avoir blessé qui que ce soit,
    ayez donc un minimum de respect envers cela.
    Le respect ça commence par ne pas débarquer dans un débat en ayant oublié son objectivité à la maison et en lançant des lieux communs erronés et des trolls à tout va, le tout ponctué de M$ dans chaque phrase.

    Bonne journée à toi aussi.
    In my experience, any attempt to make any system idiot proof will only challenge God to make a better idiot.

Discussions similaires

  1. vba versus java
    Par lemacdupc33 dans le forum Langages de programmation
    Réponses: 3
    Dernier message: 30/05/2017, 10h52
  2. Temps de compilation C++ versus Java
    Par ZeRevo dans le forum Eclipse C & C++
    Réponses: 0
    Dernier message: 16/12/2011, 13h34
  3. Que choisir : PHP versus Java ?
    Par Sniper37 dans le forum Général Conception Web
    Réponses: 164
    Dernier message: 28/04/2009, 16h50
  4. Vitesse : C Versus Java
    Par ToTo13 dans le forum C
    Réponses: 15
    Dernier message: 01/10/2006, 09h19
  5. WinDev versus Java
    Par Tijee dans le forum WinDev
    Réponses: 4
    Dernier message: 29/01/2006, 10h15

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