Objective
To evaluate the possibilities of Java and .NET framework convergence.
Target Audience
Java programmers and system architects.
Summary
The article begins by briefly probing what constitutes the Java platform
and .NET framework. Thereafter, I share my opinionated view of how
Java development was shaped, amid the collaborative and confrontational
relationship between Microsoft and Sun. I then stick my neck out,
to predict the future of .NET and Java. I strongly believe that .NET
and Java will converge in near future. Ten project ideas are discussed
for open source implementation to integrate Java and .NET framework.
The material is derived from author's own perception of, and experience
with, Java since early 1996, Microsoft's MSDN and Sun Java site and
standard documents from sites like ECMA and W3C.org.
Overview
Two things may happen between Java and .NET. Either one of them might
die or both might co-exist. Co-existence is more likely scenario,
because Java has a six years head start and runs on most of the operating
systems. It has a wide support of both Industry leaders like Oracle
and IBM as well as a large repository of Open Source projects covering
most of application domains. .NET will survive too since Microsoft
has a captive 90% of the desktop OS market. Microsoft has also adopted
Sun's marketing strategy of standardizing the specifications. For
example, for remoting it has proposed SOAP (Simple Object Access Protocol)
as a RFC (Request For Comment) with IETF (Internet Engineering Task
Force) and W3C (World Wide Web Consortium). It has approached ECMA
(European Computer Manufacturer's Association) for C# and Common Runtime
Infrastructure standardization.
What constitutes the Java
platform
The Java platform contains a language called Java, a set of virtual
machines like JVM, KVM and CVM for executing the intermediate byte
codes on PCs, Handheld and embedded systems. Java platform also defines
a wide array of API's most of them correspond and compete with Microsoft's
API like JDBC with ODBC, JTAPI with TAPI, JDO with ADO and so on.
Thus Java platform consists of a language, a set of runtimes virtual
machines and a set of API and libraries. The Java had a vision of
single language for all Operating System, and therefore used RMI (Remote
Method Invocation) protocol for remoting. Whereas, Microsoft used
DCOM prior to shifting over to SOAP (Simple Object Access Protocol)
with the .NET framework. Sun initially hyped that Java was the elusive
"Write Once Run Anywhere" holy grail. After introducing J2EE (Java
2 Enterprise Edition) and J2ME (Java 2 Micro Edition) it virtually
retracted the claim, by admitting that, the "One Size Fits All" solution
does not work. ufacturer's Association) for C# and Common Runtime
Infrastructure standardization.
What constitutes the .NET
framework
.NET framework consists of a set of languages like C++, VB.NET (VB
7.x) and C# (created by it's Visual J++ team). A runtime environment
similar to Java Virtual Machine and a set of API which is skewed heavily
in favor of Windows architecture. The runtime is hosted within a container
which may be a browser, a web server or an Operating System Shell
and in future even the SQL server might host the runtime. Microsoft
seems to have dumped DCOM in favor of SOAP (Simple Object Access Protocol);
which uses HTTP as transport and it's syntax is based on XML. SOAP
has Java implementation available at http://xml.apache.org. The Past
In early 1995 when Internet was being transformed into commercial
WWW (World Wide Web), Sun had a language and a framework which it
had designed for set top TV boxes. This language was a subset of C++
implemented in 'C' and was called OAK. Sun could not exploit OAK commercially
in the arena for which it was designed. So, Sun renamed it as Java
and made it freely available over the Internet. Java caught on like
wild fire on Internet, manifesting as fancy Java Applets adorning
web pages; viewed mainly on Netscape Browser. Microsoft under estimated
Internet, wishing it away as a passing fad. Soon Microsoft realized
that Internet in it's WWW avatar, has the potential to end the dominance
of Windows. "Browser will be the Operating System" became the mantra
often chanted by Netscape. Microsoft therefore now wanted to buy Netscape,
but they refused to sell. By 1996, Microsoft had created one of the
first stable versions of it's Web browser called Internet Explorer.
Microsoft had no option but to license the Java virtual machine for
it's browser from Sun. At that time, neither Sun nor Microsoft probably
realized that Java will be a greater threat to Microsoft's dominance
than Netscape's browser. Internet needed a language and Java could
fit the Bill, and the Gates of Heaven opened up for Sun. Java being
similar to C++, most of the C++ programmers, including me, switched
over to Java. It quickly became a religion, with all it's share of
fanatism and rhetoric. Like any religion, it needed a satan. So the
anti Microsoft lobby seized the opportunity to exorcise it's foe,
by taking to Java evangelism. Ironically Microsoft stood isolated,
even after having produced the fastest and the best Java compiler
and JVM implementation. Much of Java ran and (still runs) on Microsoft
platforms. The fall 1998 MSDN (Microsoft Developer's Network) edition
even claimed that Java was the best language to implement COM components;
this claim was included in the examples of how to create COM components
with Java, C++ and VB.
Parallel to Java, Linux also was becoming popular and the combination
of Linux and Java started to become a popular choice for server side
applications. Apache emerged, and still retains, the most popular
Web server position. These three software combination hurt the Microsoft
NT seriously and restrained Microsoft in the enterprise server marketplace.
By 1998, dynamic HTML (DHTML) was standardized under the banner of
W3C (WWW consortium) and Java Script under ECMA (European Computer
Manufactures Association). Now all the Java Applets special effects
could be achieved using DHTML. Due to limited modem speeds, the bandwidth
was an issue at that time, this took Applets longer to download. These
two factors routed out Java Applets from most of the web pages. Java
survived this anti Applets wave, since it had firmly entrenched into
server side programming marketplace as well. The open source movement
fueled the popularity of Java. Apache had adopted Java and Servlets
and later JSP become the choice for DOTCOM programers. Interestingly
Microsoft lost money by buying a Java startup having a Java tool called
"Liquid Motion" which provided animation affects on Web pages, much
similar to what is achieved by Flash today . Sun and IBM both having
stake on the server hardware market promoted Java and Unix flavors
for Internet and Intranet applications. Java platform was extended
to enterprise space first with Servlets API followed by JSP (Java
Server Pages) and finally EJB (Enterprise Java Beans). EJB is a Object
Oriented transaction processing system, much similar to Microsoft
Transaction Server (MTS).
EJB (Enterprise Java Beans) was an industry initiative lead by IBM,
Oracle and BEA Logic. They collaborated with Sun to produce EJB specification
to compete with Microsoft MTS. Neither EJB nor MTS could really deliver,
since both did not scale upto Internet demands. IBM's Web Sphere is
popular not because of it's EJB compliance, but on IBM's inherent
strengths derived from CICS legacy. Neither was MTS scalable beyond
departmental loads, thus Microsoft quietly folded it into COM+. Incidentally,
Microsoft's .NET documentation imply COM components to be legacy codes,
running under unmanaged code space. In my opinion, the worst moment
of Java's history was when Microsoft had to pay up Sun, a sum of USD
20 million, to settle the law suite between them. This become the
defining moment for .NET framework and the beginning of the end to
Java's dominance as the universal Internet platform. Unfortunately,
all this happened even while Sun was offering Java under open source
community licensing.
Present
The failure of EJB (Enterprise Java Beans) to deliver, made many projects
to be folded up. This was made worst with DOTCOM layoffs, termed by
the media as Java programmers being benched. Now all Java seminars
start with a "Java won't die" theme. The DOTCOM meltdown has softened
up the "Microsoft Baiter's Club" members. Many neo- natal Java programmers,
just by the virtue of acquiring a Sun Certification, had been elevated
to the status of high temple priests, even when they had NO real life
programming experience. After their ESOPs evaporated, they fell from
grace of their peers. They would be more than willing now, to walk
into the .NET party, to have another go at yet another new language,
called C#. I can see many training shops drooling at the .NET re-training
market place. I would like to share with you, a first hand experience
of my colleague, who attempted to attend a C# seminar. It was conducted
by a private company (not even authorized by Microsoft) around January
2001, in New Delhi, India. He had to return empty handed, without
attending the seminar. This was because riot police had to be called
to stop the gate crashers, from over crowding the seminar hall ! I
recall that the industry showed similar enthusiasm for Java in the
later part of 1995, which was then just brewing up (sorry no more
coffee jokes, and while I am at it, sorry for the earlier Gates pun
as well. Old habits die hard!). I feel, the US slowdown for IT will
end with the launch of .NET and Windows XP; but this is not going
to happen before the Christmas 2001. Then the ex-DOTCOMMers can don
the robe of DOTNETers and fleece yet another hoard of VCs.
Future
The future will see .NET mature and Java and .NET should converge
(I am willing to stick my neck out on this!). Java should retain it's
niche on portable cross platform server side applications like WAP
servers, including telecom domains like JAIN (Java API for Intelligent
Networks), and Java should retain it's lead on embedded applications
like Smart Cards, mobiles and PDA.
.NET Maturity
The .NET platform will mature in due course; much like Java did. And
it will be a rather longish journey. Oracle 8i and above acted as
an Java runtime host container enabling Java to be tightly coupled
within the Oracle database engine; similarly, the .NET architecture
opens up the possibility for later versions of SQL.NET, containing
a Virtual Execution System (VES) execution engine. This will enable
programers to embed C# and VB inside SQL statements and stored procedures.
Currently you can call .DLL functions using extended stored procedure,
but the database itself does not have a object oriented runtime engine
fitted in.
The milestones for maturity of .NET will be: · .NET port to popular
NON Microsoft server and handheld platforms, like Solaris, Linux and
Palm OS. · Cross integration with Java core. For Example, Java compiler
for CLI (Common Language Infrastructure) and C# compiler for JVM (Java
Virtual Machine). · VES (Virtual Execution System) hosted by database
systems like SQL.NET and Oracle. · An Open Source and complete, .NET
platform implementation by a neutral third party.
If .NET is to stay on the track, it should see a lot of startup activities.
A few might be funded by Microsoft or one of it's venture funds. Microsoft
can then buy back a few of the successful ones, at an exorbitant price
tag. This would provide a cue to other VCs' to invest. Then all those
VCs who had been denied the opportunity to loose money in DOTCOM boom,
can move in to burn their investors' money in new technology startups,
in the hope of cashing in the apparent next generation DOTNET Internet
revolution. Microsoft should also fund a few open source projects
aimed at implementing .NET on Unix platforms. This funding would also
help Microsoft to will win over popular open source implementors'
forum like Apache.org and help them shed their Java bias.
Java's Fate
Java became popular among Telecom equipment providers like Noika,
which implemented it's WAP server in Java. Java still holds it's promise
in telecommunication arena. Another area of telecommunications Java
is likely to be popular is the telecom industry initiative called
JAIN (Java API for Advanced Intelligent Network see http://java.sun.com/products/jain/).
It was triggered by the need of de coupling switching infrastructure
from service infrastructure. That is, much like pre PC era of 70's
and early 80's, where the hardware manufactures sold custom operating
systems along with closed end applications; Today's telecom infrastructure
equipment manufacturers provide both switching as well as service
rendering platforms, which ties down a mobile network operator with
a equipment manufacturer. Thus the JAIN (Java API for Advanced Intelligent
Network) initiative is defining APIs for telecom networks independent
of protocols like CDMA, GSM or IMT2000, with a vision to create a
component based open marketplace, allowing ISV (Independent Software
Vendors) to provide innovative "plug and work" value added telecom
services, like intelligent 0800 free call redirection to first available
nearest international call center.
With JAIN (Java API for Advanced Intelligent Network) being supported by major operators and equipment manufacturers, Java might establish itself in this niche area. However, there are a few hurdles in this arena for Java, like Microsoft and BT (British Telecom) initiated open specification project called Parlay (http://www.parlay.org). This was supported by the industry as well, and predates JAIN. The industry is probably hedging it's bets on both the platform, till a clear winner appear or until both platforms merge. JAIN and Parlay groups have overlapping memberships (with exceptions of Sun and Microsoft off course) and they seem to be collaborating now.
The Java might also retain a lead in embedded applications like smart 3G and GPRS enabled mobile phone having J2ME (Java 2 Micro Edition) implementations. However, if it does not rectify the current load time delays it might be taken over by C#, if .NET provides a faster execution environment and wide spread industry support.
Much like PC hardware scenario of late 80's, when IBM held the lion's share of PC desktop hardware, Nokia today holds about 70% of the mobile handset market. Thus if Nokia gets sold over the .NET micro edition, then Java has had it.