At least they got one thing right

Wow, I can't believe this got passed as a story on Slashdot. Huge flamewar ensues...

From the story,

Here's the list of enhancements to the Java Language:

1. Generics (C# 2.0 already supports this)
2. Enhanced For-Loop (the foreach construct in C# 1.0, duh!)
3. Autoboxing/Unboxing (C# 1.0 already has this, everything is an object, even the primitives - not really, but they do it so well...)
4. Typesafe Enums (again C# 1.0 already implemented this, but I think they've added a little bit more twist in Java, that its actually a better implementation)
5. Varargs (C# 1.0's params construct, ellipsis construct in C++)
6. Static Import (I don't know if C# 1.0 has this, or C#2.0, but C# has a construct for aliasing your imports - which is way cooler. Static Import, actually promotes bad coding habits IMHO)
7. Metadata/Annotations (this is C# 1.0's Attributes, Sun's upturned noses just gave it a fancier name - also, C#'s implementation is better and more intuitive)

They've beefed up the API some, and integrated several packages with the regular JSDK that used to be a part of a separate package or installation ---in my NSHO, the Java API has become bloated...

At this point (even before Whidbey) the deciding factor (as always) for Enterprise work, when choosing a language platform, should be the support it has behind it, in terms of IDE, tools, api, and longevity of the vendor pushing it (forget the OpenSource crap argument, those guys are too in love with Perl, Python, and Ruby...) - right now that's C# and the .NET Framework ---

Wow! Something so truthful yet hurtful of the so-called "cause" of open source software made it past the Slashdot editors. Java loving comments ensue, beware the techno zealots, steer clear of the Java-r0x0rz-M$ sux0rz nut job slashbots.

Don't get me wrong, Java is a great language. Just as Java originally borrowed heavily from C++, C# likewise took the good things® from Java and on top of it, built great new stuff (value classes, enums, simple iteration, attributes & metadata, to name a few.) Since C# took Java and made it better, the next iteration of Java, 1.5 codenamed Tiger, is now attempting to play catch-up by adding simple iterators (C#'s foreach), annotations (C#'s attributes), autoboxing/unboxing, varargs, and other things already found in existing C# 1.0. And not to be forgotten, the new versions of both languages are implementing generics, a feature similar to C++ templates, that allows for parametric polymophism.

The point I'm trying to make is that C# and Java are both great languages and continue to improve. Yes, competition is good thing, at least the Linux zealots have that right. That said, I am looking forward to trying out the new Java Tiger release.

No comments:

Post a Comment