Changing, for better

Bruce Eckel says that the Java team is clearly not ignoring the threat of C# as Microsoft ignored Linux and open source for so long. Joshua Bloch, a Senior Architect at Sun Microsystems, told him in an interview that

…along with the new features already on the list for “Tiger” (JDK 1.5), including true enumerations, autoboxing, and generics (templates), they are adding attributes, something (along with autoboxing) taken directly from C#, because it’s a good idea.

I think there is something for the fellow programmers to feel good about it! BTW, Josh also said that JDK1.5 would probably be the last big change to Java after JDK1.2 which saw the arrival of Swing and new Collections API.


Redefining course with open source

They sure have difference of opinion. Open source has been “evil” for Microsoft. Then they acknowledged that it was a problem for them. Now Steve Ballmer is on record saying :

Innovation is not something that is easy to do in the kind of distributed environment that the open-source/Linux world works in…our customers have seen a lot more innovation from us than they have seen from that community.

On the other hand, Sun Microsystems seems to have learnt few lessons. Paul Andrews informs that Sun and Oracle have thrown “their collective weight behind the inexpensive x86-based (Intel chip and clone) servers running Linux or Sun’s Unix-based Solaris”. He further adds:

Sun wants first of all to make sure it loses none of its well-heeled clients to IBM, a big Linux supporter, or to Dell Computer servers running the hated Microsoft Windows. Second, the alliance would like to lure as many Windows-based businesses to a Sun-Oracle solution as possible.

The alliance indeed seems formidable.


Will Tiger be scary?

I was very happy when I wrote this but Matt Quail scared me badly. Though pertinent, I hope such scepticism is later proven unfounded. Don Park insists that there was no need to go for features like “Generics” when there were other critical pending issues like extending SWT and incremental installation. But as Joshua Bloch said, none of the changes will be that hard for developers to adjust to…one that might require some adjustment, it would be generics, because you’ll have to get used to providing additional information in declarations. Instead of merely saying:

List words = new ArrayList();

You’ll have to say:

List<String> words = new ArrayList<String>();

Moreover, many features have been due for long. For instance, using constant interfaces has been a prevalent and sometimes recommended practice despite of us knowing that Interfaces should only be used to define types; any other use is an abuse. Using an interface causes internal details — such as constants — to leak into the class’ public API. I am no expert but methinks static import was a much needed feature.