Category Archives: archive

Articles written in 2003.

Share the article!


A freeroller blogs (sorry couldn’t figure out your name):

we can now write

    for (String s : c) {


Although it’s just syntax sugar I would have preferred this notion

     foreach (String s in c) {


The second one looks much clearer, however, the first is less disruptive. The keywords “foreach” and “in” may be used in older code, thus break its compilation. The introduction of the “assert” keyword in 1.4 had this same problem.

The question then is, should we sacrifice readability for convenience and compatability?  So Rule 1 is non-disruptive language extensions is, don’t create new keywords!  

The rule looks right, however it seems extremely restrictive to me.   There’s got to be another way, ideas anyone?

I’ve got one “keyword namespaces”! The idea comes from JEX, that has a uninversal way of embedding expression languages.  So here goes, it’ll look like this:

c:foreach (String s in c) {

Looks a bit ugly, however if you had some way of declaring default name space for a keyword:

ns:namespace(“jdk1.5″ );

then it’ll look like the original. (note: why is “in” not qualified, it doesn’t have to be because its inside foreach)

The extension of this is that expression languages can be embedded as first class entities in the language.  A problem with expression languages like jexl or jxpath is that type checking is absent.  So you can’t see if you have a problem at compile time.

Withe “keyword namespaces”, you can create new keywords without breaking compatibilty.

Share the article!

Share the article!


Sing Li has a put together a series of articles on Java Management Extensions (JMX), ”From Black Boxes to Enterprises” Part 1 and Part 2.  I consider Sing Li as being one of the best Java technical authors out there, I came to this conclusion after reading his JXTA series of articles.  Sing Li has also written books on JINI and JXTA, however I’m pleasantly surprised that he’s now writing about JMX. I mean, Java manageability isn’t as cool a topic as JINI or JXTA, but who knows, there might actually be something cool about Java manageability.

Speaking about JINI and Manageability in the same breath, a company named IntaMission, has released a free JINI admin tool.

Share the article!

Share the article!


I was driving to work the other day and I came to a shocking conclusion, I had accidentally patented Aspect Oriented Programming (AOP)!  Actually the kind of interception based dynamic AOP.  Yes, the kind of AOP that JBoss Group LLC is so actively promoting.  Intrigued? Well read on, here’s my story.

I started working for IBM as a consultant in the mid 90′s, I was hired by IBM because I had a special skill, I had actually developed programs using a class library from an obscure company called StarDivision.  Years later StarDivision is purchased by Sun, and that libary becomes the basis of what we know now as OpenOffice or StarOffice. 

Well one day BusinessWeek publishes an article about IBM’s main excursion in e-Commerce.  There’s a screenshot of an IBM project with a caption that’s identical to what we were buiding at the time, unfortunately that wasn’t a screenshot of our project!  A few days later, mass reorganization!  I was moved now to developing a class library for a “subsumption and constraint based” engine. 

We were essentially tasked with redesigning an existing Lisp based implementation and porting it to C++.  We spent several months in design sessions and struggling to make Rational Rose do round-tripping correctly.  One design problem was that we needed to dynamically change the way the knowledge engine checked the semantic correctness of each operation.  That’s when I came up with my idea, every client talks to a proxy which delegates to chain of command objects that can be dynamically configured.  A simple idea, a play with design patterns, a decent solution.

Years later after I had left the project for another IBM project. One day I’m told that my name is part of patent that’s being filed.  See in a big company like IBM, it’s imperative that a patent be filed for any product that gets commercialized.  So what they do is dig up anything “innovative” about a software design, phrase the design in terms of hardware and file a patent.  It turns out, my design was worthy of such “recognition”.

The patent application goes through the process and is eventually awarded.  For my efforts, I get rewarded with a “night-out-in-town”.  My wife and I spend that on theater and dining at the “Windows of the World” restaurant at the WTC.  The Broadway show has been shutdown, the restaurant obliterated, but the patent lives on.

That’s my story, a story played thousands of times every year at IBM. 

Share the article!

Java is a Language for the Masses

Share the article!


Matt Quail writes about the new complexities of JDK 1.5 extensions.  He points to this blog which quotes:

The real point is that LFSPs (Language for Smart People) have a much greater support for abstraction, and in particular for defining your own abstractions, than LFMs (Language for the Masses).

Half a year ago there a couple of bloggers made the recomendation of adding Hygienic Macros into Java as an alternative to adding language features piecemeal.  We received this response from Gilad Bracha, the resident Computational Theologist at Sun.

Thanks for the suggestion. Yes, we do know what macros are, and we may have even heard of Lisp. Seriously, some formulations of macros are well structured enough to prevent the onerous kinds of abuse that have given macros a dubious reputation in the C culture.Nevertheless, we don’t plan on adding a macro facility to Java any time soon. A major objection is that we do not want to encourage the development of a wide variety of user-defined macros as part of the Java culture.

He goes on further to explain what he means by Java Culture:

The advantages of Java is that it easily serves as a lingua franca – everyone can read a Java program and understand what is going on. User defined macros destroy that property. Every installation or project can (and will) define its own set of macros, that make their programs unreadable for everyone else. Programming languages are cultural artifacts, and their success (i.e., widespread adoption) is critically dependent on cultural factors as well as technical ones.

We are catering to the Java culture, while trying to manage things well on the technical side at the same time. In general, once can contrast the Scheme-like philosophy of using a small number of very general constructs, with the more mainstream approach of having a great many highly specialized constructs, as in C or Modula style languages.

Java is clearly in the latter camp. Most Java developers are happy to have dedicated, narrowly focused solutions that are tailored to a specific problem. I am keenly aware of the drawbacks of such an approach, but I don’t see it changing very quickly.

A little while later William Grosso puts together a Share the article!