Skip to main content

Keep 'Em Separated

Posted by editor on October 19, 2006 at 8:51 AM PDT

Will the JAM bring order to JAR chaos?

So, back at JavaOne 2005 -- yes, "5", not "6" -- I think the single thing in the keynote roadmap that interested me the most was a short bit of what almost seemed like thinking aloud about the limitations of the JAR file as a distribution format. The reality, particularly for desktop devleopment, is that JAR versioning is haphazard or nonexistent, so developers tend to bundle the specific versions of the libraries they need and use classpath trickery (or OS-specific configurations) to ensure that the right versions of the right libraries get loaded. And even this isn't foolproof -- ask me about the time another team at a former employer put a year-old version of one of my team's JARs in the lib/ext folder.

So, it's fascinating to see that an Early Draft Review is now available for JSR 277 - Java Module System, which aims to rein in all of this nonsense and create a JVM-supported mechanism for deploying Java applications and expressing their dependencies, versioning, what they export for other applications to use, etc. The draft is big -- 87 pages for the main body of the proposal, plus another 75 of appendicies and related documents -- so it's too much to summarize in this space (surely some other bloggers will be posting their opinions and ideas). The central deployment story (there's a separate development module story) is that a JAM file (meaning "JAva Module") will be the basis of future deployment, and that it will contain a metadata file much like the current manifest file, describing its unique name, version, dependencies on other modules, exported classes (ie, what it makes visible to other modules, etc.).

A brief note in section 1.6 points out that the module format is designed to be language-agnostic. This might make the JAM broadly useful for all end-users -- JVM-based versioning and deployment of any language on any operating system could make the JVM an absolute must-have for all users, which would eliminate Java's worst deployment problem today: getting a JVM installed for users who don't already have one. As an aside, this is one thing that Bruce Tate got very right in Beyond Java: by solving difficult problems of security and cross-platform execution, the JVM has become so valuable that any would-be successor to Java would have to run on it.

There are probably some compelling server-side uses for JSR-277 too. Surely you know of companies where the developers count on Joe (or Jill) in IT to put the right JARs and the right scripts in the right places on the deployment servers. So what happens when when Joe or Jill is gone in the next mass-layoff? A works-the-same-everywhere deployment scheme has a lot of appeal here.

Anyways, if the topic interests you, check out the draft. The draft review period runs through November 13, and a vigorous discussion can only help improve the spec.

Also in Java Today,

the new Glyph project aims to provide a set of utilities and annotations to speed up development for Jini-enabled applications. "J2SE5.0 annotations are used for automatic service creation and creation of smart proxies for remote objects, and generation of associated Jini configuration files. A number of utilities have been written to help manage exported objects, and ease service initialization. In development, there are other helpful classes such as service filters, and Pack200 URL handlers that can significantly reduce the size of a downloaded jar file when working with mobile code." The project already has downloads and a tutorial.

The JOGL-Demos project contains Java demonstrations utilizing OpenGL through the JOGL API. They exhibit advanced functionality such as vertex and fragment programs, shadow maps and hardware-accelerated offscreen rendering via pbuffers. Most of the demos were ported from C or C++, in which case a link to the original sources is provided. Check out the project's home page for Java Web Start versions of each demo.

Today's Feature Article looks at

Invoking Assembly Language Programs from Java.
After all, nearly everything written about Java Native Interface (JNI) assumes that your native code will be written in C or an offshoot like C++ or Objective-C. But this isn't the only option. For high performance and close-to-the-metal coding, you can call assembly language from JNI. Biswajit Sarkar shows how to do it.

Today's Weblogs kick off with a look at What's New for JavaOne in 2007, in which Annette Vernon talks up a desire for a more community-driven process in developing the content for next year's conference. And if you've been waiting, she offers "a sincere 'mea culpa' to all those interested in hearing about the behind the scenes goings ons with JavaOne. Forgive me? And check out what's new for 2007 JavaOne. Hint: it's all about the content."

Wrapping up discussion on a bitterly-debated bug from the forums,
Joshua Marinacci has an
Update on Bug 6477341,the '...' Windows Combobox bug.
"The '...' combobox bug in Java 6 has been fixed. Joshua discusses the issues involved and how this was a success for the community."

In Web Services Stack Comparison, Arun Gupta writes:
"Dims asked me to update the Web Services Stack matrix. I've worked in the Web services team at Sun since very beginning and have seen it growing to #1 toolkit and now supported natively in GlassFish. I was therefore tempted by the invitation and updated the matrix with GlassFish entries. Here are the key points I'd like to highlight..."

In today's Forums,
janaudy wants to see an official guide to
Extreme UI:
"People, I feel like I need to write this down somewhere. UIs have not been as exciting as they are now for a very long time. Thanks to the work of the Java2D and Swing/X teams as well as some extreme UI evangelists, people are now becoming aware of the powerfulness of Java on the desktop. But I think there is a need for greater visibility on all the tips and tricks that we see on some blogs. I would like to suggest a dedicated section in the Java Tutorial -- just below "Creating a GUI with JFC/Swing" -- entitled "Extreme UI" that would be dedicated to all the nice UI effects, Java2D tricks (gradient, performance, timer, ..), etc. that are currently sparse and not easy to find."

rummyr wants a
Wiki for Java Advanced Imaging:
"Does anyone think it would be worth creating a JAI specific Wiki on Ideally this would reduce the number of queries appearing on this list. Sections I would like to see are: More detailed descriptions of the operators. Performance improvements. When and how to use ImageLayouts, and what the effect is. ROI's etc"

In today's
News Headlines

Registered users can submit news items for the href=""> News Page using our
news submission
. All submissions go through an editorial review before being
posted to the site. You can also subscribe to the href=""> News RSS

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.

Will the JAM bring order to JAR chaos?