首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java谁实现了规范?

Java谁实现了规范?
EN

Stack Overflow用户
提问于 2016-06-23 06:31:24
回答 5查看 4.7K关注 0票数 9

我在核心Java和Java方面有一些经验。为了理解Java到底是什么,我阅读了各种各样的问题。很少有答案是:究竟什么是java-ee?什么是java-ee?

我有些怀疑:

1)如果Java只是一种规范,那么谁来实现它们呢?应用服务器(如JBOSS、GlassFish)实现这些规范吗?

2)如果我正确的话,EJB规范是由EJB容器实现的,并且我相信EJB容器是Application的一部分。现在,当我们作为开发人员编写EJB代码时,我们实际上在做什么?我的疑问是,EJB容器实现了EJB规范,所以我们是否正在重写EJB的某些“规范部分”?为什么EJB的某些部分是由EJB容器实现的,以及一些开发人员正在编写的东西呢?还是EJB的某些部分必须由EJB容器提供,而有些部分则由开发人员开发?我很难搞清楚这件事。

有人能帮我理解一下这一点吗?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2016-06-23 07:47:50

任何人都可以实现java规范(JSR342),或者它的一部分的任何jsr。当他们这样做时,他们可以(在购买和通过兼容性测试套件之后)声称与规范兼容。有许多供应商的应用服务器是兼容java ee,但没有供应商实现完整的java规范。例如,glassfish ( java参考实现)使用Red的CDI实现。有时,供应商没有实现java ee规范的任何部分,他们抓取glassfish,添加其特定于供应商的库,并以他们的名字发布它。要声明兼容性,他们仍然需要通过认证过程并运行CTS。

要找到实现该规范的所有供应商并不是那么容易,因为并不是所有的供应商都经过认证过程。例如,Apache不是单独认证的,而是作为Red的JBoss的一部分进行认证的。

每个规范都有一个API和一个书面pdf,这两个规范都定义了每个实现的强制行为。这就是在编写EJB代码时使用的内容。例如,当您创建ejb时:

代码语言:javascript
复制
import javax.ejb.Singleton;
@Singleton
public class MySingleton{
   ... 
}

@Singleton注释是规范的一部分,但是MySingleton类是您的EJB代码,它不是规范的一部分。然后,EJB容器知道如何处理该类。

票数 11
EN

Stack Overflow用户

发布于 2016-06-23 06:38:47

在Java规范的情况下(Java、JSF、其他JSR),通常在起草规范时创建了引用实现( Java中的Glassfish),然后有其他提供者可能创建自己的规范实现(通常声称在某种程度上它“更好”)。

然后,作为开发人员,您可以编写可以使用规范提供的工具的代码,这些工具将在任何兼容的实现上正确运行。

票数 2
EN

Stack Overflow用户

发布于 2016-06-23 06:34:23

是的,像RedHat这样的EJB容器(应用服务器)供应商在他们的产品(比如JBoss)中实现了J2EE规范。

他们不做的是实现任何业务逻辑(如果你愿意的话只是“管道”)。这就是应用程序开发人员进来的地方。

就像Apache或nginx实现HTTP协议规范一样,但这并不是网站所做的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37983860

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档