History of Java

Computer programming is one of the most powerful concepts on the entire planet. It involves creating a set of orders which instruct a computer how and when to complete a task. Today the Java programing language has been used all over the world, it is used in: computers, tablets, smartphones, printers, disc players, and it is even utilized in the Mars rover named Spirit. Java is considered a universal language, because it of the fact that a developer can code their program on one platform, and it will work on any other platform that has Java installed. Java is one of the most powerful programming languages on the Earth, and Mars for that matter.
Before the creation of Java the people who create programs, known Developers in the computing world, would have to write the program for once for every single platform they decide to release their software on. So if a developer wanted to release their software for the popular platforms in the 1980's, they would have to re-write their program for: Microsoft Windows, Apple Macintosh, Apple II, Microsoft DOS (Disk Operating System), and a hand full of other platforms. Even today, it can be very time consuming and costly to rewrite the same program for another platform so a number of developers made the decision to stick to one platform instead of rewriting for every single platform.
Different platforms also have different programming languages, which would make the process of rewriting a program a nightmare for developers. Rewriting code for every platform is as easy as writing a book you had originally written in English and translate it to French, Spanish, Italian, etc. until you have written it to all the languages you wish to sell your product to. Rewriting programs became a problem for both developers and firms who owned these operating systems, until Sun Microsystems had release their ØV project to rectify this problem.
In 1990 the engineer Patrick Naughton of Sun Microsystems was frustrated with the state of Sun Microsystem's C++ (a language based of the C programming language). Thus, Sun Microsystems began working on “The Stealth Project.” The purpose of this project is to create one language that is compatible with multiple operating systems, thus making it possible for developer(s) to write a program once and have it work on multiple operating systems without the need to rewrite their software. In 1991 Naughton, who was considering of leaving Sun and moving to NeXT Computer Incorporated, and other engineers: James Golsling and Mike Sheridan became involved in the project and it was later renamed to the Green Project. The name of this language was called “Oak,” primarily because a large oak tree was standing outside of the developer's offices. They were working in Menlo Park, California and had the intent to develop a language for a generation of computerized appliances.
The team wanted to use C++ originally but the idea was rejected because C++ required too much memory from the system which resulted in system errors. The C++ language also had issues regarding: security, threading, resource management, and distributed programing. Finally the language wasn't able available on all devices, rendering the entire point of using C++ for a universal platform, useless. Bill Joy wanted to use a new language which involved using C and Mesa. He proposed to Sun in a paper called Further that engineers should create a software environment based on C++, thus began the official birth of Oak.
In summer of 1992 the Green OS had featured the Oak language and its libraries. The engineers' goal was to create a PDA called Star7 which featured a GUI (Graphical User Interface) and an assistant called Duke to help the user become familiar with the device; the prototype had never been on store shelves. Oak's influences came from: Ada83, C++, C#, Eiffel, Generic Java, Mesa, Modula-3, Oberon, Objective-C, UCSD, Pascal, Smalltalk, and C. Time Warner had submitted a proposal to incorporate a set-top box using the Oak language, but the cable industry thought the platform had too much power given to the user of the set top box. In 1994 John Cage, the director for Science for Sun, and his team decided to target their platform for the World Wide Web. The internet was showing graphical browsers around this time, and a prototype browser had surfaced called WebRunner, the program was later named to HotJava. Later that year, the Oak language was renamed to Java, because of the excessive amounts of coffee the developers had been consuming while developing this software; it was also renamed because the name Oak was already trademarked by Oak Technology.
A download for Java 1.0a was available for download in 1994 as a beta, but in 1995 Java 1.0a2 was the first official public release of the language at the SunWorld conference. During that same conference Marc Andreessen, Executive Vice President of Netscape Communications Corporation, announced that Netscape would include support for the Java language. On January 9, 1996 the Javasoft group was formed by Sun to develop Java's web technologies.
The Java Development Kit (JDK) alpha and beta were released in 1995. The official version (1.0) was released on January 23, 1996 and it used the slogan “Write Once, Run Anywhere,” to advertise the fact that the program doesn't need to be rewritten for another operating system. Also Sun revealed Duke, the company's mascot for Java. From this point forward, there was a new major release of Java once a year. Version 1.1, released in 1997, had added different classes into the system including Java Beans, and JDBC (Java Database Connectivity) a Java API that enables Java programs to read/write SQL statements or in other words manage databases.
This version of Java had standardized Java across web browsers. On version 1.2 the SDK (Software Development Kit) was renamed to J2SE (Java 2 Platform, Standard Edition) which included graphical API's, it replaced JDK to distinguish the difference between the J2EE (Java 2 Platform Enterprise Edition), JSME (Java 2 Platform, Micro Edition), and of course J2SE. This package was very significant as it added almost two thousand classes to the language along with providing a Java plug in, and a collections framework. Version 1.3 was codenamed Kestrel and released in 2000, and it included Javasound, JPDA( Java Platform Debugger Architecture), more synthetic proxy classes, and HotSpot JVM for creating Java virtual machines. Version 1.4, released in 2002, it added newer tools in the language such as: XML, IPv6 network communications, cryptography and security, and Logging APIs. In 2004 the next Java release had skipped from 1.4 to J2SE 5.0 (it was also dubbed as version 1.5). This update is one of the biggest in the history of Java updates; it implemented generics, which allowed collection elements. It also included variable arguments, and enumerations along with metadata being added to the release.
After the release of J2SE 5 (J2SE 1.5) the Java platform had continued off of version five and discarded its last point from 1.5. J2SE Version 6 was released in 2006; it included improved graphical programming, database connectivity, and more smaller features to the language. From this point forward the law of diminishing returns has made its way to the Java language. In 2006 to 2010, Sun Microsystems had released security and stability updates; however later in 2010 Oracle Corporation bought Sun Microsystems and all of its assets, including Java. J2SE version 7 was Oracle's first major Java release since they acquired Sun Microsystems. This version was released later in 2011. It included a few minor refinements to the language. As of December 25, 2013 J2SE Version 7 is the most up to date major release of Java. J2SE 8 is expected to be released sometime in 2014. The Java language had given inspiration for other developers to develop the languages and products: Ada 2005, BeanShell, C#, Clojure, D, ECMAScript, Groovy, J#, JavaScript, PHP, Python, Scala, Seed 7, and Vala.
The most interesting thing about Java is how it had spread to so many different devices. At first its original intent was to create a universal language that all desktop computers can recognize so that code can be rewritten, but the developers of the language had created something even more powerful than they would have imagined. The spread of Java started with users and developers downloading the Java language off Sun's main website. However Apple Computer Incorporated (Now Apple Inc.) had bundled Java with its operating system Mac OS X to make a more seamless desktop experience, so then every new computer shipped would include Java. Interestingly enough Microsoft did not include a JRE (Java Runtime Environment ) with its Windows operating systems because of a lawsuit between Sun Microsystems and Microsoft, for adding Windows specific classes to a to the JRE via Visual J++.
According to Oracle Java is installed on over 850 million personal computers. A mobile edition of Java has been developed and is used in Android, however because the classes in the Android operating system were changes it could not be called “Java” so it was named the Dalvik VM (Virtual Machine) instead of the Java VM. The Enterprise Edition of Java has had a major impact on web server and enterprise use today. Java is now a standard in many IT departments. It also allows legacy systems to have a use for Java scripting so their life cycles are not shortened. It also allowed web services such as web chatting, and SCA, and XAM. A stray of language interpreters had appeared since Java's release, it was run on a Java Virtual Machine. The interpreters were BeanShell, Clojure, Groovy, JRuby, Jython, Rhino, Scala, and Gosu.
Java Card is a major part of today's connected world, especially considering libw online stores are now very popular. Java Card allowed Java applications to securely run on smart cards (A card containing sensitive authentication information, or sensitive storage). Java Card was designed to be application specific, and was widely used in SIM (Subscriber Identity Module) cards, which are used in nearly every cell phone on a global scale, and many ATM cards. Java Card also had its very own Virtual Machine dedicated to the program. Its goal was to separate the operating system from the hardware so information was near impossible to compromise, thus improving security. An applet firewall was also put in place for improved security. Cryptography would be put in the Java Card program as well, it used the algorithms DES (Data Encryption Standard), Triple DES, AES (Advanced Encryption Standard), RSA, and elliptic curve cryptography. Java Card was a subset of Java, and was almost identical to Java itself, but the Java Card program itself was designed to be a class in the Java language. This program used very little RAM for security reasons. In 1999 Visa had been involved with using credit cards with the Java Card program, finally allowing credit and debit cards to be used over the internet, opening a whole new world of purchasing, and even selling to the world.
The Java Virtual Machine is a major part of the Java ecosystem. A virtual machine (sometimes abbreviated as VM) is a virtual nondestructive computer emulated within a physical computer, meaning that if a code creates destructive environment of a virtual machine the virtual machine can be disposed of and recreated. Sun Microsystems had announced that 5.5 billion Java Virtual Machines are enabled. JVM had a set of languages to be used and language interpreters. Erjang was used to interpret Erlang, Rjino was used to interpret JavaScript, Free Pascal was used to interpret Pascal, Quercus was used to interpret PHP, Jython was used to interpret Python, NetRexx was used to interpret REXX, JRuby was used to interpret Ruby, and Jacl was used to interpret TCL. The Java Virtual Machine has instructions for the tasks involving: load and store, arithmetic, type conversation, object creation and manipulation, operand stack management (push / pop), control transfer (branching), method invocation and return, throwing exceptions, and monitor-based concurrency. J2SE 5.0 was the first to make major changes to JVM according to the Java Community process, and the specification for the platform is available on print. JVM's also have Java Processors or an implementation of the JVM hardware. The processors used for JVM are: picoJava, Aj102 and Aj200, cJIP, Komodo, FemtoJava, ARM926EJ-S, Java Optimized Processor, SHAP, Jhisc, ObjectCore, AND Java Offload Engine. The Java Community process was established in 1998 and is a formalized mechanism that allows interested developers to create standard technical specifications for Java's development. Any individual or firm may become a part of the Java Community Process by filling a form on the website. Java Specification Requests are the documents produced via the Java Community Process and is send the JCPEC (Java Specification Requests Executive Committee) to vote upon.
Oddly enough, the syntax of Java derived from C++. Unlike C++ combines certain programming aspects, while Java doesn't do the same. All code is written in a class, and everything is an object compared to C++. Operator overloading or multiple inheritance is not supported in Java for classes, which simplifies the language. An Applet is a special class; it is a program which is embedded into another application. Applets are most commonly found in a web page displayed by a web browser. Java Servlet allows web developers to have simple, consistent mechanisms for expanding functionality for their webserver and existing business systems. They are also server side and Java EE components generate the responses into HTML pages via HTTP requests from clients. Servlets can also be thought of as an applet but instead of running on the front end, it runs on the back end. Java server pages are also server side Java EE components that generate responses from HTML pages. They embed Java code directly into the HTML page using delimiters and are compiled into a Java servlet. Swing Applications feature a graphical user interface libraries for the Java SE platform. It is now possible to specify different design and feel of swing, Clones of Windows, GTK+, and Motif were supplied by Sun Microsystems. Apple also used Aqua for their first release of Mac OS X Puma. Generics were also added to the language in 2004. Before generic was introduced to the platform, each variable which was declared must have been a specific type. For container classes, this became a major problem, so generics allowed compile time type checking without having to create a large amount of container classes, and each containing almost perfectly identical code from one another.
Even though Java has had a long evolutionary chain that had changed the computing as we know it forever, it had still faced many criticisms, and still does today. Generics were largely criticized because of its limited features as compared to other languages. Its floating point arithmetic was also criticized. Because it was based on IEEE 754 (Institute of Electrical and Electronics Engineers floating point Arithmetic), certain features were not supported when using certain modifiers in the code. Security was also a very large issue when concerning Java's criticism. The platform provided a security architecture which was designed to allow the user to run untrusted byte code in a “sandboxed” environment to protect them from poorly written or malicious software, almost like a virtual machine. The sandbox feature that was designed to protect a user from these possibly horrible possibilities actually ended up exploiting malware to the end user. The malicious software would have access to the local file system, the ability to run arbitrary commands, or even access the communication services and networks. Even in 2010 an increase of the prevalence in malicious software due to sandboxing had increased. Multiple commonly used Java implementations happened to be the cause of the issue; even Oracle's implementations had caused issues to arrive concerning malware. Untrusted code could now bypass the sandbox's restrictions and expose the end user to a malicious attack. A game of cat and mouse was played between these developers who wrote this malicious code, and the developers at Oracle; a security update was always release yet a newer exploit kept being found. Some of the security updates had even originated from the Java Virtual Machine maintainer, and once again another exploit would be found every time they would update. Also the simple fact that users in general do not keep their software up to date, is also another cause for alarm and exposes them to older and more devastative exploits. Oracle was also criticized for not providing updates for well-known security bugs for excessive periods of time, despite these security bugs having known exploits. When Oracle finally patched many flawed exploits in Java 7, Java 7 was deleted on user's machines despite of being widely used on enterprise applications that Oracle claimed was never affected by the flaws. On October 23, 2012, Apple had halted further support for Java in their security release for Mac OS X Lion and Mac OS X Mountain Lion because of security concerns.
JavaBeans are reusable software components for the Java programming language. They are classes that encapsulate many objects into a single object, referred to as the bean, and are serializable, have a 0-argument constructor, and allow access to information using getter and setter methods. Beans provides the following advantages: The properties, events, and methods of a bean that are exposed to another application can be controlled, a bean may register to receive events from other objects and can generate events that are sent to those other objects, auxiliary software can be provided to help configure a java bean, the configuration setting of bean can be saved in a persistent storage and restored at a later time. The component's disadvantages however include: A class with a null array constructor is subject to being instantiated in an invalid state. If such a class is instantiated manually by a developer (rather than automatically by some kind of framework), the developer might not realize that the class has been improperly instantiated. The compiler can't detect such a problem, and even if it's documented, there's no guarantee that the developer will see the documentation. Another major disadvantage was having to create a getter for every property and a setter for many, most, or all of them can lead to an immense quantity of boilerplate code.
Java is even in the modern day mobile platforms. It is most commonly found in Google's Android operating system when referring to the mobile industry. There are bits and pieces of Java is Apple's iOS , but because of issues with Mac OS X Snow Leopard, Java in iOS is severely stripped due to what Apple believes are “security issues,” although in reality it is because Apple wants to control its own mobile application market instead of letting Java possibly make a new application market. Java's first attempt at the mobile or “smart device” market was with Java Platform, Micro Edition, or Java ME. Its main target was for mobile phones and was originally developed by the Java Community Process as JSR 68. Java ME also had replaced Sun Microsystem's Personal Java. The different variations of Java MR evolved into JSRs. There are over 2 billion Java ME supported phones, PDAs and tablets. Java ME surprisingly is not used on: i0S, Windows Phone 8, and Blackberry 10. It is still very popular with mid ranged mobile products like the Nokia Series 40. It was also used on the Bada operating system along with the Sybians operating system's native software. The implementations that are in Java ME are also available for: Windows CE (Embedded Compact Edition) Windows Mobile, Mameo, MeeGo and Android as a separate download. Run provided a reference implementation for the system starting with version 3.0 of Java ME. Sun never provided any binaries of any Java ME platform except for versions of Java involving Palm OS. Another implementation is called MicroEmulator, which is an open sourced implementation of an MIDP emulator. It is primarily used in embedded web pages. Also the open source Mika VM was meant to implement JavaME but wasn't certified by Sun or Oracle. Unfortunately devices that use such functionality aren't allowed to claim Java CDC compatibility.
Another Java technology is called JavaFX, a platform for creating and delivering rich internet applications (RIAs) that can run across Java's basic philosophy, “Write Once, Run Anywhere.” JavaFX currently only has support on Windows, Linux, and Mac OS X, though a mobile version of the software was developed. Before the JavaFX 2.0 was released, the first version was only considered a script called, JavaFX Script. Because programmers could also run regular Java code considering JavaFX is only a script, programmers had the ability to use Java code instead. JavaFX programs can be run on any platform or browser that supports it, that includes: Java EE, or any mobile phone which supports Java ME. In version 2.0 Java FX is not a native Java Library and now requires applications using JavaFX to be written in native code. Oracle had decided to scrap JavaFX after its acquisition of Sun Microsystems, but because of the Visage project development is still continuing. Oracle is now making plans to integrate JavaFX into Java Standard Edition in version 8, and JavaFX for ARM processor. Both platforms are currently in the development preview phase. Looking at the end user's point of view, installing a JavaFX widget is as simple as drag and drop into the browser window. The application will not lose its state even after the browser windows has been closed. The program can be reopened by simply opening the application again. This feature is permanently enabled; sun was always saying that drag to install was a way to “break away from your browser.” This platform included a set of plugins for Adobe's Photoshop and Illustrator programs which enabled advanced graphics to be used directly with JavaFX applications. The plugins create a JavaFX script that preserves layers and structure of the graphics, another term for this process is also called non-destructive editing. Developers also were easily able to add animation or effects to static imported graphics. SVG graphics converter tools were also created to import graphics and preview assets after the compression to JavaFX. JavaFX 1.2 was the first to include beta support for Linux and Solaris, built in controls and layouts, CSS controls, built in chart widgets, JavaFX management I/O (input/output) management, speed improvements, and Windows Mobile Runtime with Sun Java Wireless Client. Version 2.0 of JavaFX had a whole new set of API's which opened a door to new possibilities for existing Java developers. They no longer needed to learn the scripting language in order to take advantage of JavaFX. Version 2.2 of Java FX was released on August 14, 2012 by Oracle and included full Linux support, a canvas (similar to the canvas found in Adobe's Photoshop), HTTP (hypertext transfer protocol), touch events and gestures for touch enabled devices, image manipulation APIs, and native packaging. The latest version of JavaFX was last included in Java Standard Edition update 6. Although JavaFX was already deployed onto Microsoft Windows, Apple Mac OS X, and the many Linux distros (distributions) Oracle plans on porting JavaFX to i0S, Android, and Windows Phone. Oracle had also announced that these mobile implementations of JavaFX will be open source and plan on finish development within the next two months.
One of the most important parts of Java history is the JavaScript. JavaScript is an interpreted programming language that is used in web browsers. JavaScript allows server side scripts, or scripts run on the end server's side of the spectrum, to interact with the end user and alter the content originally written in the webpage. JavaScript is very common in server side programming, game development, and the development of desktop applications. JavaScript is considered a prototype scripting language with first class functions along with dynamic typing. The syntax of JavaScript was influenced by the C programming language, and the language even copies many names from the original Java language, these facts are very interesting considering that both platforms have nothing to do with one another in terms of programming styles. The JavaScript application is also used outside of webpages such as in PDF files, site specific browsers, and desktop or mobile widgets. JavaScript virtual machines have also been built primarily with JavaScript for server-side web applications; not to mention that JavaScript could also be used for client-side JavaScript. During the 1990's browser wars between Microsoft with Internet Explorer, and Netscape Communications Corporation with Netscape Navigator, Netscape's developers had been considering running a portable version of Java. But the problem Java was technically a competitor of C++ the same code that Netscape was written in, and they wanted a lightweight language troublesome code. JavaScript is now a trademark of Oracle Corporation under license. It is still the most popular of the known languages derived from the original Java code from Sun Microsystems. Today, Java is powering almost every computerized device. Java's statistics according to Oracle's website state that Java: “ has 9 billion developers, 1billion downloads per year, 3 billion devices run Java, 97 percent of enterprise desktops run Java, and all Blu-Ray players are shipped with Java by default.” Java even powered the Sprit rover, which had studied mars for approximately six years before losing communication with the device in March of 2010. Java is one of the most powerful programming languages on the planet, and even beyond the planet. It influenced a world of Java based languages and is still to this day helping progress technology forward. That could only complement Java by appealing to casual programmers instead of professionals. When Netscape added the software it was originally named Mocha yet this name had been a cause of misconception as developers thought Mocha was a spin-off of Java. The project was officially renamed from Mocha to LiveScript and was released with Netscape Navigator version 2.0 in September 1995. By Netscape Version 2.0 B3LiveScript was renamed to JavaScript, which did cause some confusion between developers. There was also another misconception that JavaScript was influenced by the C- CC minus minus) programming language because Cm- involved page scripting language. The creators of C- , Nombas, had later switch to JavaScript. Netscape introduced the implementation for server side scripting with Netscape Enterprise Server which was released in December l994. The nods file is a notable example of server side JavaScript being used in everyday applications. As JavaScript spread Microsoft eventually added support for Internet Explorer since version 3.0 in August 1996. Microsoft's web server named Internet Information Server included support for server side scripting with JavaScript. Later on Microsoft's implementation had been renamed to Jscript to avoid legality issued. Jscript added date methods to fix the dreaded Y2K problems. In 1996 Netscape had submitted JavaScript to Ecma International for consideration as a computing industry standard and subsequent work named ECMAScript. As a result JavaScript is one of the most popular programming languages alive on the web. Although many professional programmers can take advantage of the language, it is fairly easy to learn that even an amateur can pick up the language. The Ajax language was also created as a result of JavaScript's creation and it is even interesting that JavaScript is going beyond the web page. The JavaScript language has no built in I/0 functionality because the runtime environment already provides that. The language's use in webpages is mainly to send a piece of information, and allow a server to process the information and give an answer based on what information was submitted. JavaScript was implemented into HTML pages which interact with the DOM (Document Object Model); examples of this use include“ Loading newer page content or uploading data to the server via AJAX (Asynchronous JavaScript and XML) without reloading a web page, animation of webpage elements, interactive content such as games along with audio and video, validating input values on web forms to validate if the from is read to be sent to the server, and transmitting information of the end user's reading and browsing habits this is commonly used for ad tracking and web analytics. Because JavaScript also has the ability to run locally instead of on a server, the end user has very fast response times. JavaScript also can detect a user's actions that HTML cannot, such as a user's Keystrokes, however this was a major security concern. A JavaScript engine was also created to interpret JavaScript source code and to execute r's script accordingly; this software also goes by the names of JavaScript Interpreter or JavaScript Implementation. The first engine was implemented in the C programming language, and was code named SpiderMonkey. Web browsers are the most common environments for JavaScript because browsers typically create host objects to represent the DOM. JavaScript is also showing up more and more on native desktop applications and widgets. Web servers are also other comment host environments for the language as they typically host objects representing HTTP or HTTPS (Hypertext Transfer Protocol Secure) requests and response objects, JavaScript is perfect for manipulating the content of the pages to dynamically tolerate pages as responses to the original requests. Because JavaScript is the only language that browsers commonly share support for, it is a target language for several frameworks in mar y other languages even though JavaScript had absolutely no intentions to become such a computing language. Even though the JavaScript engine was very limited, improvements had been made increasing the speed of the language's responsiveness. Even though that JavaScript's intentions are to write the program once so it may be run across many different platforms, there are issues that happen whenever a single program is written for several platforms. To prevent errors from occurring on different platforms, developers have to go through a process called debugging. Debugging allows a developer to test their code on multiple platforms and to locate errors within their code. This gives developers an opportunity to modify their code for affected platforms, if any exist, to remove the troublesome code. JavaScript is now a trademark of Oracle Corporation under license. It is still the most popular of the known languages derived from the original Java code from Sun Microsystems.
Today, Java is powering almost every computerized device. Java's statistics according to Oracle's website state that Java: ” has 9 billion developers, 1billion downloads per year, 3 billion devices run Java, 97 percent of enterprise desktops run Java, and all Blu-Ray players are shipped with Java by default.“ Java even powered the Sprit rover, which had studied mars for approximately six years before losing communication with the device in March of 2010. Java is one of the most powerful programming languages on the planet, and even beyond the planet. It influenced a world of Java based languages and is still to this day helping progress technology forward.


QR Code
QR Code wiki:user:history_of_java (generated for current page)