Language Extensions
By Bruce Eckel
I remember the early resistance of C++ creator Bjarne Stroustrup to language extensions. I suspect it's like having a baby: You don't want to have another one right away, you want to enjoy the current one for a while. But when he realized that extensions were necessary for the language to grow, Stroustrup became a driving force in extending the language.
Java has caught on much more quickly than C++, leaving the creators no such honeymoon period to slowly get over their resistance. And I hear that Jim Gosling is indeed resistant to language changes. Since Java was too immature when it was released-primarily the libraries, but also the languageit's even more essential to amend and extend it for use as a multipurpose development language.
How does a language get extended? One model is the "benevolent dictator," which Borland used to transform Pascal into Delphi. Niklaus Wirth was unwilling to extend the language for industrial programming, so someone else took over. This is successful if the company works hard, as Borland has done, to anticipate needed features. Then there's the "democracy" model used for C++: Anyone can be on the standards committee, and no one has control, so changes happen through consensus. This takes longer, but the issues are very thoroughly reviewed (nothing even remotely like the AWT or Java I/O libraries could have escaped from the ANSI/ISO C++ committee).
Control of the Java language is somewhere in between these two. When you sign a contract with Sun to license Java, any extensions you make must be provided to Sun so that they may add them to the core language or library.