I've had the good fortune to make contact with two very smart people: Jonas Bonér and Debasish Ghosh. One of the topics we've been discussing is Erjang.
Jonas and Debasish agree that while the project is an interesting experiment (which it is) and a great way to learn Erlang (which I'm sure it is), its usefulness might end there. They may be right. Eventually, of course, a robust and complete Erlang-to-Java-Class-File solution might be able to give you these nice things:
- For people who want to integrate Java and Erlang (and there are such people), byte code compatibility would be very cool.
- Developers could leverage legacy Java libraries.
- Existing deployment environments that use Java could use Erlang without involving IT.
The last point is probably under-appreciated by many folks who aren't operating inside a company where an IT organization, separate from the dev organization, has to have meetings, conferences, discussions and other bureaucratic processes to determine what software can be installed on both servers and desktops. Thankfully, here at Enspire, we don't have that problem. We do, however, work with companies (especially large financial institutions) where installation of software on any machine is a huge ordeal. If you can compile to Java class files (or J2EE war files), things go smoothly -- they needn't even know that a developer used an alternate programming language. This approach will continue to help Scala and JRuby gain more traction than they would otherwise.
Here at Enspire, one of my edicts for our development is that each project's repository must contain a complete sandbox of the project. In other words, you should be able to check out the repository and immediately be able to run the full set of project tests locally on your machine without installing any other software (other than the standard set of software that we require on all machines). It isn't difficult to install Erlang on a Windows machine, but installing it on 45 machines is a pain. There may be an occasion when I or a member of my team think that Erlang might be a good fit for a particular development task. To use Erlang, I would either have to figure out how to include it in the project sandbox or make it a part of our standard development setup, requiring everyone on the team to install it and making it a part of our new machine install procedure. This isn't impossible, but is just painful enough that I'm not likely use it unless we need it across many projects.
Just as we often use HSQLDB for local testing and Postgres for production, it would be really nice to have Erjang for local testing and BEAM for production. Even if Erjang never reaches the performance of BEAM runtime, it would certainly be good enough to run a local test suite.
Will this come to pass, and will the effort be worth these benefits? I don't know, but it remains an interesting project.