The religious war between Java and .Net seems to be over.
So say both developers and analysts asked about the two development environments. Gone are the days of chest-thumping and sneering at the competition, replaced by pragmatic discussions of the merits and shortcomings of what are now mainstream products.
Kate Gregory, partner at Gregory Consulting in Peterborough, Ont. and a Microsoft MVP (most valuable professional), for example, is convinced that there’s no contest. “It’s .Net all the way,” she said. “I hardly ever get e-mails (from students) asking if they should learn C# or Java any more.”
On the other hand, Roger Singh, chief technology officer for Toronto-based Scalar Decisions, leans towards Java, pointing out, “Java still leads the marketplace with a diverse mix of skills availability and wider acceptance across backend software applications.”
David Senf, application development and infrastructure analyst at IDC Canada, sits in the middle. “Java and .Net are pretty evenly matched in the Canadian market, as much as you can compare them,” he said.
It may be a saw-off from Senf’s point of view, but Jeff Zado, senior product manager of developer solutions at Microsoft Canada, noted that a 2005 IDC study asking North American companies for their primary application development environment for mission critical applications showed .Net with 23.6 per cent of the market, while Java had 15.8 per cent (other, less specific studies peg Java’s overall share of developers at 48 per cent, although most work in more than one language).
Growth in both
However, he added, “there’s growth in both areas. Gartner has been telling their customers for a couple of years that there are two core platforms that applications for the foreseeable future will be built on, and that’s Java and .Net.
“A lot of work has been done (at Microsoft) to make sure companies can choose either .Net or Java. We’ve had keynotes showing interoperability and integration between the two so organizations can leverage their (developers’) talents.”
Sun Microsystems’ attitude towards .Net has mellowed somewhat, too. In its Project Tango, Sun’s Java Web services engineers are working with Microsoft’s Windows Communication Foundation (WCF) engineers to make sure the two environments play nicely together in the enterprise.
It does so by implementing WS- specifications such as WS-Transfer, WS-MetadataExchange, WS-SecureConversation and WS-Security, and testing their interoperability through plugfests.
Project Tango is an open-source effort, part of the Glassfish Community, and will be integrated into its Web Services stack. Sun’s Web Services Interoperability Technology (WSIT) will be based on this stack. “It allows Java EE application servers to interoperate with Microsoft’s .Net servers,” said Karen Tegan Padir, Sun’s vice-president for the enterprise Java platform.
“So we are collaborating on implementing the Web services interoperability technology at the protocol level. Eventually we plan to put it into the platform but right now it’s actually a feature set in our application server so you can talk in between the Sun application server and the .Net server.”
Talking between the servers is one thing, but actually programming the applications is another, and there’s agreement Java is the harder to use. “It’s known as complex,” agreed Senf. “.Net and Visual Studio are thought of as easier to use.”
Claude Rémillard, president of InCycle Software in Laval, Que., also cites usability as one .Net strength, but feels that most business applications can be developed with either Java or .Net. “At a broad level,” he said, “Java has an advantage in markets with strong community support and where the environment is already in place. On the other hand, .Net is very strong from a usability perspective and in leveraging the overall Microsoft infrastructure. It can support Web, Windows, and mixed applications, which makes it very flexible.”
Feels more productive
“I feel more productive on the .Net side,” said Gregory, who also programs in Java. “When I made the jump, it was about the tools in Visual Studio, and the libraries.”
Padir sees the advantages of .Net too, but thinks that Java offers other strengths. “A homogeneous environment is easier to program to. In a closed environment, you can always count on certain things being there. You can take advantage of native operating system features,” she said.
“With Java, we don’t want developers to have to care about the operating system. Sun spends a lot of investment making sure that is true.”
“There is little way you’d want to do a progress bar on the Web without AJAX,” insists Matthew Bohm, Sun’s AJAX guru. “If you write one in Java without AJAX, you’d have to write a ton of code. In Java Studio Creator (Sun’s visual development environment), you drag the component, tell it where to get the percentage (of completion) from, and deploy.”
However, usability isn’t the only reason why developers choose one platform over the other. For Scalar Decisions, which works with both, it depends a lot on the customer.
“Once we leave an engagement, our customers are often faced with supporting at least some components of the infrastructure,” Singh noted. Because of this, the customer often asks Scalar to use a specific tool for which it has in-house expertise.
Rémillard, too, finds that his customers request what they know best. “Large customers typically invest in a platform and try to leverage it for most of their projects,” he said. “It just makes sense. They develop internal expertise on the platform, so they use it.”
However, he added, “When given the choice, we end up selecting .Net over Java. The main reason is the ease of development and the integration with the underlying platform. The tools are there to make development of even complex applications more straightforward.”
Singh’s project mix often leads him to the opposite decision. “We normally use a very diverse set of applications from mainframe to spreadsheets that require integration into an architecture,” he said. “Java certainly seems to handle the types of open interfacing this requires.”
Scalability has also been an issue, but Senf sees that changing. “Java is moving to the extent they can down market,” he noted. “And Microsoft is moving up market.”
Rémillard has noticed the same thing. “Over the past few years, Microsoft has done a very nice job in scaling up, and .Net can now be used from small applications to large enterprise ones. On the other hand, Java has not scaled down as well.”
What do developers’ crystal balls say about the future of the two platforms?
According to Singh, there will be better integration and interoperability.
“Microsoft and Sun are working hard on this,” he said, “and we are seeing the results of the efforts coming to market regularly. It is important to remember that both Java and .Net are architectures, and we will continue to see competitive tools based on these architectures.”
Both platforms are viable choices, said Rémillard.
“I think both platforms have a strong following and I don’t think either will go away any time soon. That being said, .Net is scaling up nicely for enterprise solutions while Java has not succeeded yet in scaling down to the smaller markets.
“One surprising trend we see emerging is large Java-using organizations starting small .Net teams. They use these teams to be more responsive to customers in turn-around time for small projects.”
Yet he realizes for non-Windows environments, Java is the platform of choice. “(Java) will continue to grow, and it will continue to thrive where there is strong community support,” he said.
“But at the end of the day, neither is a bad choice.”
“I think that every time we have a new batch of libraries and every time the products are improved, people will change (platforms),” said Gregory. “Others say they will stay. And they’re both right.”
“Maybe younger developers get caught up in a religious war, but older developers say, ‘You go ahead and use whatever you like. I’ll be over here getting some work done.’”