Est-il possible d'appeler le code natif intégré de la JVM, c'est-à-dire le code que diverses classes de java.lang et java.io appellent? En d'autres termes, pouvez-vous ignorer l'API Java intégrée pour accéder à divers appels au niveau du système, tels que l'accès au système de fichiers? Je sais que je pourrais le faire en construisant ma propre bibliothèque de code natif et en l'appelant via JNI, mais il serait élégant de ne pas avoir besoin d'une bibliothèque native supplémentaire pour les fonctionnalités déjà intégrées dans la JVM.Appel de méthodes natives Java intégrées
Répondre
Non, vous ne pouvez pas. C'est conçu de cette façon exprès; vous auriez outrepassé les contrats API si vous le pouviez. Dans tous les cas, le code d'encapsulation de la bibliothèque standard est très et avec les compilateurs JIT, vous ne devriez pas remarquer d'impact de vitesse.
En outre, l'implémentation de ces méthodes ne fait pas partie de la spécification API. Ce qui est "natif" pour une implémentation de Java n'a pas à être pour un autre.
Merci pour la clarification. Je ne suis pas vraiment motivé par la vitesse, la plus grande motivation ici est d'abstraire certaines fonctionnalités de base d'une manière plus uniforme que celle fournie par l'API java par défaut. Sun semble avoir conscience de certaines de ces faiblesses, d'où les itérations confuses de java.io à java.nio en java.nio2. – toluju
Vous pariez! Votre critique de l'API de Java est assez juste! Je suggère de définir votre propre API et d'utiliser la bibliothèque standard dans les coulisses. Il suffit de protéger votre code contre les horreurs; le reste (comportement de la plateforme, vitesse) ne sera pas un problème. –
Si vous souhaitez utiliser les E/S natives, utilisez les classes NIO.
A ma connaissance les classes NIO se réfèrent à "New IO", pas "Native IO". Ils sont toujours des wrappers Java autour de l'implémentation native sous-jacente. – toluju
Vous pouvez, bien sûr, utiliser la réflexion pour appeler les méthodes pour lesquelles le code est fiable. Cependant, les API non publiques sont susceptibles de changer entre les mises à jour et les implémentations, ce qui est plutôt inutile et absolument non élégant.
- 1. Profiling méthodes natives en Java - résultats étranges
- 2. Méthodes intégrées de sauvegarde app.config
- 3. Ecraser des méthodes natives en Javascript
- 4. Y at-il des méthodes intégrées en Java pour augmenter la taille de la police?
- 5. Java: `Méthodes static`
- 6. Problèmes de type avec les classes Java natives
- 7. Conversions d'unités de stockage intégrées utilty en Java?
- 8. Fonctions natives d'Hibernate et Oracle
- 9. appel PHP à partir de Java
- 10. Appel des méthodes @selector entre les classes
- 11. Comment intégrer des applications natives avec eclipse?
- 12. Méthodes polymorphes Java
- 13. appel de méthodes sur une instance avec getattr [python]
- 14. de développement d'applications Windows natives Options de
- 15. Appel de Java Web Service Constructor
- 16. Appel de services Web à partir d'un client Java
- 17. Quelles sont les manières natives de Java de communiquer directement avec les périphériques?
- 18. Liste des variables intégrées MSBuild
- 19. NVelocity - #parse avec ressources intégrées
- 20. Liste des propriétés intégrées de l'objet
- 21. Extension de classes intégrées en python
- 22. Appel des méthodes jQuery à partir des fonctions Javascript
- 23. Méthodes refacturées et compatibilité binaire en Java
- 24. enums et méthodes génériques en Java
- 25. Méthodes et classes Java, comment s'emboîtent-elles?
- 26. Isoler les méthodes Ruby de l'écrasement dans les sous-classes? (Comme des méthodes privées de Java)
- 27. Génération d'images natives en dehors du cache
- 28. Comment utiliser Marshal.ReleaseComObject avec Win32 fonctions natives
- 29. Procédures stockées natives SQL Server 2005
- 30. Java appel http code de réponse de retour: 501
Vous pouvez mais vous ne devriez pas avoir besoin de. Que vis-tu en les contournant? –