2010-11-21 25 views
1

J'essaie de déployer mon application Java à l'aide de Java Web Start, mais j'ai rencontré un problème. Lors de l'exécution de l'application via mon IDE (Netbeans), il est rapide comme l'éclair; tout se passe en quelques secondes. Cependant, s'il est lancé avec Web Start, il est terriblement lent.L'application Java est plus lente en raison du démarrage Web

Des idées pourquoi? Je suis auto-signant tout et en utilisant des autorisations complètes dans le JNLP.

+1

Différentes JVM pour les deux scénarios? – aioobe

+1

Qu'est-ce qui ralentit particulièrement l'application? Le lancer? Ce qui arrive après le lancement? Rendu de l'interface utilisateur La souris est laggy? Les menus s'ouvrent lentement? –

+0

@ Mike- Il déclare clairement que le lancement est lent. – DMan

Répondre

2

Les applications Java Web Start démarrent toujours plus lentement que celles lancées directement via l'exécutable java. Ceci est parce que Java Web Start est en train de faire beaucoup plus qu'un java lancement standard:

  1. JWS accède au réseau pour télécharger le JNLP (et peut-être JARs, et d'autres ressources)
  2. JWS vérifie son cache local JARs pour voir si elle peut ignorer le téléchargement des fichiers jAR
  3. JWS est potentiellement télécharger les pots via HTTP, si le cache est vide ou de la date
  4. JWS vérifie la validité des signatures cryptographiquement forts de chaque pot

Je pense que la plupart de ceci est un coût inévitable pour la puissance supplémentaire de pouvoir lancer votre application via un navigateur Web et mettre à jour votre application pratiquement «gratuitement». Autre possibilité: Votre application fonctionne-t-elle avec une VM différente lorsque vous lancez via webstart ou lorsque vous lancez avec NetBeans? Vous pouvez essayer d'imprimer:

System.getProperty("java.home") 

pour savoir quelle machine exécute le processus en cours d'exécution.

S'il s'agit de la même machine virtuelle, vous pouvez également essayer de différencier les propriétés système Java entre les deux scénarios. Essayez d'imprimer toutes les propriétés du système:

System.getProperties().store(System.out, ""); 

Wireshark peut être utilisé pour aider à diagnostiquer les problèmes de réseau Java Web Start.


Parfois, la journalisation Démarrer Java Console et Java Web peut être utile pour diagnostiquer certains problèmes JWS. Vous pouvez activer ces fonctions par le Java Control Panel:

alt text

+1

Salut Mike, merci pour la réponse complète. En activant le traçage, j'ai pu voir que tous les JAR externes sont téléchargés quand ils sont nécessaires, ce qui a causé les ralentissements. Ma solution est de créer un seul JAR qui fonctionne! –

1

Vous pouvez activer la journalisation complète dans la console Java et de voir toutes les choses que Java Web Start est l'impression des informations de débogage. Vous pouvez alors voir où les pauses se produisent, ce qui peut vous donner une indication du problème. Ma première estimation serait que vous avez des problèmes DNS, surtout si les pauses sont très proches d'un multiplum de 30 secondes.