Вопреки Контрактам Кода в C#, в Контрактах Кода JML просто текст, это используется в форме комментариев в заголовке метода. Разве не было бы лучше выставить их как Аннотации, затем? Тот путь, компилируя информацию сохранился бы на метаданных .class вопреки комментариям, которые стираются.
Я пропускаю что-то?
Насколько я могу судить, JML появился раньше аннотаций Java на значительное количество лет. Конечно, они могли бы обновить его, предположительно, используя аннотации.
Существует экспериментальная реализация JML с использованием аннотаций Java:
http://sourceforge.net/apps/trac/jmlspecs/wiki/JML6
Надеюсь, он будет выпущен в той или иной форме в OpenJML в этом году (2010).