Wednesday, August 04, 2010

Java Wars: The 20 Year Saga

James Gosling

         On April 12, 2010, the father of the Java Programming Language, James Gosling resigned from his position as the Chief of Technology at Oracle, citing his reasoning as “just about anything I could say that would be accurate and honest would do more harm than good” (Time To Move On). Oracle had recently completed its acquisition of Sun Microsystems where Gosling had worked as the creator of Java for over twenty years. Why was the creator of one of the most important computing technologies of the last thirty years leaving his post at such a critical time for the technology, a technology even Larry Ellison, founder and CEO of Oracle, heralded as “the most important software that we have ever acquired”? (Mr. Ellison Helps Himself)
         Gosling’s departure is sure add increased pressure to its growth and affect the direction Java moves in the next few years. Java has recently been transitioning from a “server side” technology to become increasingly viable as a “client side” technology (The Future of Java).  Part of that transition is due to Google’s usage of the Java technology to drive its Android phone platform.  As the pressure increases, the Java of today will become much different tomorrow, for better or for worse.  Why does the future of Java matter?  If history is any indication, the direction Java takes will forecast where computing technology as a whole will end up.
          
Java Logo


     Java was derived from the powerful computing languages of C and C++, known generally as Object Oriented Programming Languages or OOPLs. Gosling felt that OOPL programmers could benefit from getting rid of painful programming procedures 
of the other two languages, as well as introducing a fast Virtual Machine to compile the code and create increased interoperability.  This started the intellectual warfare between C++ boosters and Java junkies that still rages on today (The JVM Spec). Yet Java is so widely used, it can be found powering everything from DVR machines to DVD players, to computer applications and cell phones, to some of the most advanced high-transaction server farms, datacenters, and web servers. The control and advancement of such an important technology platform as Java, the training and needs of its programmers, and the applications built on the platform, should bring Larry Ellison household recognition that rivals that of Bill Gates or Steve Jobs; or will Google’s Eric Schmidt cloud out Larry Ellison’s eclipse of Sun?
Eric Schmidt

          In 1983, Eric Schmidt joined none other than Sun Microsystems, at nearly the same time as Java author James Gosling. From the beginnings, Sun was setting up to be at the forefront of technological change and importance, a position they would hold for almost three decades. Schmidt’s first role at Sun was that of a software manager and would later work with Gosling on Java. Gosling was assigned, among many other things, to development projects such as the WYSIWYG editor (What-You-See-Is-What-You-Get) that kicked off desktop publishing, a software platform called NeWS that was implemented in the early Macintosh systems to rival Windows. In the early 1990’s, he worked on the Oak programming language (The JVM Spec), and when Oak failed to gain much traction by 1995, Gosling and others at Sun decided to rewrite Oak as an Internet technology. When they introduced the rewritten platform as Java, it caught on like wildfire. At the end of its debut year in 1995, it had been licensed by almost every major corporation, including IBM, Oracle, and Microsoft. Gosling was an overnight success story, and in 1995 Schmidt and Gosling were put in charge of pushing Java into the mainstream and overseeing its development. In one short year, Java had revolutionized computing by allowing software to be developed and run on any computer on the Internet (Kilbane, Doris).
Cross Platform Logo
        

     Before the cross-platform capabilities of Java were introduced, software had to be developed in consideration to the operating system it would run on. However, in an increasingly networked world, this fact was becoming extremely burdensome for many computers trying to communicate yet running different operating systems. With Java, websites could deliver content in less development time and without specialized programming in relation to the operating system of the computer accessing the site. Before long, programmers everywhere were developing applets, applications, and websites that could freely run on any system imaginable, especially on Apple and Microsoft machines. Among the first major applications to spring from the Java frenzy was the Netscape Navigator web browser that quickly became the de-facto browser for the net. Interestingly, the Netscape Navigator software was the central reason the US Department of Justice began the antitrust case against Microsoft. Therefore, Java was at the very root of the largest antitrust case in US history that once again demonstrated the surprising power it now held over Silicon Valley, the newly founded Information Age, and Microsoft.
        Microsoft was an early adopter of the Java technology. Yet almost immediately, the behemoth was internally troubled by the idea that its flagship product –Windows– could be pre-empted by software written in Java. Software could now be independent of the Windows Operating System, and better internet browsing could be done on a Java based browser. As Microsoft began to demand more input on the specifications for the Java language, it also began rewriting parts of it for their own language called J++, marking the first time an attempt was made to fragment Java. Lawsuits began to fly, further evidencing just how important Java had become. Whoever controlled it would gain major market share in the Internet space, whether it be servers, browsers, or applet support for the millions of websites that were being created. And Microsoft wanted just that.
         Sun was well aware that Microsoft coveted their Java platform, shown by Gosling’s disdainful testimony in court against Microsoft, saying “I just don't trust them. The planet is littered with companies that did deals with Microsoft expecting to win big but ended up getting totally screwed,” and proposing  further that the Microsoft rewrite of Java was “…analogous to adding to the English language words and phrases that cannot be understood by anyone else" (Leaders of the Information Age). 

Bill Gates


         Microsoft, and their patriarch Bill Gates, had very little ground for a counter-argument. In fact, in a parallel case to that of Sun vs.    Microsoft, the prosecutor in the People vs. Microsoft case uncovered evidence that Gates had written an email to another Microsoft executive with the scheming words of “…how do we wrest control of Java away from Sun?” (Videotaped Disposition 69) To which Gates affirmed, reluctantly under oath, that he had discussed the issue with others in the company through email. Microsoft’s solution to the suits in part was to simply write their own Java language, known as C#, which is part of the .NET platform and represents the first official and highly successful rewrite of Java, though the naysayer will claim that C# was not a rewrite.  If it wasn’t, whatever happened to J++?  Many also argued that Java would now be doomed, since the .NET platform would surely spread everywhere Windows went.
         However, Java and its developers were resilient and were not about to let Java disappear into the catacombs of computer science; continuing to fight for its success –they very well changed the course of the 1990s, and they would very well change the course of the 2000s. Eric Schmidt, who had manned the post of CTO at Sun from 1995 to 1998, and helped lead the expansion of Java into prominence, soon left to work for Novell as their CEO. Novell was like a bright pulsar in business terms, entering into the game with huge amounts of flair and potentially groundbreaking technologies. Their mainstay was producing software for networks, which at the time, wasn’t normally built into an Operating System. But like any typical pulsar, Novell’s business was rapidly fading. Schmidt was determined that he could right the ship and save the company, and use a major network software component – Java – to do so.
          Fortunately for many of us today, the plan didn’t go as Schmidt had planned, and customers were still wary of purchasing products from Novell. Moreover, when the roaring economy of the nineties was about to become terminal in 2000, Schmidt decided to leave for greener pastures.
Google Logo
          Mountain View, California is lushly green in foliage and money, and it was there in 1996 that Sergey Brin and Larry Page were coding up a revolution for the Internet that no one saw coming. As their new technology continued to prove promising in test labs and small releases at Stanford University, its popularity flourished rapidly. By the year 2000, Google was its own company and was becoming a key player in the search engine role, and expanding daily. Brin and Page tapped Schmidt to take over as the CEO of Google in 2001, who brought along with him the personal networks and relations to the people at Sun Microsystems, especially the people working on Java (Current Biography).
         The resurgence of Java in the early part of the last decade can arguably be attributed to its adoption by Google. While it is hard to affix a date or exact time that Google decided to use Java as one of its core technologies, there can’t be much doubt that Schmidt’s move to Google in 2001 had a lot to do with it becoming central to their operations. We also know that Google played a major role in advancing Java to the popular Java 5 release in 2005, when it already powered most of their platforms and APIs (Application Programming Interfaces) during which time Google had also become the world’s dominant search engine. Responding to Robert Eckstein’s question “How does Google use Java technology”, Google Software Engineer Li Moore explained that “Google makes extensive use of the Java platform. Large parts of popular Google products are written in Java. We also use Java in many internal systems and products under development” (Sun Talks With Li).
          Through Google’s continual use of Java for internal development which pushed the language to new frontiers, developers of non-Google and non-web related platforms also stood to benefit from the advancements being added to the language, such as JavaFX, enumerations, and other key features that had been requested seemingly since its release in 1995. This, along with the later Java 6 release, helped to buoy the attractiveness of the Java platform for nearly the entire last decade, and only recently was it surpassed in search engine popularity by the C language (‘Rudderless Java’). Some will say that is an indication that Java is beginning to lose relevance; yet, it would seem otherwise with a broader viewpoint that C is the base of the language used to program for the iPhone, a language Apple calls Objective-C, which naturally would drive its popularity in search engines as developers look to create apps for the exploding iPhone app market. Nevertheless, Java is close behind and will retake the top spot as the Android platform races to overtake the iPhone platform’s popularity – unless war ensues.
Larry Ellison



          Since its reinvention as a core programming language in 1995, Oracle has been another key player in the Java story. The company founded by Larry Ellison, and one that thrives on acquisitions, has subtly made Ellison and his investors tens of billions of dollars in wealth. Their main customers are mid-to-large size businesses in need of database architectures and powerful business software such as PeopleSoft. Since Java has always been a major player in the world of business and enterprise programming, Oracle’s support of the language makes quite a bit of sense. Beyond pure Internet technology, one of Java’s main usages in businesses is running enterprise applications on remote servers, and serving up the data from those applications to client computers. By supporting Java, Oracle has banked on the idea that Java programmers would use the powerful Oracle DB (database) platform which their Java code could access and use seamlessly (Interview With Dan McDonald).
          That mission for seamless integration of Oracle DB with Java has largely paid off, with only the MySQL database platform as a rival in implementation with Java. Additionally, Oracle has made their database platform fully programmable using Java, making it the only database system to use an object oriented language in conjunction with SQL. Database administrators and programmers normally have to rely purely on SQL (the end-all of database scripting languages) to write to and access the database information, and a modified version of procedural languages such as C to program stored procedures and operations for the database (Interview With Dan McDonald). This is usually very tedious and is prone to human errors since there are few ways to debug the code and the language itself is limited. Implementing an OOPL like Java creates powerful opportunities for data warehousing and applications administration; which is what Oracle wants.
Oracle Logo


         Being a software conglomerate like Google, Microsoft, and Apple, Oracle rules the business space in many aspects, and seems to be constantly driven by acquisition and seeking a bigger share of the business computing arena. Since a massive portion of the business enterprise software and internal applications in the world use Java, having control over the language gives Oracle some leverage to wield more power over business operations that have been programmed in Java into specific directions. Having exposure like that to business needs has definitely got to have significant value, not necessarily monetary value, rather value in creating vertical market share for Oracle’s other open source and proprietary products. Don’t imagine for any small amount of time that companies like Microsoft weren’t completely blindsided by the thought of a powerhouse such as Oracle garnering that type of command through Java. “I am very surprised. I have to think about it,” was all Microsoft CEO Steve Ballmer could say about the Oracle announcement in April of 2009 (Mr. Ellison Helps Himself). Such a short, fragmented statement by one of the industry’s sharpest corporate leaders shows he must have been pale-faced when he said it. What was Oracle positioning for? The next software empire? Some sort of software federation with Google to double team Microsoft and its virtual fortress?
          The answer to both questions is yes. In an interview with Dan McDonald from the Eccles School of Business on the future of Java, he explained that “Oracle has a much better track record [than Sun] at actually creating usable products in Java.  So, while they may not be as good of a language steward from the theoretical standpoint, Oracle may just produce a more functional result” (Interview With Dan McDonald). Many businesses that develop applications in Java do so independently and for the most part in-house. If Oracle can start developing software applications for businesses that are both distributed and customized for customers using their own development teams at Oracle, they will gain a huge advantage in the business software space. So is Oracle going to make office software for client release to compete with MS? No, because the movement of software is toward what they call “the cloud”. Cloud computing is the idea that everything should be stored and run through the Internet by accessing remote servers in co-located and clustered server farms. The advantages to this are long uptimes, centralized maintenance, and defense against disasters and crippling data loss to business operations. This is something that Java should excel at, since it is mainly a server-side platform.
Cloud Computing


          The antagonist would argue that cloud computing requires huge investments in server infrastructure, and not just software languages and platforms like Solaris, Java, and MySQL. Recall, nonetheless, that Sun Microsystems was mainly a hardware company, selling server clusters and powerful mainframe computing systems, and also hosting them in server farms, as their core business. Those assets and technologies are all on Oracle’s books now. Furthermore, Oracle is expanding their data center space beyond what they inherited from Sun, which is a key component to growing a cloud based business model. In an article announcing the resumed construction on their extensive data center project in the greater Salt Lake City area, industry analyst Ray Wang forecasted “A good amount of everything new [at Oracle] is going to go in that direction…It wouldn't be inconceivable to see 50 percent of Oracle's business in the cloud by 2014." (Kanaracus, Chris)
          And why wouldn’t they? With Google applications as an exception, Java hasn’t been used as much for cloud computing applications like email, web documents, Twitter, etc. This has mostly been left to JavaScript (which has no relation to Java at all), PHP, Ruby on Rails, Python, and other similar languages. Oracle will want to change that by moving in on the cloud computing space with Java as a key component, just like Google has done. As Oracle positions Java to lead the cloud movement of software, what will happen to all of those legacy cloud applications written in JavaScript and the like? The good news for those applications is that Google and other Java proponents have already made it possible to write code in Java, and have the JVM create perfectly accurate JavaScript. The creators of cloud applications who want to move into Java once it is optimized for cloud computing will not have a hard time doing so, meaning programmers who know and develop in Java will be able to move right in to those development teams, only increase the momentum of Java’s adaptation into cloud computing (Schalk, Chris).
Android Logo


         The one thing that could impact that momentum would be a severance of ties between the major backers of Java. Fragmentation of the Java Platform is a real possibility for a few specific reasons. The Dalvik VM developed by Google for Android is yet to be accepted by the Java community –under the control of Sun –as real Java. If Google continues to develop new technologies into their platform, those features will not necessarily be adapted into Java, and vice versa. In software, this tends to create issues where the diversions between the branched code are too wide to merge back together, causing a fork in the code. Google prepared for this scenario, evidenced by recent complaints from them that Java has not advanced fast enough under Sun, and by sponsoring their own adaptations of the platform. Oracle also has not been forthcoming enough about their direction and plans for Java, which leaves many who rely on the platform nervous about its prospects. If Google forks the code, an epic exodus of programming minds and skills would ensue, leaving Java devoid of the needed ingenuity to keep it relevant.
         Some within Google insist this will not happen, and that in fact Oracle will be a better company for Java than Sun was. Google’s Chief Java Architect, Josh Bloch, made the diagnosis that “The king is not dead. The king is alive and well. He has a slight cold" (‘Rudderless’ Java). Even still, Loch conceded that a fork in Java is not unlikely if a shift in direction is not made soon; a shift in Google’s favor and to their demands. Will the strange bedfellows of Google and Oracle join together, with Google expanding Java within the mobile space, and Oracle expanding Java in the business services space, and both of them working in parallel on cloud services? Or will the allies turn on each other now that the diplomatic mediator and near hippie-like philosophic viewpoints of Sun are gone?
Java Sandbox
         We should hope that they both get along in the sandbox. A union or pact between the two would fuel the next decade of information technology and keep Microsoft in check. The advancements that would occur and the relentless storm of cloud based software that would arise would revolutionize our connected world many times over. Tools once relegated to desktops and mainframe systems would become feasible for use on mobile devices as Java drives the communication between them and the supercomputer-like cloud servers. Business or government executives would be able to access a myriad of organizational data on the fly. There is no telling where Java’s momentum could carry it, or how many other big players would join in its development even if it means jettisoning support of other languages. But no matter what happens, whether Java becomes an a-la-carte mixture more like a mocha or a latte than a straight coffee, Java will find a way to continue on. HP’s Vijay Seetharaman touted that “Java will remain a dominant platform in the enterprise space" (‘Rudderless’ Java), meaning the “king” of computer programming languages will continue to drive business as it has for a decade and a half. Indeed with a new fusion of brilliance, and with Sun gone the way of the Death Star, the world could be made to revolve around Java.




Works Cited
Eaddy, Marc. Dr. Dobbs Journal: C# Versus Java (2001): 1-13. Print.
Eckel, Bruce. Thinking in Java. Upper Saddle River, NJ: Prentice Hall, 2006. Print.
Eckstein, Robert. "Sun Microsystems Talks With Li Moore of Google." Developer Resources for Java Technology. Web. 23 July 2010. .
Gosling, James. "Time to Move On... : On a New Road." Time to Move On. 12 Apr. 2010. Web. 27 June 2010. .
The H. W. Wilson Company. "Schmidt, Eric." Current Biography (2008): 1. Biorgraphy Reference Bank Select Edition. Web.
How The JVM Spec Came to Be. Prod. InfoQ. Perf. James Gosling. How The JVM Spec Came To Be. 28 Oct. 2008. Web. 27 June 2010. .
"Interview With Dan McDonald." E-mail interview. 6 July 2010.
Jackson, Joab. "Google Exec Worries Over 'rudderless' Java - PCWorld Business Center." Reviews and News on Tech Products, Software and Downloads - PCWorld. Web. 23 July 2010. .
Kanaracus, Chris. "Oracle Resumes Construction of Massive Data Center - PCWorld Business Center." Reviews and News on Tech Products, Software and Downloads - PCWorld. Web. 23 July 2010. .
Kilbane, Doris. "From Sneaking Into Computer Labs To Sneaking Out Java." Electronic Design: 49. Academic Search Premeir. Web. 25 June 2010.
The H. W. Wilson Company. "Gosling, James." Leaders of the Information Age (2004). Biorgraphy Reference Bank Select Edition. Web.
Lyons, Daniel. "Java in jeopardy." Forbes 163.1 (1999): 110-111. Academic Search Premier. EBSCO. Web. 19 June 2010.
"Mr Ellison helps himself." Economist 390.8628 (2009): 65-66. Academic Search Premier. EBSCO. Web. 19 June 2010.
Niemeyer, Patrick, and Jonathan Knudsen. Learning Java. Sebastopol, CA: O'Reilly, 2005. Print.
Ricadela, Aaron. "Sun Mulls Deeper Open-Source Dive." BusinessWeek Online (2007): 1. Academic Search Premier. EBSCO. Web. 19 June 2010.
Schalk, Chris. "A Java Developer's Guide to Google Technologies - Google Code Help." Google Code. May 2007. Web. 20 July 2010. .
Tennant, Don. "Q&A: McNealy Defends Sun Reliability, Personal Privacy Views - Computerworld." Computerworld - IT News, Features, Blogs, Tech Reviews, Career Advice. Web. 9 July 2010. .
"The future of Java." eWeek 25.33 (2008): 27-30. Academic Search Premier. EBSCO. Web. 19 June 2010
US Department of Justice. "Videotaped Deposition Excerpts of Bill Gates." Welcome to the United States Department of Justice. Web. 2 July 2010. .