ADT Interview: Java or .NET?

January 20, 2005

A while back, Mike Gunderloy of Application Development Trends interviewed me for his Five Questions column, which was distributed in a newsletter. With Mike's permission, I thought it would be fun to post the interview one question at a time over several weeks. Think about how you'd answer each question differently. Here's the first one, and it's a doozy!

Q: Out in the real world, do you see .NET and Java cooperating or competing more often?

A: Initially I saw more competition than cooperation. The first question everybody seemed to be asking was "Do we use Java or .NET?" And of course there was lots of gnashing of teeth over which technology was better. But to answer that question you first have to put it in context of the problem being solved and the goals of the business. For some of those situations, the decision turned out to be a no-brainer. Projects in that category made the decision and they aren't looking back.

Now the question I'm hearing more is "How do we use Java and .NET?" This is coming from companies that have existing investments in Java and Microsoft technologies. Even if they could successfully consolidate their existing applications as either Java or .NET, some of their customers wouldn't be happy about it.

For example, I'm currently working with a client who, through several mergers, has expanded their product suite. In turn they've increased the number of heterogeneous environments they need to support. Some of their bigger customers expect support for Java and Linux, while other equally big customers want the look and feel of their legacy Visual Basic application. At the same time, this client needs to streamline their business by amalgamating all the overlapping products. Rock meets hard place.

To support a wide range of customer needs and meet their business goals, this client developed a foundation of common services written in Java. Both the browser-based client and the stand-alone .NET client use these common services. Each client has custom client-side logic to enhance the user experience, but all the core business logic processing is delegated to the common services. The browser-based client uses Java in the middle tier that interacts directly with the common services. The .NET client uses a Web services interface to interact with the common services deployed on a server. The interoperability through Web services has a measurable performance cost, but they've been able to minimize the round tripping through coarse-grained interfaces.

I think we'll continue to see more cooperation between Java and .NET. These heterogeneous environments aren't going away any time soon, and we can't expect customers will align with the outcome of an either-or decision. Developers would serve themselves well by knowing at least a little about each.

How does that jibe with your experiences? Take the time to write out your own answer. See if writing it down helps you think through your opinion differently than you would if, say, you were engaged in a conversation around the water cooler. Send the question to someone you think will offer a different answer, then share your written answers. I'd enjoy hearing your responses on your blog or via email.

Read more posts in the blog archive »