Saturday, March 05, 2005

Fwd: [itsdifferent] Java - .net Comparision by a Gujju Girl -- A must read article

---------- Forwarded message ----------
From: Shah, Purav
Date: Fri, 4 Mar 2005 12:44:50 +0530
Subject: [itsdifferent] Java - .net Comparision by a Gujju Girl -- A
must read article


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

Print-friendly Version

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

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.

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

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

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

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

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

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

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

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

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:

For IBM's response to Microsoft's claims about Web services:

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 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

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

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

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

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

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

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

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

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!

See Also

Java BluePrints > Code

J2EE vs. .NET

More J2EE and .NET

Oracle White Paper on Microsoft's Pet Store Claims

IBM on Microsoft's Web Services Claims

Semantic Web Home Page


An Interview with Raghavan Srivinas

An Interview with Sang Shin

Company Info | About This Site | Press | Contact Us | Employment
How to Buy | Licensing | Terms of Use | Privacy | Trademarks

Copyright 1994-2004 Sun Microsystems, Inc.

A Sun Developer Network Site

Unless otherwise licensed, code in all technical manuals herein
(including articles, FAQs, samples) is provided under this License.

Content Feeds

Note: This Group is not a Job Searching Group, so please co-operate
and dont transfer any kind of job related material across this
Group.AnyOne doing so can be banned from the Group
Thanx , Group Co-Ordinators

Yahoo! Groups Sponsor

Yahoo! Groups Links

To visit your group on the web, go to:

To unsubscribe from this group, send an email to:

Your use of Yahoo! Groups is subject to the Yahoo! Terms of Service.


No comments: