2010-10-29 33 views
0

Je déploie des bibliothèques Java dans mon application .NET. Dois-je convertir les bibliothèques Java en DLL avec ikvmc, ou devrais-je utiliser les fonctions dynamiques pour effectuer la conversion lors de l'exécution?Comment choisir entre les modes statique et dynamique IKVM?

Je pense que l'utilisation de ikvmc réduirait la charge initiale de l'application. Est-ce que quelqu'un a de l'expérience pour vérifier cela? D'un autre côté, mon processus de construction sera considérablement plus simple si je suivais la route dynamique. Théoriquement, la conversion initiale peut également détecter des erreurs de conversion plus tôt. Cependant, ma couverture de test devrait atténuer ce problème. En outre, j'imagine qu'ikvm pourrait mettre en cache des assemblages convertis dynamiquement sur un disque quelque part, de sorte que seule la première charge (peut-être une partie de l'installation) serait plus lente. Je n'ai rien vu dans les docs d'ikvm pour indiquer que c'est le cas, cependant.

Répondre

0

Si la performance est un facteur pour vous, alors vous devriez le convertir en DLL. La différence de temps est très grande. Si vous avez seulement un petit fichier jar (quelques KB) alors vous pouvez le faire parce que le temps de compilation est linéaire avec la taille.

Mais il est important que vous déteniez une référence à une seule instance du URLClassloader. Si vous créez a répété un nouveau URLClassloader alors il doit compiler toujours et jamais. Aussi le JIT ne peut pas fonctionner parce que vous utilisez toujours de nouvelles classes.

Si vous voulez voir combien de temps il faut appeler ikvmc yourJarFile.jar une fois. C'est le temps dont votre programme a besoin en temps de démarrage supplémentaire.