In anticipation of the growing need for a modern programming language designed to work with the Internet and the underlying processes of devices with embedded microcomputer systems (such as DVD players and cellular phones), the Java cross-platform software was developed by Sun Microsystems in the 1990s and released to programmers in 1996. As of 2013, Java is the underlying technology driving many embedded devices as well as many programs for desktop computers. Java is an object-oriented programming language, which functions by “byte-compiling” code into a format that can run on many different types of computers.
Although the underlying language of computers is binary code, it is difficult and time consuming to write programs this way. For this reason, programming languages allow programmers to write, or code, in a format that is easier to read and comprehend. This code is then converted by another computer program, known as a compiler, into binary code so the computer can execute instructions. Java is an example of a particular language, although it is compiled quite differently from more traditional languages.
Sun Microsystems and a team of engineers known as the Green Team proposed Java during the 1990s. The language was developed based on borrowing its syntax—that is, its linguistic structure and rules—from the dominant programming language on the market at the time of its development, C++. Like C++, Java is an object-oriented programming language, meaning that it relies upon complex data structures to increase the level of organization in code. The team developing Java noticed that with the growth of the Internet, there was a growing need to be able to generate code that could run on more than one type of computer, for instance, computers running Microsoft Windows with Intel processors, and computers running Apple's Macintosh OS with PowerPC processors.
Although Java code looks very similar to code written in C++, it functions differently from C++ and other previously existing programming languages because it is neither interpreted nor compiled. Interpreted code is converted to binary instructions as the user uses the program, which can often make a program slow. Compiled code is converted to binary before it is actually run. In a stark departure from both these methods, Java was developed to compile code first to an intermediate format called bytecode, which is then executed not by a computer itself, but by the Java Virtual Machine (JVM). Using this method, code can be written without knowing what hardware it will be run on. As long as a version of the JVM exists for that hardware, it can execute this bytecode. Versions of the JVM were quickly distributed to many Web-connected devices and platforms, and Java technology was added to the influential Netscape Navigator web browser, hastening the adoption of Java-related technology.
In the twenty-first century, Java is used in numerous formats; it is the primary language used to write programs for the Android mobile operating system, and fulfills its originally designed role as a language for embedded devices like disc players. Since 2010, JVM has been developed by Oracle, which owns the rights to the original technologies that comprise Java, although other versions of the JVM exist, produced both by competing companies and independent open-source developers.
—Luke E. A. Lockhart
Antoy, Sergio, and Michael Hanus. “Functional Logic Programming.” Communications of the ACM 53 (2010): 74–85. Print.
Cazzola, Walter, and Edoardo Vacchi. “@Java: Bringing a Richer Annotation Model to Java.” Computer Languages, Systems & Structures 40.1 (2014): 2–18. Print.
Chrza˛szcz, Jacek, Patryk Czarnik, and Aleksy Schubert. “A Dozen Instructions Make Java Bytecode.” Electronic Notes in Theoretical Computer Science 264.4 (2011): 19–34. Print.
Emurian, Henry H., and Peng Zheng. “Programmed Instruction and Interteaching Applications to Teaching Java: A Systematic Replication.” Computers in Human Behavior 26.5 (2010): 1166–75. Print.
“History of Java Technology.” Oracle.com . Oracle, n.d. Web. 22 Aug. 2013.
Reynolds, Mark C. “Modeling the Java Bytecode Verifier.” Science of Computer Programming 78.3 (2013): 327–42. Print.
Reza, Juan Rolando. “Java Supervenience.” Computer Languages, Systems & Structures 38.1 (2012): 73–97. Print.
Schildt, Herbert. Java: The Complete Reference. 8th ed. New York: McGraw, 2011. Print.