C++
         C Sharp          Java
         VB.Net
         Visual Basic
         Visual C++
         Visual J++
         MS Access
         SQL Server
         ORACLE
         SAP
         E-Com
         ASP
         JSP
         PHP
         Cold Fusion
Will Java and .NET Framework Co-exist?
(Part 1)

Submited By : Ashish Banerjee              Date : 23/12/2001

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.