Sun met beaucoup d'efforts derrière la modularisation du JDK sous la forme de Jigsaw, et insinuant que ce devrait être le format de module de choix pour les autres développeurs Java. Le seul joueur notable qui utilise ceci est NetBeans (et les applications dérivées). D'autre part, l'industrie s'est standardisée autour de OSGi, tous les principaux fournisseurs d'applications basant leurs temps d'exécution sur la plate-forme de modules, même Glassfish de Sun. Il y a même un port de NetBeans pour utiliser OSGi comme système de module au lieu de modules propres à NetBeans. Même Maven travaille à devenir une exécution OSGi. Est-il juste NIH, licence, ou une autre raison?Pourquoi Sun invente-t-il un autre système de modules alors que tout le monde a standardisé OSGi?
Répondre
Excellente question. Je crois comprendre que dans certaines régions, OSGi va bien au-delà de ce qui est nécessaire pour les modules JVM (avec toute la complexité correspondante), alors que dans d'autres domaines, il ne va pas assez loin. Il y a donc beaucoup de chevauchement entre eux, mais peut-être pas assez.
Citant http://blogs.oracle.com/mr/entry/jigsaw:
OSGi est pas du tout intégré au langage Java, cependant, après avoir été construit au sommet de la plate-forme Java SE plutôt que de l'intérieur.
Ce dernier problème peut être corrigé. Sun envisage maintenant de travailler directement avec l'OSGi Alliance afin qu'une future version du cadre OSGi peut pleinement exploiter les fonctionnalités de JSR 294 et ainsi obtenir une meilleure intégration avec la langue.
(...)
Si et quand une future version de la plate-forme Java SE comprend un système de module fi spécifique puis Sun fournira un moyen de migrer modules Jigsaw jusqu'à cette norme. En attendant, nous chercherons activement des moyens de d'interopérer avec d'autres systèmes du module , et en particulier avec OSGi.
Ah, c'est l'entrée de blog que je cherchais et ne pouvais pas trouver :) – skaffman
Le problème est que cela ne se produit pas. JSR294 est effectivement mort, et n'a aucune incidence sur Jigsaw (ou vice versa). Si le mot-clé du module peut finir par être utilisé est quelque peu orthogonal au problème d'un système de module lui-même. – AlBlue
@AlBlue - le statut de JSR294 me confond aussi. La page JCP l'indique comme inactive, mais le travail continue (apparemment) dans le cadre de Jigsaw. Je pense que vous vous méprenez sur eux étant sans rapport. La page Jigsaw dit: __Relationship to JSR 294__ _Les documents de travail postés ici doivent être considérés comme des brouillons de matériel faisant l'objet d'une discussion plus approfondie au sein de ce EG._ http://openjdk.java.net/projects/jigsaw/ – McDowell
Une caractéristique est manquant dans OSGi. Il ne prend pas en charge les modules qui sont des sous-ensembles de packages. Le export is done on the package level.
Les modules de sous-ensemble de paquetages sont la seule façon de couper le nœud gordien des dépendances JDK. Et un bon indice pourquoi vous devriez garder votre code propre de dépendances circulaires.
Edit: J'étais mal. OSGi does support split packages.
Je n'avais pas rencontré le concept de modules de sous-ensembles de paquets - connaissez-vous des blogs ou des articles qui en parlent? – SteveD
"4. Il doit être possible pour différents types dans un seul paquet Java à d'appartenir à différents modules." http://altair.cs.oswego.edu/pipermail/jsr294-modularity-observer/2009-January/000002.html –
Comme le suggère le montage, c'est faux. En fait, Harmony, une JVM open-source, utilise déjà des manifestes OSGi pour représenter les ruptures entre les modules, y compris ceux avec un nœud Geordian. – AlBlue
La raison d'être du projet Jigsaw et de sa relation avec OSGi a été soulignée par l'équipe de Jigsaw au Java Posse Podcast 259.
Ces projets ne se chevauchent pas entièrement et l'introduction de Jigsaw ne sonnera pas le glas de l'OSGi - la portée d'OSGi va au-delà de tout ce que Jigsaw tentera de faire. Jigsaw a beaucoup plus à offrir que l'équipe OSGi n'est en mesure de fournir (changements de langue, de classe et de mise en œuvre de la JVM). La conception d'OSGi est basée sur la conception actuelle de la JVM - les changements apportés à la JVM bénéficieront à tout le monde.
Au moins, c'est ma prise de what I've read.
Consultez le JavaPosse interview with Mark Reinhold sur le sujet.
- 1. Pourquoi tout le monde déteste ViewData?
- 2. Tout le monde a essayé de compiler Intel xf86_video_intel pour un autre OS
- 3. Tout le monde a eu un historique des fonctionnalités WPF
- 4. Tout le monde a un analyseur xml avec expandablelistview
- 5. Tout le monde a entendu parler de HOSTING 2.0
- 6. Tout le monde a essayé scala avec cadre à rayures
- 7. Tout le monde a IIS fonctionnant de manière fiable en tant que client WCF
- 8. "Bonjour tout le monde" en tant que plugin Gmail?
- 9. pourquoi tout le monde veut NOSQL autres que les clusters Oracle à grande échelle?
- 10. TBXML Alors que le problème
- 11. Pourquoi Sun a-t-il spécifié l'implémentation de String.hashCode()?
- 12. iPhone Wi-Fi séquence de transport UI conception, a un problème, tout le monde peut m'aider?
- 13. Joomla - « Bonjour tout le monde - Bonjour » Module
- 14. Android "Bonjour tout le monde" problème
- 15. Bonjour tout le monde en Python
- 16. Tout le monde connaît un bon robot d'indexation open source?
- 17. Exception dans un Bonjour tout le monde WEBMETHOD
- 18. Tout le monde connaît un bon vbscript vbs IDE
- 19. Javascript date étrangeté entre Firefox et tout le monde
- 20. xsl trouver tout le nœud qui ont un nom alors comme la valeur d'un autre noeud
- 21. Est-ce que Sun a désapprouvé les URL DTD Java?
- 22. Personnalisation d'Ubuntu ou de tout autre système Linux
- 23. Sun Java HTTPServer a un bug, comment y remédier?
- 24. Comment configurer un package à l'échelle du système dans osgi?
- 25. Comment cela "Bonjour tout le monde!" programme de travail?
- 26. Rhinomocks, a tout le monde utilisé et une bonne ressource pour cela
- 27. Ruby alors que la syntaxe
- 28. Alors que la boucle ralentit l'application? Une idée pourquoi?
- 29. Dans Ruby, pourquoi Hash [: a, 1] et Hash [[[: a, 1]]] donnent le même résultat {: a => 1}, alors que Hash [[: a, 1]] donne un vide hacher?
- 30. Comment tout le monde peut voir mes fichiers privés?
Avez-vous une référence pour la partie "insinuant que cela devrait ..." de votre question? La page que vous liez a le ton de la page d'accueil d'un projet de recherche, pas celle utilisée pour présenter une technologie clé que Sun veut que tout le monde utilise. –