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

Java Discussion :

Performances de Java


Sujet :

Java

  1. #1
    Membre éclairé Avatar de soad
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    520
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Février 2004
    Messages : 520
    Par défaut Performances de Java
    Hello tout le monde...

    alors voila... on entend de tout sur JAVA, certain disent que c'est trop lent, d'autre disent que c'est casiment aussi rapide que le C !!!

    MAIS QUI FAUT-IL CROIRE ????


    Ce que j'aimerais faire c'est développez un chat, et on ma dit de ne pas faire le serveur en JAVA mais en C !!! Pcq beaucoup plus fiable et plus rapide qu'un servlet !!!


    Pensez-vous qu'ils ont raison ? et si oui est ce que la différence est énorme ??? En supposant que que tout sois bien coder !

  2. #2
    Membre éprouvé Avatar de Process Linux
    Inscrit en
    Septembre 2003
    Messages
    136
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 136
    Par défaut
    JAVA a bien fait ses preuves dans le fonctionnement coté serveur, maintenant il y a des serveurs d'application développé à 100 % JAVA, et qui traitent des centaines de terrahits.

    Pour le développement avec C, c'est sûr que c'est plus rapide, mais tu seras obligé de réinventer la roue.

    Au lieu d'utiliser RMI qui est trés simple JAVA, tu vas utiliser CORBA

    Au lieu d'avoir une structure bien organisé d'un projet divisé en plusieur briques fonctionnelles, tu auras un 100..000 lignes de code, que tu ne pourras jamais maintenir.

    A mon avis, il faut foncer dans le développement JAVA.

  3. #3
    Membre éclairé Avatar de soad
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    520
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Février 2004
    Messages : 520
    Par défaut
    ok merci pour ton conseil ...

    Si d'autre personne veulent confirmer Process Linux ou à un autre avis qu'il n'hésite pas

  4. #4
    Membre expérimenté Avatar de xv-mnt
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2005
    Messages : 142
    Par défaut
    En ce qui concerne la rapidité d'application, comparatif entre C et JAVA, voici un article (en anglais) qui tord le cou à quelques idées reçues ("le C est plus rapide que JAVA...") :
    http://www-128.ibm.com/developerwork...vaUrbanLegends

    En résumé, les lenteurs JAVA étaient notables jusqu'à J2SE v1.2. Au-delà, cette assertion n'est plus vraie.
    Conclusion : Je te conseille très vivement JAVA. A part pour des applis embarquées (et encore une sous-partie du C++ convient très bien si tu veux faire de l'OO), le C n'a plus lieu d'être (avis perso qui peut être polémique avec certains développeurs)...

  5. #5
    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
    Salut,


    Citation Envoyé par saod
    alors voila... on entend de tout sur JAVA, certain disent que c'est trop lent, d'autre disent que c'est casiment aussi rapide que le C !!!
    Comme cela a été dit, les premières versions de Java était nettement moins performantes que les langages natifs, et cela est resté coller à l'image de Java...

    En effet, comme tu dois le savoir, les sources Java sont compilé dans un langages nommé le bytecode. Ce langage n'est pas interprétable directement mais il faut utiliser une machine virtuelle.
    A l'origine la machine virtuelle interprétait le bytecode avant de l'exécuter, ce qui impliquait un coût certain comparé avec un langage compilé...

    Depuis les performances se sont nettement amélioré en particulier grâce au compilateur JIT (Just-In-Time), apparut avec Java 1.2 si je ne me trompe pas.
    Concrêtement, au lieu d'interpréter le bytecode, la machine virtuelle compile en natif le bytecode à la volée, ce qui permet de générer un code spécifique à la machine (selon son processeur, la taille de son cache, ...), et d'effectuer des optimisations qui ne sont pas effectuée avec les compilateurs standard (à moins de compiler le programme pour une machine cible).
    Et même d'effectuer des optimisations à la volée selon l'état de l'application, chose impossible à faire avec un compilateur standard...





    On dit aussi que le C est plus performant car il permet de manipuler directement la mémoire via les pointeurs... C'est vrai que cela permet énormément d'optimizations mais cela devient vite complexe et peut être source d'erreur... De plus cette gestion de la mémoire empêche le compilateur d'effectuer certaines optimisations...
    Perso, j'ai fait du C avant de faire du Java et je penses qu'il y a plus de chances d'obtenir des pertes mémoires que des optimisations... D'autant plus que la gestion des pointeurs devient vite illisible... Je prefèrre de loin laisser cette tâche aux compilateurs...




    Enfin le Garbage Collector traine aussi une mauvaise réputation... En général cela vient surtout d'erreur de programmation à cause d'une méconnaissance du langage... du style la création de 500000 objets dans une boucle...
    De plus le GC peut également optimiser les créations mémoires puisqu'il est le seul à gérer la mémoire (il connait l'état exact à tout moment), ce qui lui permet par exemple de retarder la désallocation d'objet afin de l'effectuer lorsque l'application est en attente...




    Toutefois, le code Java peut rester plus lent que son équivalent C dans certains domaine, parce qu'il s'agit d'un langage Orienté Objet, ce qui implique plusieurs notions inexistante en C... La comparaison avec le C++ est plus approprié dans ce cas...



    Dernier point : si le mythe "Java=Lent" est toujours mis sur le devant, c'est surement à cause de son principal défaut (à mon sens) : le temps de lancement de la JVM. Si cela a ausi été améliorer, cela reste encore un point noir, mais qui concerne seulement les petites applications (donc cela ne te concerne pas).



    Citation Envoyé par saod
    Ce que j'aimerais faire c'est développez un chat, et on ma dit de ne pas faire le serveur en JAVA mais en C !!! Pcq beaucoup plus fiable et plus rapide qu'un servlet !!!
    Attention à ne pas confondre : Les Servlets ne sont pas un languages mais elles font partie d'un framework...
    En les utilisant tu laisses de cotés toutes la partie réseaux pour te concentrer sur ton application elle-même, alors qu'en C il te faudra écrire toute la partie réseaux...

    Les applications J2EE sont plutôt destiné à des applications plus complexe. Dans ton cas il serait peut-être preferable d'écrire une simple application Java...

    Enfin je ne vois pas en quoi cela pourrait être plus fiable (cela dépend de ton code et non pas du langage) ni plus rapide (cf. remarques plus haut).



    Citation Envoyé par saod
    Pensez-vous qu'ils ont raison ? et si oui est ce que la différence est énorme ??? En supposant que que tout sois bien coder !
    Non. Mais le code C sera surement plus important que le code Java



    Pour conclure (désolé pour le pavé), les deux langages peuvent très bien faire l'affaire, mais cela influencera sur la réalisation (on a d'un coté un langage procédurial et un langage Objet).
    Personnellement je te conseillerai Java, à moins que tu n'ai une bonne expérience en C...

    a++

  6. #6
    Membre éclairé Avatar de soad
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    520
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Février 2004
    Messages : 520
    Par défaut
    Merci à tous et à adiGuba pour ce jolie roman !!! je vais donc me lancer en JAVA !!!

    juste une petite remarque:
    Les applications J2EE sont plutôt destiné à des applications plus complexe. Dans ton cas il serait peut-être preferable d'écrire une simple application Java...
    Pkoi serait il plus préférable de faire une application qu'un servlet ??? A ma connaissance on ne peux pas exécuter une application sur un hébergeur J2EE à moins de louer un serveur dédiée mais plus cher !!!

Discussions similaires

  1. Réponses: 9
    Dernier message: 12/08/2010, 01h20
  2. Réponses: 31
    Dernier message: 13/01/2010, 12h06
  3. [LWJGL] Performance avec Java/LWJGL
    Par Mike Reason dans le forum 3D
    Réponses: 5
    Dernier message: 28/06/2009, 12h32

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