Thursday, June 12, 2008

Java vs .NET

Java vs .NET
Competing Platforms
In the following lines, you will be taken through a journey to discover the roots of both the Java and the .NET technologies . You will learn the story behind these two competing technologies. For everything to be clear, specially for new comers to the IT field (who might still be fighting on which is better Java or C#), I would like to start by explaining the Java and the .NET platforms, as this will untangle the issue and resolve problems clearing the way for understanding the rest of the picture easily.
Java Coalition
Sun, jointly with IBM and Netscape, developed the Java language and the Java platform. (It basically took most of the functionality of Smalltalk, a 100% object oriented language developed early by IBM).
Java Promise
If you compile a program written in Java, it will not run on a computer unless this computer has a Java platform (called JRE: java runtime environment) installed on it. Each operating system has a version of the JRE that can be installed on it. There is a JRE for Windows, a JRE for Linux, a JRE for Solaris (Sun's UNIX operating system), a JRE for Mac OS ... etc. If you compiled your Java program, the same compiled program can be run on any of those operating systems that have the JRE installed. You do NOT need to recompile (or modify) your program for each operating system in order to run on it. That was the promise of Java.
This promise, was very appealing for companies developing software for more than one operating system. Some of those companies developed their software for an operating system and then it took them several months to port it to a different operating system later on. (For instance some companies delivered the Apple Mac OS version of their program first, then ported it to windows after several months.) Java promised to make that porting instant, i.e. in zero time. Because once you compiled the Java program, it can be run on any operating system that has a JRE. That was the promise of Java and its great appeal at it started. This promise is still used to promote Java today. However, whether or not Java has fulfilled its promise is a matter of debate.
IBM
The reason why IBM joined forces with Sun to develop and promote Java was that IBM had a lot to gain from this. IBM sold many mainframes and server computers. The problem with those monster servers was that the number of programmers who could develop software for them was much fewer than programmers of regular programming languages on a PC. Just compare how many can program a mainframe using Cobol and how many know C++ or VB? This lead IBM to push Java strongly and heavily promote it. The reasoning behind this was that because Java is independent of the operating system and the machine it runs on (i.e. portable) any Java programmer can develop programs that can run on IBM's server computers, upppon which a lot of IBM's business depended. IBM had, and still has, a lot to gain from Java, and that's why it is pushing it so hard. IBM is also pushing open source for a similar reason.
Netscape
Netscape was to gain from the Java platform as well, hence the reason for its joining forces with both Sun and IBM. Netscape wanted the browser to be the center of everything. It wanted to cancel the importance of one operating system over the other. It even started the-browser-is-the-OS campaign which advocated that the browser was the important thing, and the specific OS on which it ran was irrelevant. Sure this angered its rival Microsoft. From its deep love and support for Java, Netscape even renamed its scripting language from LiveWire to JavaScript which is the name we know it now with.
Microsoft
Against those 3 giants (Netscape was relatively big at that time, before Microsoft 'sacked' it from its high position) stood Microsoft. IBM, Sun and Netscape all were to gain from Java. But for Microsoft, Java was a threat. Java promised portability across operating systems, this meant that no matter what OS you were using, you will still be able to run the program with the same functionality. This would in turn give lesser importance to which OS you are using, for you can then be using just any OS. Of course this strongly threatened Microsoft's monopoly over the operating system of the PC, namely Windows. That is why Microsoft fought ferociously against Java. Netscape stood as a pain in the neck for Microsoft for a while, and Bill Gates was unable to get any sleep at night, but when he did manage to get any, it was nothing but nightmares of Netscape dethroning Microsoft from its software empire.
Borland
Borland at first embraced the Java platform and the Java language by providing tools (IDEs) for Java. Unlike IBM and Netscape, however, it did not take sides with Sun, but remained unattached. When Microsoft launched its counterattack on Java in the form of the .NET platform, Borland quickly embraced the .NET platform as well and started providing products for both the .NET and the Java platforms. As always, borland stayed in the support-all-technologies place it has always enjoyed in the past. I personally respect Borland and the quality of their products a lot. (Think Delphi. Although I've never programmed in Pascal or Delphi before, yet I know Borland's products are cool. I've tried their analysis/design tools once in the past, then still owned by Together Software, and it was way cool and a lot of fun.)
J++
Microsoft tried to ride the Java wave by adding J++ as one of the languages supported in its Visual Studio product group. J++ was basically Java, but Microsoft tried to pack it with other stuff from its own making it less portable because it is its very portability which threatened Microsoft's thrown over the OS of the PC. Sun then launched a counter-campaign with ads calling for "100% Java" and "Pure Java" trying to lure developers into going for the original portable Java it developed and not Microsoft's J++. Failing to win the marketing campaign, and finding that Microsoft is going too far with its modification of the Java language, Sun finally filed its famous law suit against Microsoft, which stayed in courts for a couple of years. This is nothing unusual for Microsoft which had law suits against it and court struggle before with Apple, IBM and others. Microsoft is popular for that kind of thing. The law suit accused Microsoft of violating Sun's conditions for using Java by modifying it. Finally, Sun won the legal battle and received a nice amount of money in compensation from Microsoft. Moreover, according to the settlement of the case, Microsoft was allowed to continue supporting its J++ product, but was not allowed to upgrade it to later Java versions. This spelled the end to Microsoft's dreams of riding the Java wave.
C# and .NET
Finding it has lost the battle for J++, and fears of the Java threat reemerging for Microsoft, it though of a new strategy to counteract Sun's Java. Microsoft developed the .NET technology, which 'borrowed' a lot of the features of the Java platform, except that it ran on the Windows OS (aka was not portable!). They also developed C#, which was basically nothing but Java with a new name! It was almost identical to Java in all respects (think garbage collection, no pointers). It's as if they repackaged their J++ into a new name. Such action was not surprising from a company like Microsoft with its long experience in using similar stealth strategies.
The strength of the Java platform was that it supported many operating systems. In order to use the word "many" for its platform, Microsoft made its .NET platform support many programming languages! (Which was a bit absurd!). Anyway, the .NET platform used the same ideas of the Java one, except that it had different names for them (as usual with Microsoft). So now, Microsoft had a counter-element for each of the ones by Sun: Java, JRE, bytecode all had their equivalents in the Microsoft developer tools world (even the word "many!")
Java Applets vs Flash
Another feature Sun and the Java coalition tried to promote about Java besides its portability was the use of Java applets. Java applets were something Sun pushed so strongly at first and made a lot of propaganda for. The reasoning behind this was that an applet would run from within the web browser and therefore would be portable and accessible to anyone who has access to the web through a regular web browser. Netscape was also in for this. Because of the high appeal of animated graphics at the early days of the web, Sun made the mistake of heavily promoting Java applets as a way to make rich graphic animations and an interactive interface on the web. Macromedia was trying to push Flash forward to become the 'standard' in web animation and interactive web interfaces. Seeing the high competition from Java, Microsoft desided to strike again on Java, this time on the Java applet. Microsoft released Internet Explorer 5 with the Flash plugin preinstalled in it! This gave a strong push to Flash on the web, soon it became the standard for animated graphics in web pages and became a strong choice for rich interactive web applications. By doing so, Microsoft managed to kill the Java applet advantage in the filed of animation and interactivity on the web. Soon Microsoft realeased Windows XP without the JRE (needed to run Java programs) pre-installed on it. This outraged Sun, but they were unable to do anything about it except for a media campaign. By preinstalling the Flash plugin in its Inter Explorer 5 and delivering Windows XP without the JRE preinstalled, Microsoft managed to regain its controal and significantly reduce the threats of Java on its empire. Sun now is the one striving to paint a picture of coexistence of both the .NET and the Java platforms promoting the idea that both technologies can coexist together.
Instructors and Students
The business environment in which technology lives is a vital space where technology professionals must be aware of. You will not be able to advance well technically if you are not aware of the business background and the total picture of 'fights' and motives of giant software companies. I believe that a brief background about this should be an integral part of technology training. I try to brief my students with a bird's eye view of this picture before starting a technology course because it helps them see the big picture and know where they are standing instead of getting lost in a pool of technologies, terms and abbreviations.
If you had that background, no one will be able to fool you by telling you C# is better than Java, or vice versa. No one will be able to tell you Java is dead! You will also have a sense of direction to where things are heading for the future. You will not be lost anymore in a spinning stream. Its easy, with such background under your arm, to bust any hypes that technically incompetent people might be propagating, you'll simply not fall into any of the hype. You'll be more stable, not to be blow off by the slightest of winds. More importantly, you will start asking the right questions.
Microsoft is Nice
Just in order not to get the wrong impression, despite Microsoft's twisted style of dealing with things, it has made a lot of contributions to the IT field. Suffice it to say that it has:
Made thing very EASY.
Integrated a lot of bright ideas and technologies that have been developed by others (some may call that stealing, but at least they're good at copying and integrating all that together).
Made computer use popular. I lift my hat them in respect, despite their buggy software and their over hyped methods.



Source: From internet page

0 comments:

ANTIQR26
By: Favoshots
Views: 0
ANTIQR27
By: Favoshots
Views: 0
ANTIQR29
By: Favoshots
Views: 0
ANTIQR31
By: Favoshots
Views: 0
ANTIQR32
By: Favoshots
Views: 0
ANTIQR33
By: Favoshots
Views: 0
ANTIQR34
By: Favoshots
Views: 0
ANTIQR37
By: Favoshots
Views: 1
ANTIQR38
By: Favoshots
Views: 1
ANTIQR40
By: Favoshots
Views: 1
ANTIQR41
By: Favoshots
Views: 1
ANTIQRA
By: Favoshots
Views: 1
ANTIQRA2
By: Favoshots
Views: 1
ANTIQRA3
By: Favoshots
Views: 1
ANTIQRA4
By: Favoshots
Views: 1
ANTIQRA5
By: Favoshots
Views: 1