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

Langage Java Discussion :

Espace de discussion autour de la disponibilité de Mustang (Java SE 6) [Nouveauté]


Sujet :

Langage Java

  1. #1
    Expert éminent sénior


    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    7 856
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 7 856
    Points : 34 380
    Points
    34 380
    Par défaut Espace de discussion autour de la disponibilité de Mustang (Java SE 6)
    Bonsoir,

    comme annoncé par adiGuba, la plateforme Java SE 6 (alias Mustang) est désormais disponible en version finale !

    Vous pouvez profiter de ce sujet pour échanger sur le contenu de cette release et discuter des nouveautés et tendances, partagez des liens, ...

    Un premier article résumant les principales nouveautés de Mustang : http://adiguba.developpez.com/tutoriels/java/6/

    Le site officiel : http://java.sun.com/javase/6/

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


    Un petit article qui met en évidence les performances "Out of the Box", c'est à dire les performances sans aucun tuning ou configuration spécifique : Java 6 Leads Out of the Box Server Performance.

    Selon les tests, on obtient des gains de performance de 20 à 40% par rapport au JDK 5.0...

    a++

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 75
    Points : 114
    Points
    114
    Par défaut
    A ce rythme là, bientot Java sera aussi perfs que du C++.

  4. #4
    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 themei
    A ce rythme là, bientot Java sera aussi perfs que du C++.
    C'est déjà le cas depuis longtemps, par exemple : Java vs C++ "Shootout" Revisited

    Bien sûr cela peut varier selon les tests, mais globalement on peut dire que les performances de Java sont au moins aussi bonne que du C++. Et la JVM server permet des optimisations impossibles en C++ (optimisation à la volée à l'exécution, selon le contexte de l'application).

    Toutefois, les différences sont imperceptibles dans une application standard, mais seulement sur de gros traitements répétitifs...


    Java se traine une mauvaise réputation qui date de ses origines (avant Java 1.2 et les JVM HotSpot).

    Toutefois, il est vrai qu'elle souffre de 2 défaut (a mon avis) :
    • Le temps de démarrage de la JVM, qui est généralement plus lent qu'une application natif, en particulier pour de petites applications (mais que l'on peut désormais combler par un SplashScreen avec Java 6 ).
    • Swing, qui est vraiment une API merveilleuse, mais qui est trop souvent mal-employé, en particulier ce qui concerne la gestion de l'affichage dans l'EDT. Bien souvent il est utilisé pour des traitements "lourds" qui empêchent la mise à jour de l'affichage (et le fameux bugs du "rectangle-gris").
      Ceci est en partie corrigé par Java 6 car le double-buffering de Swing empêche désormais les "rectangles-gris", et la classe SwingWorker permet de mieux gérer les traitements dans une UI Swing...
      Ce n'est corrigé qu'en partie car l'origine du problème est bien le développeur et non pas l'API ou le langage (lire Threads et performance avec Swing pour plus de détail).

      Or il y a souvent amalgames entre les deux et ce type de bugs (malheureusement courant) est souvent imputé au langage et non pas au développeur...


    a++

  5. #5
    Membre émérite
    Avatar de mavina
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2004
    Messages
    1 812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Chine

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

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 812
    Points : 2 411
    Points
    2 411
    Par défaut
    Salut,

    Très interressant tout ça, je m'en vais de ce pas faire mumuse avec

    Fred

  6. #6
    Membre régulier
    Inscrit en
    Février 2006
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 93
    Points : 109
    Points
    109
    Par défaut
    D'ailleurs, quelqu'un saurait-il comment s'utilisera la classe SwingWorker qui (si je ne dis pas de bêtises) est sensée résoudre le problème des traitements longs vis à vis de l'interface graphique?

  7. #7
    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 Babaôrom
    D'ailleurs, quelqu'un saurait-il comment s'utilisera la classe SwingWorker qui (si je ne dis pas de bêtises) est sensée résoudre le problème des traitements longs vis à vis de l'interface graphique?
    Très simplement, et de manière assez proche d'un Thread (mais tout en permettant plus de chose).

    Il suffit d'en hériter et de redéfinir la méthode doInBackground() qui devra contenir le code a exécuter en arrière plan (et seulement lui : donc aucun code qui ne modifie l'affichage).
    Il est également possible de redéfinir done() qui sera appelé dans l'EDT à la fin du traitement (par exemple pour mettre à jour l'affichage).
    Enfin, il est également possible de redéfinir la méthode process() qui permet de mettre à jours l'affichage en cours de traitement. (dans doInBackground() on effectue le traitement et on passe le résultat à la méthode publish() qui se chargera d'appeler process() dans l'EDT).

    Je ne sais pas si je suis bien clair... mais il n'y a rien de très difficile...


    A noter qu'une version identique pour Java 5.0 existe déjà ( https://swingworker.dev.java.net/ ), et qu'une vielle version quelque peu différente est disponible dans les tutoriels de Sun depuis l'origine de Swing (ou presque).

    a++

  8. #8
    Rédacteur
    Avatar de lunatix
    Homme Profil pro
    Architecte technique
    Inscrit en
    Novembre 2002
    Messages
    1 960
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 960
    Points : 3 736
    Points
    3 736
    Par défaut
    le tutoriel de Sun sur java a été mis a jour... et on y trouve une partie sur swingworker

  9. #9
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 42
    Points : 61
    Points
    61
    Par défaut
    Je viens juste de l'installer et même si cela est trop tôt pour donner un avis je ne peux m'empêcher de dire que je suis épaté par la réactivité au niveau de l'IDE (NB) et des petites applications que j'ai développé sous Eclipse et sous NetBeans 5.5 (mon préféré).

    EDIT: (à mon niveau d'utilisation primaire ) une petite bombe.

  10. #10
    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
    Java SE 6 est-il vraiment plus rapide ? Réponse Is Java SE 1.6.0 Faster?

    a++

  11. #11
    Expert éminent sénior
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Points : 21 324
    Points
    21 324
    Par défaut
    Citation Envoyé par adiGuba
    Java SE 6 est-il vraiment plus rapide ? Réponse Is Java SE 1.6.0 Faster?

    a++
    Très intéressant ton lien, merci

  12. #12
    Membre expérimenté
    Avatar de narmataru
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 548
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 548
    Points : 1 680
    Points
    1 680
    Par défaut
    Je viens juste de l'essayer et bien je ne sais pas si c'est le double buffering ou autre chose, mais l'interface graphique parrait beaucoup plus réactive ! Coté gain de performance j'ai fais un test très vite fait (qui a dit mal fait ?) et je n'ai pas détecté de différence notable avec la versin 5 :
    10000 insertion dans derby :
    java 5 : 10855ms
    java 6 : 10655ms

    Et j'ai cette erreur au démarrage de mon appli :

    ATTENTION: Prefs file removed in background /usr/local/lib/java/jdk1.6.0/jre/.systemPrefs/rie/riesystemcheck/modules/maj/prefs.xml
    MESSAGE - Premier lancement de RIESystemCheck version 20061205
    ERROR - Erreur lors de l'enregistrement de la nouvelle version dans les préférences (erreur de mon appli).
    SYSTEM::java.lang.IllegalArgumentException: Non pris en charge : indent-number
    java.util.prefs.BackingStoreException: java.lang.IllegalArgumentException: Non pris en charge : indent-number
    at java.util.prefs.FileSystemPreferences$8.run(FileSystemPreferences.java:615)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.util.prefs.FileSystemPreferences.writeBackCache(FileSystemPreferences.java:600)
    Ca doit pas être bien méchant, mais c'est bizarre car je n'utilise pas du code extraordinaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    private void saveLastVersion(BigInteger b){
    		Preferences pref = Preferences.systemNodeForPackage(this.getClass());
    		pref.put(prefKeyVers, b.toString());
    		try{
    			pref.flush();
    		}
    		catch(Exception e){
    			EasyLog.getInstance().error("Erreur lors de l'enregistrement de la nouvelle version dans les préférences.", e);
    		}
    	}

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 129
    Points : 81
    Points
    81
    Par défaut
    Je risque de dire quelque chose de vraimment idiot mais bon je tente tout de même...

    Y a t il moyen de passer à Java SE 6 en utilisant Websphere 6.0.1 d'IBM? En fait je pense que j'en suis toujours au J2SE 1.4.2 ...

  14. #14
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par themei
    A ce rythme là, bientot Java sera aussi perfs que du C++.
    Assez d'accord avec adiGuba. Ceci dit je nuancerais en disant que les performances de Java sont aujourd'hui quasi équivalentes à du Natif. "non-optimisé" Si l'on prends l'exemple de Java vs GCC, un même code obtient peu ou prou les mêmes performances depuis le mêmes performances qu'un Java v5 et est surpassé par Java v6. Ce qui tend à prouver que la natif ne gagne pas si facilement aujourd'hui sur du Java. Une autre "preuve" (mais là je suis peut-être incompétent... ) c'est que GCJ, censé compiler du Java en Natif, ne dépasse pas lui non plus la moindre version de d'un VM standard.

    En revanche, si l'on applique une optimisation (type -O3), les performances d'un code natif se font bien meilleur mais est-ce parce que les développeurs de GCC sont meilleurs en optimisation que ceux de javac ?

    Je me suis fait un petit benchmark maison (en grande partie repiqué ceci dit ;-) pour tester les différentes version de JDK mais aussi Java vs Mono et vs GCC pour ceux que cela intéressent : http://artisan.karma-lab.net/node/1112 (c'est d'ailleurs en faisant des recherches sur d'autres benchmarks que je suis tombé ici ;-)

    Ceci dit, ces benchs ne sont pas encore assez complet à mon goût, j'aurais besoin d'y rajouter une performance de threads, et surtout l'occupation CPU car s'il s'avère que du natif est aussi rapide que du Java mais avec 50% de charge en moins, cela remet pas mal de choses en cause.

    Un autre aspect est effectivement le temps de chargement. Les tests de mon bench les ignore car les timings sont pris dans le code lui même (après chargement donc). Il faudrait que je rajoute des tests pour évaluer les différences de temps de chargement mais je me heurte au cache disque qu'il faudrait désactiver pour avoir un peu de justesse (quelqu'un sait t-il faire cela sous Linux ? )

    Voilà, si vous avez des remarques sur mes tests où si vous constatez d'énormes boulettes, je suis preneur bien évidemment :-)

  15. #15
    Membre expérimenté
    Avatar de narmataru
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 548
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 548
    Points : 1 680
    Points
    1 680
    Par défaut
    Lorsque je clique surton lien j'ai cette erreur :
    Firefox ne peut trouver le serveur à l'adresse antinea.artisan.karma-lab.intra.

  16. #16
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 418
    Points : 67
    Points
    67
    Par défaut
    dois je donc laisser tomber le jdk1.5.0_06 et opter pour jdk 1.6 pour ma prochaine application un peu complexe qui se base entierement sur swing ?

  17. #17
    Membre émérite
    Avatar de mavina
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2004
    Messages
    1 812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Chine

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

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 812
    Points : 2 411
    Points
    2 411
    Par défaut
    Je me suis ammusé à faire des tests sommaires, sur un exemple tout simple :
    une double boucle de 1000 itérations et une création de String dedans. Rien de plus bête

    J'ai pu constater que Java 6 gagnait entre 20 et 40% de vitesse d'execution par rapport à Java 5.
    Faut voire sur d'autres tests moins "primaires" mais ça fait déjà plaisir

    Fred

  18. #18
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par narmataru
    Lorsque je clique surton lien j'ai cette erreur :
    Quel gros malin je fait, c'était l'adresse locale... J'ai édité le post avec la bonne url :
    http://artisan.karma-lab.net/node/1112

    Sinon, j'ai aussi rajouté les fameux temps de chargement vu que j'ai trouvé (enfin !) le moyen de vider le cache en lecture fs de Linux. Et bien pour être honnête c'est pas très brillant. Sur la machine de test, aucune différence de Java 4 à Java 6, inlassablement à 1 seconde, contre 0.5 avec Mono...

    Sinon, pour mon idée de l'occupation CPU variable d'un test à l'autre, c'est faux, 100% à chaque fois.

  19. #19
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par mavina
    Je me suis ammusé à faire des tests sommaires, sur un exemple tout simple :
    une double boucle de 1000 itérations et une création de String dedans. Rien de plus bête

    J'ai pu constater que Java 6 gagnait entre 20 et 40% de vitesse d'execution par rapport à Java 5.
    Faut voire sur d'autres tests moins "primaires" mais ça fait déjà plaisir

    Fred
    Logique, y'a un facteur 2 rien que sur les StringBuffer

  20. #20
    Membre actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2005
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2005
    Messages : 97
    Points : 208
    Points
    208
    Par défaut
    Citation Envoyé par jlassiramzy
    dois je donc laisser tomber le jdk1.5.0_06 et opter pour jdk 1.6 pour ma prochaine application un peu complexe qui se base entierement sur swing ?
    Tout dépend pourquoi, pour qui etc...
    A moins d'utiliser Java web start/JNLP ton programme peut ne pas fonctionner, (peu de gens on déja installé la jre6 [peu de gens ont déja installé la jre1.4 .... beaucoup n'ont jamains installé de jre])
    Si les fonctionalités de la jre6 (ou les performances) te sont a ce point importantes pour ton programme, (ou si tu en as super envie parce que c'est cool )alors oui fais des programmes en java6.

Discussions similaires

  1. Discussion autour de PowerPivot / DAX
    Par nadjib.tabbiche dans le forum Power BI
    Réponses: 1
    Dernier message: 28/07/2011, 14h28
  2. Réponses: 13
    Dernier message: 15/03/2011, 19h43
  3. Réponses: 0
    Dernier message: 26/01/2011, 19h08

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