2016-02-11 1 views
2

Est-ce que je vois une différence fondamentale entre la façon dont Java Standard API et Java EE API sont mis en œuvre?Pourquoi les API Java EE sont elles-mêmes implémentées par les fabricants de serveurs d'applications?

API Java standard est ici, mis en œuvre par Oracle, pour quiconque d'utiliser dans la programmation Java: http://docs.oracle.com/javase/7/docs/api

Mais pourquoi est-ce que les décideurs (par exemple IBM, RedHat, Oracle) des serveurs d'applications (à savoir JBoss, WebLogic, WebSphere, GlassFish, WildFly) proposent différentes implémentations de la même API Java EE?

Exemple 1: RESTEasy est une implémentation de JAX-RS disponible avec JBoss

Exemple 2: HornetQ est une implémentation de JMS disponible avec wildfly

Je suppose que je devrais demander, "Que signifie même avoir cette page d'API EE sur le site Web d'Oracle puisque chaque fournisseur a sa propre implémentation? Le lien ci-dessous est-il juste pour un spectacle?" https://docs.oracle.com/javaee/7/api/

Répondre

2

Votre hypothèse initiale n'est pas entièrement correcte.

Il existe en fait plusieurs implémentations de Java SE en plus de la distribution Oracle la plus répandue. Les plus grands sont OpenJDK et JDK d'IBM. Donc, les API Java SE ont une spécification comme Java EE, chacune avec des implémentations différentes. Les liens api d'Oracle que vous avez publiés ne sont que des prérequis pour les interfaces, mais il faut toujours une implémentation pour ces API, que ce soit Java SE ou Java EE.

+0

Bravo! I Cependant, je me demande toujours pourquoi tous ces surnoms (c'est-à-dire HornetQ, RESTEasy) sont nécessaires pour faire référence à des implémentations spécifiques faites par des fournisseurs spécifiques. Les noms des fournisseurs ou les noms des serveurs d'applications ne devraient-ils pas suffire à faire savoir aux utilisateurs quelles implémentations particulières sont utilisées? – softwarelover

+0

Ce sont des implémentations de sous-catégories de la spécification Java EE (ie JMS ou JAX-RS), et parfois ces technologies peuvent être utilisées de manière autonome (pas dans le cadre d'un serveur d'applications), le nom est juste pour se différencier. sont essentiellement des produits individuels. –

+0

Quel concept! Comme vous l'avez dit «parfois», j'apprécierais que vous énumériez quelques-unes de ces sous-catégories de spécifications JEE qui, dans la pratique, peuvent être utilisées comme produits autonomes. – softwarelover