SI
SI
discoversearch

We've detected that you're using an ad content blocking browser plug-in or feature. Ads provide a critical source of revenue to the continued operation of Silicon Investor.  We ask that you disable ad blocking while on Silicon Investor in the best interests of our community.  If you are not using an ad blocker but are still receiving this message, make sure your browser's tracking protection is set to the 'standard' level.
Technology Stocks : MSFT Internet Explorer vs. NSCP Navigator -- Ignore unavailable to you. Want to Upgrade?


To: drmorgan who wrote (13467)10/21/1997 8:22:00 PM
From: Jay M. Harris  Read Replies (2) | Respond to of 24154
 
Here is an article that is a must read for all MSFT fans. This company shall continue to reward loyal clients and shareholders! Keep the faith.
I'm using a $185 12 month target once NT5.0 with wolfpack clustering kicks in .

have spent much of the last year researching Microsoft's position on
Java. I needed to understand this issue for my new book (COM and DCOM;
Microsoft's Vision for Distributed Objects). I have read every memo, news
release, and white paper I could find on this topic. I have spoken to many
of Microsoft's Java team. For better or worse, I seem to have become the
leading expert on What Microsoft Thinks of Java. In fact, based on some of
my recent discussions, I suspect I understand this issue better than most
people who work at Microsoft.

But before I can get into Microsoft's Java perspective, I need to give you
some background. First, I need to give you some historical perspective on
where Java is coming from. Second, I need to do some level setting on what
Java is about technically. Third, I need to tell you what Microsoft is
trying to accomplish over the next five years. Within this background, we
will be able to discuss what Microsoft really thinks about Java.

JAVA HISTORY

Lets start with the history of Java. Java was introduced by Sun. Many
companies jumped on the Java bandwagon. The most notable of these early
adopters was IBM.

What fueled this odd alliance between Sun and IBM? The incredible
superiority of Java as a programming technology? Unlikely. Remember, this
alliance was formed back when Java had the most minimal of capabilities and
was hardly more than a toy.

We can get some insight into the purpose of this alliance by looking at the
last time these two companies joined together to lead a major industry
effort. This last collaboration resulted in the distributed object
technology known as CORBA, produced by an industry consortium called the
Object Management Group (OMG).

I was very involved in the OMG. I worked for IBM at the time, and I was a
lead architect for one of the CORBA services. I wrote my last book on this
topic (Object Persistence; Beyond Object-Oriented Databases).

The OMG consortium was held together by one common purpose: to stop
Microsoft. The OMG failed in this effort, and is now limping along with
only a few companies making even a minimal profit on CORBA technologies.

Many people accuse Microsoft of meeting any technological threat with an
embrace and smother strategy. This is certainly not true of Microsoft's
reaction to CORBA. Despite the millions of dollars that IBM, Sun, and
others were spending on CORBA, Microsoft never took CORBA seriously.
Microsoft joined the OMG, and occasionally sent a representative to OMG
meetings, but looked on the whole affair with an air of amusement, as if it
was watching children at play.

By 1994, it was clear to Sun and IBM (and later Netscape and the rest of
the industry) that OMG was not going to be the knight in shining armor that
would protect them from the Microsoft dragon. So they started looking for a
new protector. And they thought they found it in Java. Soon most of the
industry had jumped on the Love-Java/Stop-Microsoft bandwagon.

JAVA TECHNOLOGY

Why did the industry think Java would stop Microsoft? For that matter, what
exactly was the industry trying to stop Microsoft from doing?

Sun and IBM in particular saw the whole world moving into the direction of
Microsoft operating systems. IBM had been humiliated in its attempt to have
OS/2 taken seriously. Sun was dependent on the success of its Solaris
flavor of Unix.

But the operating system vendors were in a bad position. By 1995, most of
the world's computer's were running some version of Windows. Nobody was
going to write new software for anything other than Windows.

In Java, the industry thought it had a mechanism to write software than
would run on any operating system. For operating system vendors, this would
be great. Suddenly it wouldn't matter if they only owned a sliver of the
operating system market, they could still offer software vendors a viable
market. So Sun and IBM led the charge to creat write-once/run-everywhere
(WO/RE) software using Java.

Java promised a WO/RE solution through a combination of tried and true
technologies. These included a language specification, a pseudo-compiler, a
virtual machine, and a series of libraries. These libraries were to be
available on all Java platforms and were to define the "official" WO/RE
Java API. These libraries are basic to WO/RE and according to Sun and IBM,
WO/RE is basic to Java.

Java is not the first time the industry has been promised a WO/RE solution.
In fact, this has been a recurrent theme since the dawn of software. Unix,
CORBA, and C++ are just a few examples of the many products that originally
made similar claims.

George Santayana said, "Those who cannot remember the past are condemned to
repeat it." Unfortunately, the collective memory of our industry seems
particularly poor. WO/RE has never worked and it seems unlikely to me that
it ever will. And we appear to be caught in an endless cycle of relearning
this lesson.

The WO/RE dream faces a technological dilemma. Users, spoiled group that
they are, have come to expect a high quality interactive experience and
rich functionality. Software can only meet these expectations by taking
every possible advantage of underlying operating system services. But
software that takes advantage of underlying operating system services will
not run everywhere. Software that really runs everywhere can only use
technology that exists everywhere. Services that are universally available
are going to be universally bland. Software built on such bland services
can only end up as the McDonalds of software: offending nobody but
impressing nobody.

While software vendors care that their products run everywhere, their users
don't. A user cares only that a product runs well on one particular
machine, the one at which the user is working. A product written for
generic services will never be able to compete for that user's heart
against a product written especially for that user's operating system.

Although the failure of WO/RE was predictable, many software vendors
couldn't resist the lure. They worked hard to write products using only
Java and the WO/RE libraries. These vendors have all learned their lessons
the hard way. To the best of my knowledge, there isn't a major software
vendor left still developing a commercial product based on the WO/RE
capability of the Java libraries.

But the fact that WO/RE doesn't work doesn't mean that Java should be
abandoned. We don't want to throw out the baby with the bath water. Java is
still a great language, much better than C++. The problem is not in the
language, but in the WO/RE libraries. Even then, the real problem is not so
much the libraries themselves, but the edict that these libraries
constitute the entire range of Java programming possibilities.

MICROSOFT GOALS

Microsoft's goal for the next five years is simple. It wants NT to be the
platform of choice for doing distributed commerce applications. This
basically sets the stage for a new war, and the battleground is the
three-tier architecture.

Microsoft believes that the three-tier architecture will form the basis for
distributed commerce. Three-tier architectures define a client tier, a
component tier, and a data tier. The client tier has long been owned by
Microsoft. Microsoft is now going after the component tier with a vengeance
and is preparing to undergo a battle of attrition for the data tier.

Microsoft has defined an architecture that supports distributed
applications based on components. A component is a package of software that
can do specific, well defined tasks. Components can communicate with other
components, and this communication can occur within a tier or across tiers.

Microsoft wants to be in the three-tier component plumbing business. It
wants to provide the operating systems on which three-tier component based
software systems will run. Microsoft will happily support any products that
fit within this vision, and will not support those that do not. The most
important pieces of Microsoft's plumbing are COM, DCOM, and MTS. These will
all eventually be merged into COM+.

THE MICROSOFT POSITION ON JAVA

Now that we have looked at Java's history, Java's technology, and
Microsoft's technical agenda, we can better understand Microsoft's position
on Java.

It would be logical to assume that Microsoft hates Java. After all, Java
was charged from its birth with the task of bringing Microsoft to its
knees. And this was, in fact, Microsoft's original position on Java.

But then two things happen to cause Microsoft to rethink this position.
First, the cadre of highly intelligent and incessantly curious Microsoft
engineers discovered how much easier it was to work with Java than with C
or C++. Second, Microsoft discovered that Java is an ideal language for
implementing the kind of components on which it had based its whole
corporate strategy.

So Microsoft did an about-face, and threw its full strength behind Java the
language. I see no evidence that this support has slacked off in the
slightest. Microsoft seems fully committed to providing the best tools
available for creating components using Java. Although Microsoft will
always support other component development languages, I believe Java is
Microsoft's language of choice for implementing the software that will run
on the component tier.

But then there is the issue of the Java Write-Once/Run-Everywhere
libraries. Here Microsoft diverges from the rest of the Java community, and
in particular, from Sun.

Some of these WO/RE libraries are intended to support user interfaces.
Microsoft has much better tools for building the software that will run on
the client tier than Java. Some of these tools, such as DHTML, are even
going to be available for non-Microsoft platforms. I agree with Microsoft
that Java is an inferior technology for user interfaces.

Some of these WO/RE libraries are directly competitive with Microsoft's
architecture. Java's Remote Method Invocation (RMI) capability, for
example, allows Java objects to communicate across process boundaries.
Microsoft sees this as competing with DCOM. In my opinion, RMI is not even
in the same league as COM/DCOM/MTS, and doesn't begin to address important
issues like language independence, object pooling, security, and
transactional support. But those WO/RE libraries that Microsoft views,
rightly or wrongly, as competing with its own architecture are going to get
lukewarm support, at best.

Microsoft believes the COM/DCOM/MTS architecture is an advanced component
runtime environment, and Java components should be allowed to take full
advantage of everything this environment offers. Obviously components that
do take advantage of this environment are not going to work in a
non-COM/DCOM/MTS environment. But, the reasoning goes, do you want full
featured components that work well in the environment for which they are
intended, or insipid components that will run on any toaster that happens
to have a microchip with an embedded Java virtual machine?

Microsoft does not support the WO/RE philosophy. If you are jaded, you
might argue WO/RE is in conflict with Microsoft's self interest. But I
believe WO/RE is a fantasy outside of the trivial world of browser applets.
The Java WO/RE libraries today don't come even close to providing the rich
infrastructure needed by distributed commerce applications.

Part of the current legal dispute between Sun and Microsoft has to do with
vision and part has to do with control.

Sun's vision for Java is much different than Microsoft's. Sun sees Java as
a complete object milieu, providing a total API package for everything from
user interface to communications to database access. Microsoft sees Java as
a good language for developing components that live on one of the three
tiers, specifically, the component tier. It does not believe that
programmers should be forced to use Java on the other tiers where Java is
basically inferior technology just because they are using it on the
component tier. And it does not believe that Java programmers should be
forced to program in a medieval runtime environment as the price for using
the language.

Sun seems to be saying that Microsoft wants to take control of Java. I find
this argument unconvincing. I hear Microsoft saying that nobody should
control Java. Different companies should be able to improve Java as they
see fit. An open and free market is the appropriate forum to decide on the
future of Java, not law courts and corporate cartels. Programmers who want
a WO/RE environment should be free to choose WO/RE implementations.
Programmers who want to do heavy duty commerce applications should be free
to choose industrial strength implementations and runtime environments. If
any company is trying to control Java, it is obvious to me that that
company is Sun, not Microsoft.

In my studying of the Microsoft distributed component architecture,
including Java, COM, DCOM, MTS, Falcon, and Wolfpack, I have found that
Microsoft consistently provides open frameworks that encourage the
participation of third parties, even when those third parties are selling
products that directly compete with Microsoft. In some cases Microsoft
doesn't even wait for its competitors to plug into the Microsoft
frameworks, Microsoft writes the plugs for them! Does this sound like the
stance of a company that is afraid to compete?

So I think we can summarize Microsoft's position on Java very simply. It
fully supports and really likes Java the language. It is committed to
providing competitive tools for developing Java components to run on the
component tier. As far as the libraries and Java run-time environment, it
says let each company provide the best underlying support for Java that it
can, and may the best architecture win.

- Roger Sessions, October 16, 1997
have spent much of the last year researching Microsoft's position on
Java. I needed to understand this issue for my new book (COM and DCOM;
Microsoft's Vision for Distributed Objects). I have read every memo, news
release, and white paper I could find on this topic. I have spoken to many
of Microsoft's Java team. For better or worse, I seem to have become the
leading expert on What Microsoft Thinks of Java. In fact, based on some of
my recent discussions, I suspect I understand this issue better than most
people who work at Microsoft.

But before I can get into Microsoft's Java perspective, I need to give you
some background. First, I need to give you some historical perspective on
where Java is coming from. Second, I need to do some level setting on what
Java is about technically. Third, I need to tell you what Microsoft is
trying to accomplish over the next five years. Within this background, we
will be able to discuss what Microsoft really thinks about Java.

JAVA HISTORY

Lets start with the history of Java. Java was introduced by Sun. Many
companies jumped on the Java bandwagon. The most notable of these early
adopters was IBM.

What fueled this odd alliance between Sun and IBM? The incredible
superiority of Java as a programming technology? Unlikely. Remember, this
alliance was formed back when Java had the most minimal of capabilities and
was hardly more than a toy.

We can get some insight into the purpose of this alliance by looking at the
last time these two companies joined together to lead a major industry
effort. This last collaboration resulted in the distributed object
technology known as CORBA, produced by an industry consortium called the
Object Management Group (OMG).

I was very involved in the OMG. I worked for IBM at the time, and I was a
lead architect for one of the CORBA services. I wrote my last book on this
topic (Object Persistence; Beyond Object-Oriented Databases).

The OMG consortium was held together by one common purpose: to stop
Microsoft. The OMG failed in this effort, and is now limping along with
only a few companies making even a minimal profit on CORBA technologies.

Many people accuse Microsoft of meeting any technological threat with an
embrace and smother strategy. This is certainly not true of Microsoft's
reaction to CORBA. Despite the millions of dollars that IBM, Sun, and
others were spending on CORBA, Microsoft never took CORBA seriously.
Microsoft joined the OMG, and occasionally sent a representative to OMG
meetings, but looked on the whole affair with an air of amusement, as if it
was watching children at play.

By 1994, it was clear to Sun and IBM (and later Netscape and the rest of
the industry) that OMG was not going to be the knight in shining armor that
would protect them from the Microsoft dragon. So they started looking for a
new protector. And they thought they found it in Java. Soon most of the
industry had jumped on the Love-Java/Stop-Microsoft bandwagon.

JAVA TECHNOLOGY

Why did the industry think Java would stop Microsoft? For that matter, what
exactly was the industry trying to stop Microsoft from doing?

Sun and IBM in particular saw the whole world moving into the direction of
Microsoft operating systems. IBM had been humiliated in its attempt to have
OS/2 taken seriously. Sun was dependent on the success of its Solaris
flavor of Unix.

But the operating system vendors were in a bad position. By 1995, most of
the world's computer's were running some version of Windows. Nobody was
going to write new software for anything other than Windows.

In Java, the industry thought it had a mechanism to write software than
would run on any operating system. For operating system vendors, this would
be great. Suddenly it wouldn't matter if they only owned a sliver of the
operating system market, they could still offer software vendors a viable
market. So Sun and IBM led the charge to creat write-once/run-everywhere
(WO/RE) software using Java.

Java promised a WO/RE solution through a combination of tried and true
technologies. These included a language specification, a pseudo-compiler, a
virtual machine, and a series of libraries. These libraries were to be
available on all Java platforms and were to define the "official" WO/RE
Java API. These libraries are basic to WO/RE and according to Sun and IBM,
WO/RE is basic to Java.

Java is not the first time the industry has been promised a WO/RE solution.
In fact, this has been a recurrent theme since the dawn of software. Unix,
CORBA, and C++ are just a few examples of the many products that originally
made similar claims.

George Santayana said, "Those who cannot remember the past are condemned to
repeat it." Unfortunately, the collective memory of our industry seems
particularly poor. WO/RE has never worked and it seems unlikely to me that
it ever will. And we appear to be caught in an endless cycle of relearning
this lesson.

The WO/RE dream faces a technological dilemma. Users, spoiled group that
they are, have come to expect a high quality interactive experience and
rich functionality. Software can only meet these expectations by taking
every possible advantage of underlying operating system services. But
software that takes advantage of underlying operating system services will
not run everywhere. Software that really runs everywhere can only use
technology that exists everywhere. Services that are universally available
are going to be universally bland. Software built on such bland services
can only end up as the McDonalds of software: offending nobody but
impressing nobody.

While software vendors care that their products run everywhere, their users
don't. A user cares only that a product runs well on one particular
machine, the one at which the user is working. A product written for
generic services will never be able to compete for that user's heart
against a product written especially for that user's operating system.

Although the failure of WO/RE was predictable, many software vendors
couldn't resist the lure. They worked hard to write products using only
Java and the WO/RE libraries. These vendors have all learned their lessons
the hard way. To the best of my knowledge, there isn't a major software
vendor left still developing a commercial product based on the WO/RE
capability of the Java libraries.

But the fact that WO/RE doesn't work doesn't mean that Java should be
abandoned. We don't want to throw out the baby with the bath water. Java is
still a great language, much better than C++. The problem is not in the
language, but in the WO/RE libraries. Even then, the real problem is not so
much the libraries themselves, but the edict that these libraries
constitute the entire range of Java programming possibilities.

MICROSOFT GOALS

Microsoft's goal for the next five years is simple. It wants NT to be the
platform of choice for doing distributed commerce applications. This
basically sets the stage for a new war, and the battleground is the
three-tier architecture.

Microsoft believes that the three-tier architecture will form the basis for
distributed commerce. Three-tier architectures define a client tier, a
component tier, and a data tier. The client tier has long been owned by
Microsoft. Microsoft is now going after the component tier with a vengeance
and is preparing to undergo a battle of attrition for the data tier.

Microsoft has defined an architecture that supports distributed
applications based on components. A component is a package of software that
can do specific, well defined tasks. Components can communicate with other
components, and this communication can occur within a tier or across tiers.

Microsoft wants to be in the three-tier component plumbing business. It
wants to provide the operating systems on which three-tier component based
software systems will run. Microsoft will happily support any products that
fit within this vision, and will not support those that do not. The most
important pieces of Microsoft's plumbing are COM, DCOM, and MTS. These will
all eventually be merged into COM+.

THE MICROSOFT POSITION ON JAVA

Now that we have looked at Java's history, Java's technology, and
Microsoft's technical agenda, we can better understand Microsoft's position
on Java.

It would be logical to assume that Microsoft hates Java. After all, Java
was charged from its birth with the task of bringing Microsoft to its
knees. And this was, in fact, Microsoft's original position on Java.

But then two things happen to cause Microsoft to rethink this position.
First, the cadre of highly intelligent and incessantly curious Microsoft
engineers discovered how much easier it was to work with Java than with C
or C++. Second, Microsoft discovered that Java is an ideal language for
implementing the kind of components on which it had based its whole
corporate strategy.

So Microsoft did an about-face, and threw its full strength behind Java the
language. I see no evidence that this support has slacked off in the
slightest. Microsoft seems fully committed to providing the best tools
available for creating components using Java. Although Microsoft will
always support other component development languages, I believe Java is
Microsoft's language of choice for implementing the software that will run
on the component tier.

But then there is the issue of the Java Write-Once/Run-Everywhere
libraries. Here Microsoft diverges from the rest of the Java community, and
in particular, from Sun.

Some of these WO/RE libraries are intended to support user interfaces.
Microsoft has much better tools for building the software that will run on
the client tier than Java. Some of these tools, such as DHTML, are even
going to be available for non-Microsoft platforms. I agree with Microsoft
that Java is an inferior technology for user interfaces.

Some of these WO/RE libraries are directly competitive with Microsoft's
architecture. Java's Remote Method Invocation (RMI) capability, for
example, allows Java objects to communicate across process boundaries.
Microsoft sees this as competing with DCOM. In my opinion, RMI is not even
in the same league as COM/DCOM/MTS, and doesn't begin to address important
issues like language independence, object pooling, security, and
transactional support. But those WO/RE libraries that Microsoft views,
rightly or wrongly, as competing with its own architecture are going to get
lukewarm support, at best.

Microsoft believes the COM/DCOM/MTS architecture is an advanced component
runtime environment, and Java components should be allowed to take full
advantage of everything this environment offers. Obviously components that
do take advantage of this environment are not going to work in a
non-COM/DCOM/MTS environment. But, the reasoning goes, do you want full
featured components that work well in the environment for which they are
intended, or insipid components that will run on any toaster that happens
to have a microchip with an embedded Java virtual machine?

Microsoft does not support the WO/RE philosophy. If you are jaded, you
might argue WO/RE is in conflict with Microsoft's self interest. But I
believe WO/RE is a fantasy outside of the trivial world of browser applets.
The Java WO/RE libraries today don't come even close to providing the rich
infrastructure needed by distributed commerce applications.

Part of the current legal dispute between Sun and Microsoft has to do with
vision and part has to do with control.

Sun's vision for Java is much different than Microsoft's. Sun sees Java as
a complete object milieu, providing a total API package for everything from
user interface to communications to database access. Microsoft sees Java as
a good language for developing components that live on one of the three
tiers, specifically, the component tier. It does not believe that
programmers should be forced to use Java on the other tiers where Java is
basically inferior technology just because they are using it on the
component tier. And it does not believe that Java programmers should be
forced to program in a medieval runtime environment as the price for using
the language.

Sun seems to be saying that Microsoft wants to take control of Java. I find
this argument unconvincing. I hear Microsoft saying that nobody should
control Java. Different companies should be able to improve Java as they
see fit. An open and free market is the appropriate forum to decide on the
future of Java, not law courts and corporate cartels. Programmers who want
a WO/RE environment should be free to choose WO/RE implementations.
Programmers who want to do heavy duty commerce applications should be free
to choose industrial strength implementations and runtime environments. If
any company is trying to control Java, it is obvious to me that that
company is Sun, not Microsoft.

In my studying of the Microsoft distributed component architecture,
including Java, COM, DCOM, MTS, Falcon, and Wolfpack, I have found that
Microsoft consistently provides open frameworks that encourage the
participation of third parties, even when those third parties are selling
products that directly compete with Microsoft. In some cases Microsoft
doesn't even wait for its competitors to plug into the Microsoft
frameworks, Microsoft writes the plugs for them! Does this sound like the
stance of a company that is afraid to compete?

So I think we can summarize Microsoft's position on Java very simply. It
fully supports and really likes Java the language. It is committed to
providing competitive tools for developing Java components to run on the
component tier. As far as the libraries and Java run-time environment, it
says let each company provide the best underlying support for Java that it
can, and may the best architecture win.

***********************************************
Object Watch Newsletter number 7
- Roger Sessions, October 16, 1997