/Specs

Contains the specifications for the Java language used by OpenJML.

Primary LanguageJava

This SVN repository contains versions of JML specification files for
various versions of the Java API, for some other libraries, and for
JML runtime files.

The repository is arranged in the usual way with trunk, branches and tags
directories.  Within the trunk directory are subdirectories for various
versions of Java, correspondingly named.  There are some API changes from
version to version, particularly from 1.4 to 1.5 with the introduction of
generics.  However, most APIs stay the same from version to version.  Java 1.6
mostly just adds to Java 1.5.  The java4 directory targets JDK 1.4.2.

Accordingly, at least for now, while these directories are being populated,
we will not duplicate specification files across versions.  Only if the spec
file is altered for a new version will we put that new version in the
corresponding directory.  The specification path can be suitably constructed 
to pull in all the relevant specification files.
For example, if running version
- 1.4, the path would be something like    trunk/java4
- 1.5, the path would be something like    trunk/java5:trunk/java4
- 1.6, the path would be something like    trunk/java6:trunk/java5:trunk/java4
The search order across the directory path will ensure that the correct file
is found.

If it proves useful at some later date to make full copies in each version
subdirectory, we can readily do that.  You can make a single consolidated
directory easily with something like these commands, where 'consolidatedspecs'
is a new (non SVN!) directory:
    mkdir consolidatedspecs
	cp -r C:/home/projects/Specs/trunk/java4/* consolidatedspecs
	cp -r C:/home/projects/Specs/trunk/java5/* consolidatedspecs
	cp -r C:/home/projects/Specs/trunk/java6/* consolidatedspecs
    find consolidatedspecs -name ".svn" -exec rm -rf  '{}' \;

[ I considered making each version subdirectory a separate branch, but 
thought that that would end up simply in a confusion of branches and merges. 
It also would make it harder to work with the directories side by side. ]

Branches are to be used as is common in SVN: to hold specific variations 
for temporary or unusual purposes.  Please name them descriptively.

David Cok
1 June 2008