I've been working with Java lately because it's what Mindreef uses to build SOAPscope and our next thing. As a dedicated MS platform supporter for many many years, it's been a pretty interesting experience, especially coming off 18 months working on MSDN2, which we implemented with Whidbey. There are three main things I've noticed.
First, once you environment is set up, the only difference between Java and C# is the idioms. Yes, C# has some nice features that Java does not (some will come in 1.5), but they aren't enough of an issue to make you go one way or the other. The IDEs for Java are uglier (well, maybe not Eclipse) and clunkier, but they offer richer features for cutting OO code. The refactoring and quick fix language support are really useful. VS2005 has a lot of these features too. But for the first time it feels like MS is playing catchup on these tools. (Note that I don't do much web or graphical app page layout work - my sense is that VS is much better at that task, but I don't know for sure.)
Second, this is no OO paradigm that the Java community couldn't beat to death. Okay, maybe it's particularly bad in the XML space, but do we need layers of factories to create factories to create objects (seriously)? This isn't that big a deal either, but I wish there was a little more emphasis on practicality instead of purity. For instance, .NET's System.Xml.XmlElement.InnerText property is not a standard DOM thing and it raises some questions about interactions with other operations if your Element's content is in a strange state (e.g., how does it work if you already have two text children?). But it's sooooooo useful.
Third, and most interesting, is the community projects. The Java world is really vibrant, with lots of stuff coming from the community. There is a vibrant .NET community too, but it seems more focused on helping people achieve things with the bits MS ships than with adding major things to what MS ships. Yes, I know there are a lot of .NET components that the community builds, but I don't know of any that have an uptake anything like JBoss, Hiberante, Struts, Velocity, etc. In the Java world, because there is no single controlling party, people are much more willing to undertake projects building tools and infrastructure for free or for profit. And, just as important, developers are willing, and in fact eager, to use them. Too many .NET developers won't embrace things that MS doesn't produce. Which is too bad because while MS has tons of smart people, it doesn't have all of them.
Posted
Jan 23 2005, 07:40 AM
by
tim-ewald