- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我阅读或听到以下句子:
The Java Persistence API (JPA) is a Java application programming interface specification...
JavaServer Faces (JSF) is a Java specification...
JMA must provide a method that adds two integers?
JMA must provide the method: int jmaAdd(int x,int y)?
public interface JMA{
int jmaAdd(int x,int y);
}
最佳答案
Is it enough that I define my specification as follows:
JMA must provide a method that adds two integers?
那是一个规范。
它不是一个非常有用的方法,因为它没有为该规范的实现的用户提供很多保证。如果我想编写一个将两个整数相加的程序,我无法仅通过阅读规范来完成。
不过,它确实给了实现者很大的自由。通常,您希望您的规范在对用户重要的方面是精确的,但在对实现者重要的方面是模糊的。这样,用户获得了编写程序所需的保证,同时也让实现者可以自由地根据自己的特定利基定制实现。
例如,Java 语言规范没有提及垃圾收集。它仅定义对象何时可访问和不可访问,并定义您可以创建新对象。内存分配如何工作,垃圾收集器如何工作,无论是引用计数、跟踪还是基于区域的收集器等等,所有这些都被排除在外,因此不同的利基的不同实现可以使用不同的垃圾收集器实现,并且同一分割市场的不同实现可以相互竞争。
or, do I have to create a document something like:
JMA must provide the method: int jmaAdd(int x,int y)?
这也是一个规范。它甚至不如上面的有用。它确实定义了方法的名称,但没有定义它的作用。
int jmaAdd(int x, int y) { return x - y; }
是该规范的完全有效的实现,就像
int jmaAdd(int x, int y) { return 0; }
同样,用户没有任何保证,实现者有太多的回旋余地(或更准确地说:错误区域的回旋余地)。
or, do I have to create the interfaces and distrubute the source code?
public interface JMA{
int jmaAdd(int x,int y);
}
我不一定将其称为规范。那是代码,因此是一个实现。
注意:当然,在 Java 中,interface
s 提供行为规范class
es 然后执行。但这不是您在问题中使用它的方式术语规范的含义。
or do I have to compile the interfaces and publish it as jar?
同样,这是一个实现。
Also, can a specification contain abstract classes or classes at all? Or must it consist only of interfaces?
规范不包含任何内容。这是一张纸。
通常,规范是用英语编写的。嗯,实际上,它们是用专门的规范编写语言编写的,这通常是具有特定语义的高度风格化的英语形式子集。例如, BCP14/RFC2119: Key words for use in RFCs to Indicate Requirement Levels定义了与 IETF 标准文档相关的一些常见英语单词的确切含义。 (有趣的是,它也是一个规范,从而使其成为编写规范的规范。)
有时也使用形式逻辑,特别是在编程语言规范中描述类型规则。有时,甚至使用专门的形式规范语言,例如 Z Notation .
What makes a specification, a specification?
简单且不太令人满意的答案是,如果规范被关心规范的人称为规范,那么规范就是规范。 (或者更一般地说:被认为是一种规范。)
不同的社区对规范有不同的看法。以及他们的不同名称。
例如, scheme 的原始规范编程语言只是发表在一份科学报告中。然后经过几轮改进和新报告,他们发布了《算法语言方案的修订报告》。之后是“关于算法语言方案的修订版修订报告”。随之开始了一种笑话,该语言的当前版本在“Revised Revised Revised Revised Revised Revised Revised Revised Revised只是“ R7RS”。
这些报告中没有一个被称为“规范”,但每一份报告都是一个规范。在 Scheme 之前,ALGOL 也使用了术语“报告”,其他几种语言也是如此。
Internet RFC 也是一个很好的例子。从技术上讲,所有 RFC 都是“征求意见”。实际上,这些 RFC 中只有极少数被提升到“标准”状态。有些也是“当前最佳实践”。它们中没有一个被称为“规范”,但其中许多都被这样对待。例如,HTTP 不是标准,但它既被视为标准又被视为规范,我们新世界经济的重要组成部分就是建立在此基础上的。
如果您想了解规范,最好阅读以下内容:
Haskell 2010 Language Report (名称“报告”的另一个示例) Scala Language Specification Version 2.11 ECMA-262 6th Edition, The ECMAScript 2015 Language Specification The Java Language Specification, Java SE 8 Edition The Java Virtual Machine Specification, Java SE 8 Edition HTTP Specifications , 包括但不仅限于 RFC7230: HTTP/1.1 Message Syntax and Routing RFC7231: HTTP/1.1 Semantics and Content RFC7540: HTTP/2 RFC7541: HPACK Header Compression for HTTP/2 The HTML Living Standard (aka HTML5)
关于java - 规范究竟是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34456615/
我们有一个 Java 项目,每天晚上使用 TeamCity 对 Java 类进行静态分析,以查找代码中容易出现的错误。我们想告诉 TeamCity 寻找开发人员可能引入的与 == 与 .equals
前言 🍊缘由 Git分支管理好,走到哪里都是宝 🏀事情起因: 最近翻看博客中小伙伴评论时,发现文章【规范】看看人家Git提交描述,那叫一个规矩一条回复: 本狗亲测在我司中使用规范
使用带有不存在的命名空间的命名空间限定关键字来定义规范是否被认为是不好的做法?我想在公共(public) domain 命名空间中定义实体映射...所以为了避免在合并规范时丢失数据,我使用约定 :en
有没有办法在调用 clojure.spec.test.alpha/check 时覆盖核心谓词函数的生成器? 可以通过 s/gen 中的路径覆盖谓词生成器: (gen/generate (s/gen
以内核 rpm 为例,它允许在一个系统上同时安装多个版本。规范文件中究竟是什么允许的? 我想打包一个已经存在的具有不同安装前缀的多个版本的项目。 最佳答案 百胜 找到了让 yum 安装而不是更新的方法
我正在尝试用 C# 编写 PDF 解析器,但我遇到了一个问题,我不确定如何解释规范。 除非另有说明,否则 PDF 文档中的用户空间为 1/72 英寸(即 1pt)。 Tf 运算符提供的比例将字体从标准
我正在编写一些代码,需要能够获取两个 pdf 并将它们附加到页面级别(例如,如果它们都是 2 页文档,则有一个 4 页文档,其中所有 4 页都与原始文档相同). 在不使用库的情况下,最好的方法是什么?
是否有序言语言语法,或接近它的通常用作引用的东西?我正在使用 SWI-prolog,所以有一个适合这种风格的会很好,否则一般的 prolog 语言语法/规范也能工作。 最佳答案 自 1995 年起,P
我需要一个函数来过滤参数和构建查询。我有 4 个参数,因此如果我尝试为每个条件实现查询,我将不得不写 16 (2^4)实现 - 这不是一个好主意。 我尝试使用界面改进我的代码 Specificatio
这个 ExtGState 对象对图像做了什么: > 我有 PDF 规范,但一点也不清楚。显然,这将身份函数(什么的身份?单位矩阵?)从 [0.0 1.0] 映射到 [0.0 1.0](相同),这是没有
只是想获得有关 ePub 规范的一些帮助。toc.ncx 是否必须具有 src(即 xhtml)。我观察到 .opf 文件中也提供了相同的内容 src。 最佳答案 是的,这是强制性的,这是一个设计问题
让我们看看莱宁根项目 map 的真实示例 :global-vars : ;; Sets the values of global vars within Clojure. This example
我正在开发一个 LOB 框架,它具有 SL 和 MVC 前端、WCF 后端以及在服务器上运行的几个服务模块。我一直在查看 Spec#,看它是否对我有任何帮助。不可空类型和检查异常本身非常好,但我还没有
Promises/A+规范是最小的规范之一。因此,实现它是理解它的最佳方法。福布斯·林德赛(Forbes Lindesay)的以下回答将引导我们完成实现Promises / A +规范Basic Ja
哪个文档指定了 MySQL definer 格式? 具体来说,definer admin@% 中的 % 是什么意思(以及为什么使用这个符号)? 最佳答案 这里MySQL使用的格式定义在the MySQ
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 1
在 css 规范中,什么会影响更多的 inline 样式或外部 !important 外部“style.css”: #di{color: green!important;} div 文本颜色是红色还
我正在努力思考 CSS 的一些细节,我从 W3 CSS Visual Formatting Spec 9.2.2 中找到了这部分摘录。特别迟钝: Inline-level boxes that are
这个问题在这里已经有了答案: Are (non-void) self-closing tags valid in HTML5? (8 个答案) 关闭 9 年前。 在 HTML5 中你应该使用 或
以下样式在规范方面有何不同? ul .active { background: #E7F3EF;} ul li.active { background: #E7F3EF;} Item 1
我是一名优秀的程序员,十分优秀!