Skip to main content

This Is A Call

Posted by editor on February 4, 2008 at 7:49 AM PST

Class names considered harmful? The weird world of the Da Vinci Machine project.

It's not like the JVM lacks support for languages other than Java. One tally shows over 200 languages on the JVM. So it's obviously a perfectly suitable environment for other languages. But is it ideal?

We've heard for a while the debate over providing better VM-level support for dynamic languages by, among other things, adding an invokedynamic byte code. But it seems that most of us weren't aware how far Sun was taking its research in this realm. It's evolving a whole new VM, based on the current JVM, to be optimally suited to dynamic languages.

John Rose blogs about the introduction of the multi-language Da Vinci Machine project in his event-recap blog Bravo for the dynamic runtime!

"This week several of us from Sun attended the Lang.NET Symposium. The symposium was intensely technical and not too large to fit into a single room, so the presentations and conversations were a fine exercise in what one might call N-3: Nerd-to-Nerd Networking. Sometimes they were even downright inspiring—bravo Anders, Jim, Erik, Gilad, Peli, Jeffrey. Our hosts kindly welcomed presentations from three of us at Sun: Dan Ingalls showed everyone the Lively Kernel, while Charles Nutter and yours truly introduced the Da Vinci Machine project."

The blog goes on to draw comparisons between the dynamic evolution of Microsoft's CLR into the Dynamic Language Runtime (DLR) -- along with such remarkable tidbits as Microsoft apparently no longer attempting to improve CLR's rudimentary JIT -- and the equivalent transformation of the JVM into the Da Vinci Machine project. This project promises to go a lot farther than a single new bytecode:

We are extending the JVM with first-class architectural support for languages other than Java, especially dynamic languages. This project will prototype a number of extensions to the JVM, so that it can run non-Java languages efficiently, with a performance level comparable to that of Java itself.

Our emphasis is on completing the existing bytecode and execution architecture with general purpose extensions, as opposed to a new feature for just one language, or adjoining an unrelated new execution model.

We want the new languages to co-exist gracefully with Java in the JVM, and to benefit (like Java) from its powerful and mature technologies.

The slides (PDF) show an aggressive effort to transform the VM, open-ended experimentation where "wild ideas are considered, but must prove useful", with an eventual convergence on standards. The details of where they currently stand with their research involves a non-Java call site in the bytecodes and use of a specific handler for the language being used, a heavily dynamic approach that figures out linkage at runtime. Other concepts in the VM include "method handles", lightweight references to methods that can be invoked without knowing the name of the method. These are needed to to glue together dynamic call sites, and run at nearly the speed of a Java method call. Anonymous classes are another Da Vinci Machine feature, which are more easily loaded and unloaded and have little interaction with the system class loader (of this case, the slides say "class names considered harmful", which is odd to think about if you're used to thinking about How The JVM Does Stuff).

The Da Vinci Machine project is a sub-project of OpenJDK, and will definitely be one to keep an eye on this year, as it could lead to an extraordinary embrace of dynamic languages running atop the JVM.

Also in Java Today,
highlighting the challenges facing mobile developers that were discussed at the Mobile & Developer Days conference, Ofir Leitner describes his challenges getting his app onto American handsets in So, you want to deploy a J2ME app is the US? "In the reality of things today, application providers find along the way a lot of barriers when they try to deploy their apps off-deck, and the situation in the US is much worse than Europe in which operators already understand that they should encourage data usage."

The latest edition, issue 156, of the JavaTools Community Newsletter is out, with tool-related news from around the web, new projects and graduations in the Tools community, and a Tool Tip on getting paid for doing your open source project, i.e., participating in Sun's Community Innovation Awards Program.

Our Feature Article offers a practical pagination strategy, in Binildas C.A.'s Query by Slice, Parallel Execute, and Join: A Thread Pool Pattern in Java:

This article will first show you how to effectively utilize ROWNUM at the database level itself, so that we implement "true pagination": querying data in slices. Of course, you may also want to do some business processing to the fetched data. If you have millions of rows to be processed, you may want to process them in parallel to fully utilize the available processing power. In Java we use threads to do this, but with the advent of Java SE 5's java.util.concurrent.ThreadPoolExecutor, we also have a means to reuse the threads created. This means our paged data can be sent in batches to available threads in a thread pool.

Fabrizio Giudici works out an ideal for Swing component APIs in today's Weblogs. In
Dreams Beans (Part 1), he writes:
"one of the most hated things in Swing programming is the management of the infamous Event Dispatcher Thread (a.k.a. AWT Thread). The state-of-the-art solutions such as SwingWorker work fine but are quite verbose and cumbersome to implement. Indeed there are much better solutions, at least for most cases, that are just at hand."

Jayson Falkner is having a great time
Controlling Lego Mindstorms with Java (Lejos).
"I just had the chance to play around with my friend's Lego Mindstorms robotics kit. Installing Java was easy, and in about an hour we were hacking out programs for the NXT brick. Here is a quick summary of how we got Lejos on the NXT via USB."

Finally, Mohamed Abdelaziz announces a
New JXTA Micro Edition (CLDC/MIDP 2.0).
"The JXTA ME/CLDC proxy version had been pretty limited in the functionality it provided under CLDC, due to that fact that relied on a proxy for its participation within a network, however, now with the new addition of the protocols, it is now possible for a MIDP 2.0 compliant device to participate in a JXTA network as a first class device."

This week's Spotlight is on
the annual Duke's Choice Awards, which celebrate extreme innovation in the world of Java technology and are granted to the best and most innovative projects using the Java platform. "A global search is on -- to find the coolest Java technology innovations on the planet. Don't miss this opportunity to be recognized as one of the Java developer community elite at JavaOne, in San Francisco. The primary judging criteria for this prestigious award is innovation -- putting small developer shops on an equal footing with multi-national giants." Submissions are now open for this year's awards, and can be submitted through March 14. Winners will be notified by April 4, and announced at JavaOne 2008.

In today's Forums,
kaplanj offers some general guidance for getting Project Wonderland to get through firewalls, in
Re: Configuring Windows XP client behind Windows Firewall/Wireless.
"The Windows firewall may block the Wonderland client from connecting to the Wonderland server. In the Windows firewall, you will need to allow Java to access the Wonderland ports (as described in the wiki). There should not be any need to change the wireless router on the client side. Once you get it working, please do write a wiki entry about how to access Wonderland from Windows, and link to it from the firewall wiki. We need to more clearly divide up the firewall instructions for Wonderland clients and Wonderland servers."

V B Kumar Jayanti posts a JAXB announcement:
IMPORTANT:PLEASE READ: Fix for SAAJ Performance Issue with Large Payloads.
"Some of the users have reported performance issues with SAAJ for large Payloads. In particular a Payload Size of 4MB was taking about 10-13 minutes for SAAJ to construct the SOAP Body. Who are Affected: All SAAJ User's, All JAXRPC User's, All XWSS 2.0 user's, All GlassFish Message Security Provider User's and Metro users (who have SOAPHandlers in their applications OR are using ) will gain significantly by incorporating this Fix. What was the Issue: . It turned out to be an issue in Xalan."

Finally, deuxchevaux is concerned about the Project Scene Graph's
"Hi all, I'm really excited about the scenegraph project, as I'm developing interactive applications with animation. Perfect fit. However, I read somewhere that the license is GPL v2 without classpath exception. This means I cannot use this library for my commercial, closed source projects. Is this going to change anytime to more "open-source-but-commercially-friendly" licenses such as BSD (like the TimingFramework from Chet that I used before) or Apache?"

Current and upcoming Java

Registered users can submit event listings for the href=""> Events Page using our href="">events submission form.
All submissions go through an editorial review before being posted to the

Archives and Subscriptions: This blog is delivered weekdays as
the Java
Today RSS feed
. Also, once this page is no longer featured as the
front page of it will be
archived along with other past issues in the href=""> Archive.

Class names considered harmful? The weird world of the Da Vinci Machine project.