Sun Java Solaris Communities My SDN Account Join SDN
 
Article

Java 2 Platform, Enterprise Edition and .NET: An Interview with Java Technology Evangelist Rima Patel

 

Java Technology Evangelists

by Janice Heiss

We normally think of evangelists as folks who seek to convert the masses to their religious beliefs, and in so doing, save their souls, all the while serving truth, goodness, and God. Java technology evangelists are also in the business of conversion--and yes, there is a religious component to their mission, if religion reflects our fundamental values and sense of how life should be lived. In this continuing series, we talk with Java technology evangelists who are casting their own creative light on the meaning of the technology.
Rima Patel
Rima Patel

July 15, 2002 -- Rima Patel is a Mathematics graduate of M.S. University (Gujarat, India) who has spent 7 years in the computer industry. She began her career with software training at an Indian computer institute. Prior to joining Sun Microsystems as a Java technology evangelist, she worked as an assistant technical architect responsible for designing Internet applications. Her technology interests include Web services, distributed computing architectures, and applied physics. She is also interested in ongoing efforts related to ebXML and the Semantic Web.

Q: You travel the world reaching out to developers. What do they ask you most about?

A: Developers often ask me to compare .NET and Java 2, Enterprise Edition (J2EE) architectures. I love this question because it allows me to clear up a lot of FUD (fear, uncertainty, and dread) related to .NET and J2EE.

My response is always: .NET is immature, very proprietary, and lacks community. Let me explain this. .NET is not widely deployed yet. Nobody knows how it scales, or how it performs. There are no benchmarks on .NET's performance. Given these facts, why would a corporate IT department want to use a platform that is not yet proven?

I see .NET mostly as a way of touting Web services development over everything else. A Web service sits on top of existing components and applications so as to expose their functionality as a coherent higher-level service. Microsoft's strategy seems to be revolving around developing Web services, but what about developing the actual base components and applications that provide the real business function? How stable are the components and applications in the .NET environment? Nobody knows.

Another huge difference between these two platforms is that .NET is still a closed platform, even after the much-publicized standardization of .NET technologies, namely C# and CLI (Common Language Infrastructure) by ECMA. C# is Microsoft's Java technology-like language, whereas CLI is a subset of .NET Framework consisting of base class libraries.

.NET is not just comprised of C# and CLI. It consists of much more: ASP .NET, ADO .NET, and enterprise services-related framework classes, like the types present in System.EnterpriseServices namespace, which are responsible for providing enterprise services such as transaction and security, to name a few. These were not submitted to ECMA or any other standards body. Thus, since no one has complete knowledge of .NET, it's not easy to implement .NET on other platforms. And .NET is a choice available only on Microsoft Windows, which neglects the non-Windows community.

Also, there is no process in place through which the rest of the community can give their input to .NET technologies (apart from C# and CLR). This is unlike the Java Community Process (JCP), a forum in which all interested parties participate to shape the future of Java technology-based platforms. Because of this, .NET is confined to Microsoft's vision of what the world should look like.

Contrast this with Java 2, Enterprise Edition (J2EE). A great many companies have already invested years, dollars, and brains in J2EE. .NET has not been subjected to such scrutiny. If I were a CIO, I would certainly want my information systems to have been tested and approved by a wide range of other businesses and individuals, and by the whole community.

Another issue with .NET is the learning curve required. .NET is not about COM/COM+. COM/COM+ in .NET has been replaced with Serviced Components, a middle-tier component packaging model that is basically a DLL (dynamic link library) packaged within an entity known as Assembly. Thus, Microsoft Windows DNA (Distributed Network Applications) developers now have to learn this completely different component model, apart from CLR (Common Language Runtime) and .NET Framework SDK. Again, .NET does not support Visual Basic; instead, it supports a completely re-engineered (to support object-oriented concepts) version of this language--VB .NET--which is definitely not a logical next step for VB developers as far as learning is concerned. I am sure COM/COM+/VB developers must be feeling a bit abandoned with .NET.

Another challenge COM/ActiveX shops would have to face with .NET is how to take advantage of the .NET managed environment, while still retaining their investments in COM/ActiveX. The .NET managed environment provides lower- level virtual execution for applications written in different languages, as well as higher-level infrastructure services such as security, component life cycle, remoting, transaction management, and so on. Now, the problem with COM/ActiveX components is that--even though they can coexist with .NET Serviced Components--they cannot get the benefits of services that a .NET managed environment provides, since they would be required to run as "unmanaged" on .NET. This means that a .NET managed environment would not render its services to them. Thus, to get the full benefits of .NET COM/ActiveX, shops would have to rewrite them as .NET Serviced Components.

If you compare .NET to J2EE, you'll notice that J2EE is a much more mature, heavily deployed, and time-tested platform. A huge community is behind its success. It has a well-defined component model with Enterprise Java Beans technology, Web application frameworks (JavaServer Pages, Servlets, JavaServer Faces), and a transaction and security model. Plus, with various Java APIs for XML, J2EE now has the means to expose the applications as Web services. Bottom line, J2EE not only supports Web services and XML but, equally important, it also provides a well-proven, open and standards-based infrastructure platform.

I'm not saying that .NET should never have emerged. The developer in me always appreciates different architecture choices. But .NET, as it stands now, is far behind J2EE.


Java Pet Store
Java Pet Store

Q: In the fall of 2001, Microsoft claimed that their .NET version of Java Pet Store (.NET PetShop) was 28 times faster.

A: Their claim is suspect. Microsoft asserted that .NET PetShop is faster than Java Pet Store deployed on the Oracle 9i Application server. Oracle, in March 2002, issued a rebuttal to this claim, in which they explained how Microsoft arrived at those numbers. In their white paper, published on Oracle Technology Network, Oracle noted that Microsoft changed .NET PetShop architecture from n- tier (as demonstrated in Java Pet Store) to 3-tier. .NET PetShop had ASP .NET pages talking directly to an MS SQL Server 2000 database, thus removing the extra layers of abstraction from the Java Pet Store design.

Secondly, .NET PetShop broke complex join operations to simple SQL queries and placed these SQL queries into stored procedures in the database.

Now evaluate Microsoft's .NET PetShop from a design perspective. Clearly, their PetShop violates several recommended best practices. Imagine a real-world application designed just the way .NET PetShop is. It would run into a maintenance nightmare because of all the business logic in ASP .NET pages (written in C#), which are, in fact, meant for presentation.


Oracle's Response to Microsoft's Claims about Java Pet Store For Oracle's response to Microsoft on Java Pet Store, go to: http://otn.oracle.com/tech/java/oc4j/
pdf/9ias_net_bench.pdf

For IBM's response to Microsoft's claims about Web services: http://www-3.ibm.com/software/info1/websphere/
/news/ibmnews/compreview4.jsp"

With PetShop's design, maintenance would be a big problem for applications with a high order of complexity. What would you do if your application had to migrate to another database, for instance, when all your SQL is lying in stored procedures? How are you going to manage such ports?

Microsoft took advantage of an application intended to demonstrate usage of J2EE APIs and best practices, by trying to use it as a benchmark, something for which the ECperf application is better suited. (See http://ecperf.theserverside.com.) Meanwhile Microsoft's .NET PetShop violates many basic design principles in a tradeoff for better performance.

Now with regard to benchmarks, Microsoft keeps touting their TPC-C and TPC-W stories. But again, that is misleading, since both TPC-C and TPC-W are not really middleware benchmarks. They are database tier and Web tier benchmarks, respectively. So they are irrelevant when discussing middleware performance.

Advice for Young Developers

Q: What advice do you have for developers just starting out now?

A: Hiring has slowed down significantly over the last two years because of the economy. A lot of developers feel as if they have been stagnant and are not able to grow. Many are struggling. I suggest, if possible, that they return to school and gain some knowledge about business, if they don't currently have any. This could have a potentially big payoff.

Many developers today aren't educated about the business arena that their application/product targets. They don't understand the vertical dimension of business and in the long run, this will work against them. I believe that most of the low-level business functions that we are writing as developers today will not have to be written in the future. Today, we have to write this low-level business functionality, because the infrastructure software (manifested as application servers coming from Sun or BEA or IBM) only provide horizontal services. But sooner or later these application server companies will have to start providing something "extra" on top of the horizontal layer, since the horizontal layer is starting to become a commodity.

Companies have started questioning the value of paying for a J2EE implementation that they can get for free from open source products. Thus, to get customers and differentiate themselves, application server companies will be compelled to provide something else apart from infrastructure. I imagine this "extra" layer will be vertically-oriented business services that provide a particular line of business functionality. So, for example, if BEA is targeting a Life Sciences customer, it would offer them FDA- compliant business services apart from J2EE infrastructure. As a result, developers who were once hired simply to write FDA functionality would now need a strong IT background and a solid knowledge of the Life Sciences domain. In essence, developers would also function as business analysts.

The same advice goes for forward-looking students who want to become involved in a career in IT: It would benefit them to gain expertise in business and a specific business domain, apart from pure computer science.

Q: What, according to you, is the next big wave in Information Technology?

A: I believe the Semantic Web is the next big thing--even beyond Web services. The Semantic Web is an extension of the current Web; information is given well-defined meaning, so that computers and people can cooperate more effectively. In the future, much more information will be immediately available on the Semantic Web than is possible today. Presently, it is in its early stages of development. Major building blocks of Semantic Web--Ontologies and RDF (Resource Description Framework)- based languages (like OIL and DAML)--are currently being worked on. We are at least a few years away from seeing widespread deployment of the Semantic Web. But the vision is there. There seem to be two groups of people, each reacting differently to the Semantic Web: those who say it is too ambitious and too abstract to become a reality, and those, like myself, who believe in the virtues of this technology. We see its potential to change the way we present and consume information and do business on the Web--in fact, the very nature of the Web itself. We are very optimistic about this next-generation Web.

Also, other forms of computing such as Grid Computing and Edge Computing are bound to gain momentum, because some application areas require greater processing power than what Moore's law can provide.

The Future of Java Technology

Q: Would you care to share some speculations about where the Java language is headed in the next few years?

A: In the next half decade or so, I see every child learning the Java programming language as part of their primary school education. I envision these kids speaking three languages fluently--English, a preferred second language, and the Java language!

This prediction is not a big stretch, given the fact that so many young children these days know how to create HTML and surf the Internet. Considering that the Java language has such close roots to the Internet, what would make more sense than for children to learn it? As we know, it's already taught in high schools and colleges.

From an industry perspective, the Java language is almost becoming the de facto programming language. I rarely hear of any product that does not support Java technology. Neither do I hear of many new business application developments taking place in languages other than Java. So many organizations use Java to talk to their legacy applications, using technologies such as Java Native Interfaces (JNI), J2EE Connector Architecture, Java Message Service (JMS), and, most recently, Java APIs for XML like Java API for XML Messaging (JAXM), Java API for XML-based RPC (JAX-RPC), and Java API for XML Registries (JAXR), which provide support for widely deployed Web services specifications such as SOAP, WSDL, and UDDI.

There is quite a bit of FUD in the industry that C# is going to make Java technology obsolete. I believe that the Java programming language will not be threatened by this new kid on the block. C# does not provide anything new that the Java language has not been providing successfully for years. In fact, C# is missing the most significant advantages of Java technology: community interest and support for multiple platforms. This is a serious disadvantage. So why would industry want to learn and deploy this new language?

In my opinion, Java technology is here to stay and will thrive for a long time to come!

end.

See Also

Java BluePrints > Code
(http://java.sun.com/blueprints/code/)

J2EE vs. .NET
(http://www.theserverside.com/resources/article.jsp?l=J2EE-vs-DOTNET)

Oracle White Paper on Microsoft's Pet Store Claims
(http://otn.oracle.com/tech/java/oc4j/pdf/9ias_net_bench.pdf)

IBM on Microsoft's Web Services Claims
(http://www-3.ibm.com/software/info1/websphere/news/ibmnews/compreview4.jsp)

Semantic Web Home Page
(http://www.w3.org/2001/sw/)

EvangCentral
(http://www.evangcentral.com)

TheServerSide.com
(http://www.theserverside.com)