Harmonia-Java
Our Java implementation is much newer than the implementation for Cool and is more complex. Therefore, a few extra things should be said about it.
What it will do
Harmonia assumes the standard directory layout defined in Section 7.2.1 of the Java Language Specification.
When opening a file, harmonia also opens all the other files upon which it depends. The first time that it does so, it caches the semantic data. Therefore, you should expect a much longer delay the first time Harmonia consults a particular library file.
The directory ".", (the current directory) does not make much sense when you are in an editor. Therefore, the directory "." is interpreted as the directory containing the particular file being examined if it is not in a named package, and is the directory up the directory hierachy as many levels as there is package levels for named packages. This attempts to approximate as well as possible the behavior of javac.
At this time, there is no provision for "projects". Thus, all open files are considered for semantic information for all other open files. This can lead to strange results at times, with things being defined when one would not think they ought to be. If something seems to not acting in the standard behavior, check all other open buffers. Another consequense is that you must manually change classpaths if you have two sets of files with the same classes defined.
Bugs
There are two bugs that you may encounter while using Harmonia. First, Harmonia does not check proper use of compile time constants versus other expressions, definite assignment, or some dataflow information. Also, the mutual shadowing of local variables and types is incorrect. However, please report any other bugs you find with M-x report-harmonia-bug.
Next Section: Crash Recovery and Bug reporting
|