avril
2007
Depuis longtemps (la version 1) Java a la réputation d’être lent. La lenteur d’exécution s’est beaucoup améliorée pour ne plus être vraie avec les progrès de la JVM, notamment ceux du Garbage Collector et la compilation à la volée (JIT).
Il reste encore un principal reproche à Java que je partage, et qui est le temps de démarrage des applications. Qui n’a pas ralé devant les temps de démarrage des applications en Java, ou qui n’a pas vu ou participé à un troll sur les temps de lancement de la JVM.
Je suis tombé sur cette discussion intéressante : l’auteur ainsi que plusieurs personnes dans les commentaires se plaignent de la lenteur des démarrages d’IDE ou des taches de type build. Beaucoup ont constaté que cela allait plus vite si l’antivirus (notamment McAfee) était désactivé.
J’ai fait les tests sur mon PC avec Norton Antivirus et effectivement les temps de démarrage de NetBeans ou Eclipse sont divisés par 3.
L’explication est que votre antivirus considère les fichiers jar comme des fichiers zip (ce qu’il sont en réalité) et donc l’intégralité de ces fichiers sont scannés lors des accès (lancement, étape de build…) ce qui ralenti énormément l’ordinateur. J’ai déjà vu un Pentium 4 avec 1 Go de RAM inutilisable pendant plusieurs minutes suite à l’ouverture d’un dossier contenant des ZIP que je gardais pour installer un environnement de développement.
La solution pour accélérer le démarrage de l’IDE est donc d’exclure de la surveillance de l’antivirus son répertoire d’installation et pour les builds il faut couper l’antivirus.
L’idéal serait de pouvoir exclure tous les .jar, mais on a déjà vu des virus en Java, enfin le terme est rapide puisqu’il s’agit d’applets exploitant des failles de la JVM de Microsoft (qui l’utilise encore???) et d’une applet qui téléchargeait un trojan Win32. Si vous avez des contre-exemples, n’hésitez pas.
PS : j’aime beaucoup un des commentaires qui dit que dans les ordinateurs dual-core, il y a un processeur pour l’antivirus et un pour notre utilisation….
afrikha : Solaris a pas mal de choses intéressantes. C’est un OS vraiment puissant qui m’a personnellement beaucoup surpris. Ce n’est pas forcément lié à Java mais il dispose de pas mal d’outils intéressants (raaah ZFS…). Pour le développement, l’outil DTrace inclut dans Solaris 10 est vraiment génial pour faire un monitoring très fin et très détaillé des applis Java.
Je profite de ce billet très intéressant ( merci Christophe ) pour poser une question : y’a-t-il des avantages à utiliser Solaris plutôt que Linux pour developpez en Java ?
C’est fait puisque j’ai été obligé de redémarrer mon PC pour le test, je suis sous Mac depuis bientôt un mois, et mon PC commence à sérieusement prendre la poussière, je vais finir avec une housse sur le clavier….
La solution c’est de gérer le problème à la racine: utilises Linux, Mac ou Solaris!
Sinon, le référentiel du JSR 277 devrait corriger le problème pour les récalcitrants…