It's been a long time since I posted anything (and an even longer time since I posted anything meaningful.) I hope to start posting some juicy goodness again.
My primary goal is to get off this God-awful blogging platform that I'm using and figure out a way to incorporate WordPress or the like. Until then, I will still try to move forward and post some coding-related nuggets.
Since my last post, I have switched development platforms from C# to Java. I really hate Java and everything about its culture. All of the power in Java comes from
third-party (usually open-source) libraries. This leads to a bunch of disparate APIs that all use different conventions. In .Net land, you had everything handed to you by the mothership, it was wonderful.
Due to the fragmented community that is Java, you end up with complex build systems that can handle all of the dependency and version management of the APIs. While I don't mind
Apache's Maven, it can still be a pain in the ass.
Additionally, Java has a bit more history than .Net, which you would think would be a good thing, but unfortunately it leads to the hands of the language developers being tied for backwards-compatibility. In Java, we have generics, per se, but they don't offer any performance (by reducing boxing and unboxing) because they are just compiler hints that are removed during compilation (
Type Erasure.) That, coupled with the fact that stack types (i.e. primitives) are "special" in that they do not derive from an Object, you get all kinds of fun problems. That, coupled with
auto-boxing (another hack), can lead to subtle bugs in favor of relieving the developer of type-casting and conversion. That's not a trade-off I would ever accept.
I still follow the .Net community closely and everyday I am enticed to jump from the dilapidated Java ship back to .Net. I really like lamba expressions (though I hate the LINQ syntax), and I'm really excited about the parallel computing stuff that's coming in .Net 4.0. The fact is that .Net is evolving and keeping up with other, more dynamic, languages that are growing in favor (e.g., Python, Ruby.) Java, on the other hand, is still in the stone-age and is showing no signs of growing up.
I will say a few "nice" things about Java. First, I love its portability; I really like how ubiquitous it is. My blu-ray player even supports Java. I also like that its backed by some of the biggest names in the industry: IBM, Google, Oracle, and Sun to name a few. And, given that, Java does play very well in enterprise-class development. This may just be because of Java's maturity and the maturity of the existing APIs. .Net, in contrast, seems to be more of a toy framework in comparison.
Well, that's it for now. I'd like to start posting some coding-related entries. Stay tuned.
I'd like to note that none of these statements in any way reflect the opinion of my employer.