InfoQ

News

Java Language Runtime (JLR) project created

Posted by Werner Schuster on Jul 31, 2007 12:00 PM

Community
Java,
Ruby
Topics
JRuby,
Reuse,
Dynamic Languages
Tags
JRuby,
CLR,
Languages,
DLR
Languages running on the JVM have been around for ages, nearly as long as the JVM. Old examples are Beanshell or Jython. Java Generics came out of Java supersets like Pizza and GJ. With .NET, Microsoft, unlike Sun, marketed the .NET VM as a Common Language Runtime (CLR), designed to support multiple languages. The initial C#, VB.NET, Cobol and EiffelSharp were followed by F#, IronPython, and many more such as Delphi.

The many languages for the JVM received little publicity, mostly focussed on projects like Jython or Beanshell, with the others little known outside of a small circle of enthusiasts.

With the Dynamic Language Runtime (DLR), Microsoft has gone further and provides even more common infrastructure for (Dynamic) Languages targetting the CLR. This is something that has been sorely missing on the JVM. JVM language implementers had to find out every trick and workaround or solution on their own, a process repeated for most language implementations. Examples are creating code on the fly without leaking memory into the PermGen.

This is now changing due to JRuby's Charles Nutter  talking to other JVM language teams, such as Jython, Groovy and others. One step was the creation of the JVM languages Google Group, where JVM language implementers could have a common forum to discuss common problems or solutions for them.

This by itself wouldn't be newsworthy; however,  the the first collaboration has now come out of it. The Jython team provided the code for Jython's package caching mechanism and made it generally available. To have a common place for code like this, the Java Language Runtime (JLR) project was created, and it already has the caching code available in it's source repository.

Future developments will be discussed on the JVM languages list, but some possible directions can be found by glancing at what the DLR provides. Tools for  bytecode generation, for instance, are needed. This includes logic to generate metadata like debug information that maps from the source language's line numbers to the right locations in the generated bytecode. While this might not be rocket science, it's not a problem that every language implementation should have to tackle from scratch. Other common code would be Java integration, such as an implementation of the logic for looking up overloaded methods or methods with varargs.

It's not just basic infrastructure work that can be taken off of the implementors shoulders. It would also allow a group to figure out which bytecode works best for various language features such as dynamic method invocations, closures, or maybe continuations. The languages have different semantics, so it remains to be seen just how much can be shared or retrofitted into existing code bases. Still, working code or profiled code samples are useful, as well as bytecode sequences that are shown to be handled well by current JVM backends (the Just In Time Compilers that generate native code from bytecode).

11 comments

Reply

  1. Back to top

    Just to clarify

    Jul 31, 2007 1:14 PM by Charles Nutter

    The project's official name is "JVM Language Runtime", rather than "Java Language Runtime", and it's intended to target *all* varieties of languages for the JVM. And yes, the name is a direct nod to the DLR (Dynamic Language Runtime) for the CLR, which is both a good idea and a good name. But we'd like to be all-inclusive, providing tools and frameworks for all varieties of languages. And rather than starting right away building a common base all languges must conform to, we'll generalize existing solutions to common JVM language implementation challenges, drawing from the large existing base of already-implemented languages for the JVM.

  2. Back to top

    It will be interesting...

    Nov 26, 2007 8:40 AM by Joseph Then

    It will be interesting how MS is going to intergrate that with their own ASP.NET stuff. --- Open Source

  3. Back to top

    Google Java Language Runtime

    Dec 8, 2007 6:27 AM by Guest

    Google have also a project which intended to collect and grow libraries, frameworks, and utilities that will aid developers of language implementations for the JVM. Given that there are many existing, working implementations of many different languages, there should be many common areas we can share code and techniques. Future Flat-TVs

  4. Back to top

    perfecto

    Jan 20, 2008 10:34 PM by koray goksel

  5. Back to top

    nice article..

    Mar 15, 2008 6:25 PM by ceviri burosu

    Tüm dillerde online çeviri hizmeti. En düşük fiyat, en yüksek kalite ve maksimum hızda! ingilizce çeviri, almanca çeviri, fransızca çeviri, arapça çeviri, ispanyolca çeviri, italyanca çeviri, rusça çeviri ve çince çeviride kampanya...

  6. Back to top

    çeviri

    Mar 15, 2008 6:26 PM by ceviri burosu

  7. Back to top

    Re: uzaktan eğitim

    May 30, 2008 7:23 AM by uzaktan egitim

    Thanks good job

    uzaktan eğitim

    KPSS

    MOODLE

  8. Back to top

    Re: Project

    Jun 3, 2008 11:27 AM by ilkay cevik

  9. Back to top

    Re: Re:

    Jul 16, 2008 6:57 PM by can enis

    Thanks for article

    Bedük

  10. Back to top

    kanal d ana haber

    Jul 29, 2008 1:27 PM by lusi mayk

    The big news is a commitment from all the parties to not patent any of them, nor let sohbet oyun indir program facebook chatanyone try to appropriate the IP and patent it without OpenID's consent.

  11. Back to top

    Good luck guys

    Aug 23, 2008 3:20 PM by mehmet andpaur

Exclusive Content

Using Ruby Fibers for Async I/O: NeverBlock and Revactor

Ruby 1.9's Fibers and non-blocking I/O are getting more attention - we talked to Mohammad A. Ali of the NeverBlock project and Tony Arcieri of the Revactor project.

Agile and Beyond - The Power of Aspirational Teams

Tim Mackinnon talks about the aspirations behind the Agile principles and practices, the desire to become efficient, to write quality code which does not end up being thrown away.

Concurrency: Past and Present

Brian Goetz discusses the difficulties of creating multithreaded programs correctly, incorrect synchronization, race conditions, deadlock, STM, concurrency, alternatives to threads, Erlang, Scala.

ActionScript 3 for Java Programmers

Often the hardest part of changing technologies is language syntax differences. This new article provides Java developers with a transition guide to Actionscript which forms the foundation of Flex.

Neal Ford On Programming Languages and Platforms

Neal Ford talks about having multiple languages running on one of the two major platforms: Java and .NET. He also presents the advantages offered by Ruby compared to static languages like Java or C#.

Future Directions for Agile

David Anderson talks about the history of Agile, the current status of it and his vision for the future. The role of Agile consists in finding ways to implement its principles.

Nick Sieger on JRuby

Nick Sieger talks about the future of JRuby, Java Integration, and his work on JEE deployment tools for Ruby on Rails like Warbler.

Rustan Leino and Mike Barnett on Spec#

Rustan Leino and Mike Barnett of Microsoft Research discuss the technology in Spec# and its futures.