基于形式化方法的低占用 Java 到本地代码编译优化方案
1. JML 注释方法示例
首先来看一个 JML 注释的方法示例:
final class Code_Table {
private/*@spec_public */short tab[];
//@invariant tab != null;
...
//@requires size <= tab.length;
//@ensures true;
//@exsures (Exception) false;
public void clear(int size) {
int code;
//@loop_modifies code, tab[*];
//@loop_invariant code <= size && code >= 0;
for (code = 0; code < size; code++) {
tab[code] = 0;
}
}
}
此方法 clear
的作用是将数组 tab
的前 size
个元素置为 0。其异常后置条件表明该方法不会抛出 java.lang.Exception
类型的异常(包含所有运行时异常)。循环不变式保证了数组访问的索引在 0 到 size - 1
之间,结