I’ve spent a few evenings rummaging around the web, looking for interesting tools and code that is either coded in java or runs on the JVM. There is a lot of material out there. I had been discussing other programming languages with a friend a little while ago and lisp was mentioned. That got me thinking (and clojure as a functional programming oriented lisp dialect particularly got my attention) so this list is currently a bit lisp heavy.
- ANTLR is a java coded parser generator.
- Clojure is a lisp based functional programming language that generates JVM code and can interoperate with java proper.
- Jython is a python compiler that generates JVM code.
- SISC is a compiler for the Scheme dialect of lisp that targets JVM code.
- Rhino is a javascript interpreter written entirely in java that originates from the Mozilla folks.
- JRuby implements the ruby language (which I don’t know much about, but sounds worth a look) and generates JVM code.
- Armed Bear Common Lisp was the first common lisp implementation that I came across that runs on the JVM. There seem to be others out there, but it appears that common lisp implementations are a bit old and ragged at this point (at least the references I could find).
- Kawa is another scheme implementation with JVM support.
- Groovy is in the same category for me as ruby. Sounds interesting, runs on the JVM and I don’t know much about it.
There’s much more out there and I’ll probably wind up wandering through it as time passes. I’ve grabbed snapshots of these projects to mess with. Depending on time and momentum I’m likely to poke at Clojure and perhaps a bit at some of the other lisp dialects. I haven’t messed with lisp in a long time (and most of what I have done was gnu emacs lisp) but it seems as if a few interesting things are going on there. A functional programming environment that can be used in conjunction with other methodologies is also very interesting. I can’t see doing a majority of the things I do in functional land, but having the option of doing tasks that are well suited to that approach using a functional environment is quite interesting.