ince the day Java was released in 1995, people have been clamoring for new features. Peruse the Java discussion groups on the Internet and you'll find that developers are begging for tantalizing features like class and function templates, operator overloading, multiple inheritance, and closures.
However, read further and you'll understand why many of these features haven't been added yet. Sun Microsystems' Java JDK design team makes a point of including only features that they could implement successfully. They left out any controversial or imperfect features. The result is a clean, well-defined language that is easy for the beginner and useful for the expert.
Still, people want their new features. In fact, some ambitious researchers have taken it upon themselves to augment Java with new features and release these new versions (or variants) of the language to the public. This article examines three of the more promising Java variants: Pizza, MultiJava, and EPP. Each of these has interesting features. For each of the features, the article demonstrates a complete program you can compile and run, allowing you to try the variants out for yourself.
What Is a Java Variant?
What exactly does the term Java variant mean anyway? For one, a library or package is not a variant. People create libraries for Java all the time; Sun is constantly adding new packages and libraries to the core Java distribution with every new release. But the language itself has changed very little over the years, as has the basic syntax and semantics.
A few notable syntax changes have occurred, and of course the core classes have undergone many changes. Although the distinction between a library change and a true language change isn't clear-cut, the changes within the variants discussed in this article are. Each one involves a syntax change, and they each are a true addition to the core semantics of the language.