Microsoft's Dave Wright, .net Solutions architect in San Francisco and a former Java programmer, said Java is a "wonderful language" but has limitations in virtual machine and language constructs.
Microsoft's web services plan relies on the company's Common Language Runtime (CLR) to serve as a virtual machine, he said. Java, Wright explained, is not good for purposes such as development of real-time applications, graphics programs, and Perl development.
Microsoft's .net, he said, presents a distributed architecture as well as a language-independent component model running the CLR virtual machine, and that .net is Microsoft's way of re-engineering its entire product line around a new set of framework class libraries and is based on XML Web Services for interoperability.
Wright conceded, however, that Microsoft is not pursuing Sun's goal with Java in being platform-independent and is instead relying on powerful class libraries for programming.
Wright acknowledged, "If your target isn't Windows, you can't really implement on .net today. That may change in the future."
In an interview following the session, Wright said he was referring to a version of CLR that runs on the FreeBSD operating system for use by educators. He touted .net's support of multiple programming languages.
"You can program in RPG, Cobol, Python. There are many, many different languages that are already supported," he said. "I can inherit a Cobol object, if you can call it that, from a C++ object," Wright added.
He also criticised Java Message Service. "You would think Soap messages would be folded under JMS, but it's not," Wright said, adding, ".net has an advantage over Java today in terms of cost and performance."
Sun's Glen Martin, J2EE strategist for Java and Web Services Platform Marketing, followed Wright's presentation with a more subdued explanation of Sun's J2EE Web services efforts.
Web services, he said, presents an example of a services-oriented architecture, in which integration of legacy applications is critical.
"The licence for J2EE says, if you're not compatible with the standard, you can't ship," Martin said, adding that Microsoft's C++ requires programming to manage transactions and the OS.
"In short, you're doing a lot of programming that's related to the underlying management of resources, and that's the most complex programming there is in many ways."
Martin also detailed Java's support of Web services standards such as Soap and its status as the leading platform for deploying application servers.
"The problem with multiple languages on top of a virtual machine kind of architecture is if the virtual machine doesn't support the feature the language wants to provide, the language doesn't have a real easy way to provide [the feature]," Martin said.
Interviewed after the session, Martin said that differences between J2EE and .net are fewer than similarities and that Microsoft in fact appears to be imitating Sun with the virtual machine approach, which Sun has used with Java. "They've taken a lot of what J2EE and Java have been good at."
After the session, Microsoft's Wright said his company saw a lot of Java shops moving to .net because of the productivity, and that Java's write-once, test-everywhere approach did not work.
"It's too expensive to move between vendors and doesn't reflect real-world need to interoperate between languages, compilers, and legacy systems," Wright said.