New Beta of DrJava

Yesterday, on my birthday, I released a new beta version of DrJava. If you have any time, please take a look at it.

After some discussion on December 19, which was a bit limited because only Dan chimed in, I decided to create a branch based on revision 4268, the last version before Dan integrated the new interpreter. Then I merged the last changes I made in revision 4286 into the branch, so the beta has all the bugfixes and features of our latest internal version, but not the new interpreter.

If I don’t hear of any major problems, I will make a new stable release based on the same branch during the first few days of the new year. In mid-January, we will then make a new beta release that also includes the interpreter.

I looked at the release notes for our new beta again, and I think it was very necessary to release a new version. It may not seem like we did much in the last half year, except for Dan’s work on the interpreter, looks can be deceiving. Since the last released stable (and even beta!), we’ve added the
following features:

Drag-and-drop for Java files. It’s really incredibly convenient. If you haven’t tried it yet, do! You’ll be amazed.

Connecting to a running DrJava instance to open files in an that instance. This may not be important for most of you, but it enables me (and perhaps others) to use DrJava as a highly-functional IDE to display code. The deadlock checker I wrote loads the file into DrJava and jumps to the right line at the click of a button. Why write a new display tool when we have DrJava?

‘Automatic import’ dialog to the Interactions Pane. We’re all lazy, and this makes being lazy so much more convenient ;-)

Just two days ago, I made it work with user-defined classes too. It works very well if “Scan Class Files” in Preferences/Display is enabled (by default disabled, because it takes some time on network drives), because then the actual class files that are generated are scanned. If that is disabled, then it uses the names of the Java files, which may not contain all publicly accessible classes. And outside of project mode, if the working directory is set incorrectly, then the package names may be wrong, but there’s not much I can do
about that.

I also do not allow static imports of static inner classes, because that would require me to check for “public static” visibility, and at least with our current reduced model, it’s not easy to do that quickly. I could add that feature by scanning class files internally (the ASM library we now include can certainly do that, and the library I wrote for Concutest can definitely do it as well, and of course I’m very familiar with it), but again, that takes time, especially on network drives.

I hope you agree that drag-and-drop and automatic import are very important convenience features. But we also performed a few bug fixes:

  • [ 1773173 ] Find All results with similarly-named files. If the files were named similarly, they were merged incorrectly in the “regions display panel”-type panes.
  • [ 1792359 ] when exiting, cancel button does not behave as expected. There was a mismatch among the return types, and users could lose their changes when DrJava quit unexpectedly.
  • [ 1831946 ] Error after compilation. This was another concurrency problem, and by changing the way listeners are removed, we hopefully addressed this.

Please try out the new version, and definitely let me know if you run into any problems.


About Mathias

Software development engineer. Principal developer of DrJava. Recent Ph.D. graduate from the Department of Computer Science at Rice University.
This entry was posted in Uncategorized. Bookmark the permalink.

Leave a Reply