Skip to main content

Crucial semantics

Posted by editor on December 7, 2004 at 7:07 AM PST

Dotting i's, crossing t's, hoping to keep the lawyers away

License discussions often come down to splitting hairs, as creators try to balance conflicting desires for protection and shareability. I was quick to slap GPL notices on the code for some early articles I wrote, thinking that was the "most free" option. Instead, it prohibited anyone from using my code in a proprietary product... exactly what I didn't want to do. Putting it completely in the public domain didn't seem right either, because then it wasn't "mine" anymore, and even though I wanted to see it broadly used, I didn't want to someday find my own work with a "Copyright 2005, Bob's Code Shack" notice on it. Lately, I've settled in on an MIT license, which provides for only a minimal attribution notice and an "as-is" disclaimer. I think this is the right thing to do - ask me next year if it's worked out.

The Cajo project has wrestled with a similar issue. Project owner cajo has chosen the LGPL license, because "our community wishes to allow its use in both non-free, as well as free software. Of highest importance is to ensure that it cannot be 'embraced and extended'™ into something proprietary." But he has some concerns with how LGPL is intepreted for Java, which doesn't "link" in the way that C does. In When is an object using, vs. based-on an object? He writes: "My question: what is a reasonable, objective criteria to say: Object A uses, but is not based-on object B? Conversely, at what point does object A become a derivative work of, and therefore subject to, the license of object B?" This post is part of the discussion of Java Evolution Possibilities and Examples, and if you think you have an answer for him, I hope you'll join that discussion.

Also in today's href=""> Forums, peterkessler discusses shared archives and what's going on Under the hood: "You can see us edging towards that slippery slope with the work we put into JDK-1.5.0. At installation time we take some of the classes from the bootclasspath and tease their class files into read-only and read-write portions as they would exist when loaded into the JVM, and build what's called a "shared archive". The archive can be memory mapped into subsequent JVM's (and the read-only portion shared between JVM's), saving class loading time. See the Class Data Sharing doc for details. We'll probably do more interesting things with these archives in the future (but I'm not pre-announcing anything)."

rexguo has a request for Mustang, in a discussion calling for Sun to fix the indentation in the JDK source code. He writes "I think equally important is having more comments. I was very surprised to find the lack of comments especially on the 'internals' code that is not part of the public API. Comments for these code are critical to the understanding of the codebase and why things are implemented in a particular way."

Note: today's daily blog was written by Chris Adamson
(invalidname), Associate Online Editor for

In Weblogs, Mark Roth invites you to Come discuss and help shape the future of the J2EE web tier:
"On Tuesday Dec 7th at 11:00 AM Pacific, Roger Kitain and I will be hosting a JDC chat on the Faces 1.2 and JSP 2.1 technologies, which are part of the upcoming J2EE 5.0 platform. We look forward to chatting with you! The chat can be found on the SDN Chat Sessions page"

John D. Mitchell responds to yesterday's blog by Erik D. Meade, Fartlek - Increasing your Sustainable Pace. In Rhythms in Software Development, he says "the fartlek metaphor doesn't really work in the software development world because the stress of high pressure work doesn't e.g, make us more capable of sustaining a faster base pace or increase our peak performance." Instead, he says "a more appropriate metaphor for what Erik is talking about is the notion of rhythm. Humans, both individuals and groups, function in rhythms. The rhythms come in various granularities such as daily, weekly, seasonally, etc. and various types such as mental, physical, emotional, and spiritual."

David Walend is opposed to the proposed standard coding style that says generics should be denoted by a single letter. In Naming Generic Types, he says "some of us are old enough to have used systems with a limit the length of variable names. But I haven't seen anyone use 'x' as a generic double name in years (caveat coordinates). We left that habit behind because of the confusion it caused."

In Also in
Java Today
, one of the most powerful features of Apache XMLBeans is the ability to customize its code generation by supplying a configuration file. In her article Configuring XML Beans, Hetal Shah shows how this customisation brings a number of benefits in terms of flexibility, reusability, simplified code, and maintenance.

You don't want to instantiate objects when you don't have to. For example, you wouldn't want to create a Math object to compute abs(x). Daniel Savarese argues that conversely you don't want to overuse static methods in his JavaPro article When Static Methods and Code Collide. He writes "There's nothing wrong with a library presenting static methods as a convenience, but too often it is done without also providing the more flexible mechanism alongside it. It's better to give library users more choices rather than fewer."

In Projects and
, the dunamis project, in the Java Patterns Community extends the concept of proxying to allow dynamic delegation. Featured in a recent ONJava article, dunamis allows you to provide implementations of interfaces, abstract classes, and even concrete classes at runtime.

Members of the Java Tools Community can catch up on community activity in Issue 16 of the community newsletter. This issue highlights many new projects that have joined the tools community, a graduation, and a tip on using CVS auto-expanding keywords.

In today's
News Headlines

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

Current and upcoming
Java Events

  • December 6-9, 2004 href="">
    TheServerSide Enterprise Java Architecture Workshop
  • December 7-8, 2004 href="">Eighth Jini Community
  • December 13-17, 2004 href="">JavaPolis, 2004

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 site.

Dotting i's, crossing t's, hoping to keep the lawyers away