Using Java

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

Comments

aaron weiker wrote Time Ewald on Java vs C#(.NET)
on 01-23-2005 6:40 AM
Steve Loughran wrote re: Using Java
on 01-23-2005 9:21 AM
Yeah, its an interesting difference. Maybe it shows the limited influence power that Sun/IBM/Oracle other vendors have in a broader ecosystem. They all end up depending on community stuff (log4j, ant, struts) as much as everyone else.

In some ways this is controversial: in the absence of one approved way to do persistence other than with EJB, we have evolved so many alternatives: spring, hibernate, turbine, ..., that choosing your persistence model is trouble. Same for the choice of doing server side web pages. JSP? Velocity? Cocooon? Struts? You could spend forever exploring the possibilities. Then there is the versioning problem...

But in other ways it gives a time to market that wouldn't work if one single company was in charge. Tthink of all the stuff that gets cut off the POR to make a VS.net product release - in the OSS world we dont have coordinated release schedules, so there is less pressure that way. And those many persistence models do lead to confusion, but they also permit evolution in the field. A bit like the WS-* standards landscape, only more pragmatic.

-steve

ps. try using Any Java IDE to do Swing GUI work; you'll be pining for the dialog editor of Visual Studio 97, let alone the later stuff.
Rjae Easton wrote re: Using Java
on 01-23-2005 10:59 AM
The details here are a bit outmoded. I discuss the greater picture here: http://blogs.applanet.com/percs/PermaLink.aspx?guid=e94b5f00-1a25-4f3d-b27a-0416944f5a20
Robert Hurlbut wrote re: Using Java
on 01-24-2005 3:30 AM
I agree with most of your conclusions, except I do see some open-source projects such as NUnit, NDoc, NAnt, and others where people have taken the initiative to implement something in .NET that is not (at the time) offered by Microsoft. Granted, many of these tools are essentially ports from the Java equivalents.

One thing I dread, but I think it is getting better, is the early lack of emphasis on design patterns for the .NET community. As I said, it is getting better, with more and more .NET developers learning true OO and pattern development and implementation. I think it is an evolution, but we have certainly learned a lot from the Java community and owe them much.
aaron weiker wrote Tim Ewald on Java vs C#(.NET)
on 01-24-2005 1:36 PM

Add a Comment

(required)  
(optional)
(required)  
Remember Me?