Java建模语言(英語:Java Modeling Language,缩写JML)是一种用于Java程式码的规约语言,使用 Hoare风格的前置条件、后置条件和不变式,并遵循契约式设计(英語:design by contract, DbC)范式。[1]由于JML是为Java专门定制的,其基本语法结构以及编程风格都跟Java语言十分相似。[2]

语法

编辑

JML规范以注释的形式添加到Java代码中。

关键字

编辑
requires
定义紧随其后方法的前置条件。
ensures
定义紧随其后方法的后置条件。
signals
定义当指定异常被方法抛出时的后置条件。
signals_only
定义在满足给定前置条件时允许抛出的异常。
assignable
定义方法可以修改的字段。
pure
声明方法无副作用(等同于 assignable \nothing,但也可抛出异常)。此外,纯方法应始终正常终止或抛出异常。
invariant
定义类的不变量属性。
loop_invariant
为循环定义循环不变量。
also
组合规范案例,也可声明方法继承自其超类型的规范。
assert
定义 JML 断言。
spec_public
将受保护或私有变量对规范公开。

表达式

编辑
\result
表示紧随其后方法的返回值标识符。
\old(<expression>)
引用方法开始时 <expression> 的旧值。
(\forall <decl>; <range-exp>; <body-exp>)
全称量词。
(\exists <decl>; <range-exp>; <body-exp>)
存在量词。
a ==> b
表示 a 蕴含 b。
a <== b
表示 b 蕴含 a。
a <==> b
当且仅当 a 与 b 等价。

优势

编辑

发展

编辑

Rebêlo等人提出并实现了一种新的JML编译器,称为ajmlc(AspectJ JML Compiler),利用了面向方面编程(AOP)机制来处理JML契约的运行时断言检查。结果表明该编译器生成的代码大小的开销非常小,适合Java ME应用程序使用。[1]

参考文献

编辑
  1. ^ 1.0 1.1 张进; 何成万; 石尤. 基于AOP的契约定义及其与JML契约的转换. 武汉工程大学学报. 2020, 42 (4): 456–461 [2025-11-07]. ISSN 1674-2869. doi:10.19843/j.cnki.cn42-1779/tq.201912025. 
  2. ^ 宋玉婷; 孙文辉. 基于JML的标记—清扫垃圾收集验证. 计算机应用与软件. 2014, 31 (9): 32–36. ISSN 1000-386X. Wikidata Q136721869 (中文). 

外部链接

编辑

📚 Artikel Terkait di Wikipedia

Java平臺

JJSF,Java服务器界面 JMF,(Java Media Framework)Java媒体框架 JMI,Java元数据接口 JML,(Java Modeling Language)Java建模软件 JMX,(Java Management Extensions)Java管理扩展 JNDI,(Java Naming

统一建模语言

统一建模语言(英語:Unified Modeling Language,縮寫UML)是非专利的第三代建模和规约语言。UML是一种开放的方法,用于说明、可视化、构建和编写一个正在开发的、面向对象的、软件密集系统的制品的开放方法。UML展现了一系列最佳工程实践,这些最佳实践在对大规模,复杂系统进行建模

靜態程序分析

辑提出。有些程式語言有對應的支援工具,例如SPARK(Ada程式語言的子集)、Java 建模语言(英语:Java Modeling Language)(其中使用ESC/Java(英语:ESC/Java)及ESC/Java2)及針對C語言的Frama-c WP 插件(最弱初始條件(英语:Predicate

接口描述语言

Component Modeling Language) Simple Object Access Protocol(SOAP) WDDX(英语:WDDX) XML-RPC,the predecessor of SOAP JavaSE Corba[1] (页面存档备份,存于互联网档案馆)

ArgoUML

ArgoUML是一个用于绘制UML图的应用软件,它用Java构造,并遵守开源的BSD协议。因为它本身由Java构建的缘故,所以ArgoUML能运行在任何支持Java的平台上。 2003年,ArgoUML获得了《软件开发杂志》的设计和分析工具类别的年度读者选择奖(annual Readers' Choice

QML

QML (Qt Markup Language 或 Qt Meta Language 或 Qt Modeling Language) 是基於JavaScript、宣告式編程的程式語言,用於設計圖形使用者介面為主的應用程式。它是Qt Quick(英语:Qt Quick),諾基亞開發的使用者介面建立套件的一部分。QML

计算机语言

计算机语言(英語:computer language)指人与计算机之间沟通的形式语言,是人与计算机之间传递信息的媒介。其概念比通用的编程语言要更广泛。例如,HTML是置标语言,也是计算机语言,但并不是编程语言。 计算机语言涵盖了所有用于人与计算机之间交互的形式化符号系统,包括编程语言、置标语言、查询

实化

(页面存档备份,存于互联网档案馆). Antoni Olivé, Conceptual Modeling of Information Systems, Springer Verlag, 2007. Unified Modeling Language, UML superstructure, Object Management