2012•Unpublished venueRequires access

Implementing JML Contracts with AspectJ: Improving instrumentation and checking of JML contracts

Henrique Rebêlo, Ricardo Lima, Mrcio L. Cornlio

Open publisher page 0 citations

Abstract

The Java Modeling Language (JML) is a formal interface specification language designed for Java. It was developed with the aim of improving the functional software correctness of Java applications. JML has a rich set of features for specifying Java applications, including abstract specifications, method and type specifications, and multiple inheritance specifications. The current JML compiler (jmlc) does not work properly when applied to Java dialects such as Java ME. The instrumented code generated by the original JML compiler uses the Java reflection mechanism and data structures not supported by Java ME platform. In order to overcome this limitation, our new JML compiler --- ajmlc (AspectJ JML Compiler) --- uses AspectJ to instrument Java code with JML contracts. A set of translation rules are defined from JML contracts into AspectJ program code. The result is a code compliant with both Java SE and Java ME applications. The translation rules handle a number of JML specifications, such as pre-, postconditions, and invariants. This book also includes proofs of concept to compare the size of the final code generated by our compiler with the code size produced by the jmlc compiler.

About this research paper

What this paper is about

The Java Modeling Language (JML) is a formal interface specification language designed for Java. It was developed with the aim of improving the functional software correctness of Java applications. JML has a rich set of features for specifying Java applications, including abstract specifications, method and type specifications, and multiple inheritance specifications. The current JML compiler (jmlc) does not work properly when applied to Java dialects such as Java ME. The instrumented code generated by the original JML compiler uses the Java reflection mechanism and data structures not supported by Java ME platform. In order to overcome this limitation, our new JML compiler --- ajmlc (AspectJ JML Compiler) --- uses AspectJ to instrument Java code with JML contracts. A set of translation rules are defined from JML contracts into AspectJ program code. The result is a code compliant with both Java SE and Java ME applications. The translation rules handle a number of JML specifications, such as pre-, postconditions, and invariants. This book also includes proofs of concept to compare the size of the final code generated by our compiler with the code size produced by the jmlc compiler.

Why it matters

A significance statement is not available in the OpenAlex record.

Key contribution

A contribution statement is not available in the OpenAlex record.

Method / approach

Method details are not available in the OpenAlex metadata.

Main findings

Findings are not separately available in the OpenAlex metadata.

Limitations

Limitations are not available in the OpenAlex metadata.

Applications

Application details are not available in the OpenAlex metadata.

Available abstract

The Java Modeling Language (JML) is a formal interface specification language designed for Java. It was developed with the aim of improving the functional software correctness of Java applications. JML has a rich set of features for specifying Java applications, including abstract specifications, method and type specifications, and multiple inheritance specifications. The current JML compiler (jmlc) does not work properly when applied to Java dialects such as Java ME. The instrumented code generated by the original JML compiler uses the Java reflection mechanism and data structures not supported by Java ME platform. In order to overcome this limitation, our new JML compiler --- ajmlc (AspectJ JML Compiler) --- uses AspectJ to instrument Java code with JML contracts. A set of translation rules are defined from JML contracts into AspectJ program code. The result is a code compliant with both Java SE and Java ME applications. The translation rules handle a number of JML specifications, such as pre-, postconditions, and invariants. This book also includes proofs of concept to compare the size of the final code generated by our compiler with the code size produced by the jmlc compiler.

Key concepts: AspectJ, Computer science, Programming language, Java Modeling Language, Java, Java annotation, Compiler, Design by contract

Related papers

Back to paper searchBrowse research topicsOriginal source
Implementing JML Contracts with AspectJ: Improving instrumentation and checking of JML contracts — Research Paper | ScholarLens