JAVA (SUN)

Java Sun Logo

'Java' refers to a number of computer software products and specifications from Sun Microsystems (the Javaâ„¢ technology) that together provide a system for developing and deploying cross-platform applications. Java is used in a wide variety of computing platforms spanning from embedded devices and cell phones on the low end to enterprise servers and super computers on the high end. Java is fairly ubiquitous in cell phones, Web servers and enterprise applications, and somewhat less common in desktop applications, though users may have come across Java applets when browsing the Web.
For years, Sun Microsystems referred to Java as the "Java technology" but has used the word "Java" as an adjective about "technology." In practice, many programmers have used the word "Java" to mean the programming language, while the execution platform was called the "JRE" (Java Runtime Environment) and the compiler-system was called the "JDK" (Java Development Kit), rather than a "Java compiler" as such. The word "Java" has often been used as an adjective, but the formal term "Java technology" should be noted.
Writing in the Java programming language is the primary way to produce code that will be deployed as Java bytecode, though there are compilers available for other languages such as JavaScript, Python and Ruby, and a native Java scripting language called Groovy. Java syntax borrows heavily from C and C++ but it eliminates certain low-level constructs such as pointers and has a very simple memory model where every object is allocated on the heap and all variables of object types are references.
Java has non-object primitive types but every other data type is an object. The Java class libraries provide wrapper objects for the primitive types, and since Java SE 5.0 the Java compiler automatically inserts conversions between a wrapper type and its corresponding primitive. Memory management is handled through integrated automatic garbage collection performed by the JVM.
The current version, Mustang Java SE 6.0, is bundled with a database manager, facilitates the use of scripting languages (currently JavaScript using Mozilla's Rhino engine) with the JVM, has Visual Basic language support, and has native UI enhancements to support the look and feel of Windows Vista.
Sun Microsystems has made the bulk of its implementation of Java available under the GNU General Public License, although there are still a few parts distributed as precompiled binaries due to intellectual property restrictions.

Contents
Platform
Java Development Kit
History
Early history
Java meets the Internet
Recent history
Desktop use
Mobile devices
Java runtime availability
Version history
Licensing
Background
Current status
See also
References
External links
Platform

The Java platform consists of a Java virtual machine and implementations of the standard libraries. In order to allow for different types of system there are now three versions. Sun refers to their implementation of the Java platform as the Java Runtime Environment (JRE).

Java ME (Micro Edition): Specifies several different sets of libraries (known as profiles) for devices which are sufficiently limited that supplying the full set of Java libraries would take up unacceptably large amounts of storage.

Java SE (Standard Edition): For general purpose use on desktop PCs, servers and similar devices.

Java EE (Enterprise Edition): Java SE plus various APIs useful for multi-tier client-server enterprise applications.
Java Development Kit

The 'Java Development Kit' ('JDK') is a Sun product aimed at Java developers. Since the introduction of Java, it has been by far the most widely used Java SDK. It contains a Java compiler and a number of other important development tools as well as a full copy of the Java Runtime Environment.

History


Early history

'Duke', Java's mascot

The Java platform and language began as an internal project at Sun Microsystems in December of 1990, providing an alternative to the C++/C programming languages, with the new ''Green Operating System'' (OS) and a related language internally called ''Oak'' in 1992, later renamed to ''Java'' in 1994, since ''Oak'' was already trademarked.
Back in 1990, Engineer Patrick Naughton had become increasingly frustrated with the state of Sun's C++ and C APIs (application programming interfaces) and tools. While considering moving to NeXT, Naughton was offered a chance to work on new technology and thus the 'Stealth Project' was started.
The Stealth Project was soon renamed to the 'Green Project' with James Gosling and Mike Sheridan joining Naughton. Together with other engineers, they began work in a small office on Sand Hill Road in Menlo Park, California. They were attempting to develop a new technology for programming next generation smart appliances, which Sun expected to be a major new opportunity.
The team originally considered using C++, but it was rejected for several reasons. Because they were developing an embedded system with limited resources, they decided that C++ demanded too large a footprint and that its complexity led to developer errors. The language's lack of garbage collection meant that programmers had to manually manage system memory, a challenging and error-prone task. The team was also troubled by the language's lack of portable facilities for security, distributed programming, and threading. Finally, they wanted a platform that could be easily ported to all types of devices.
Bill Joy had envisioned a new language combining the best of Mesa and C. In a paper called ''Further'', he proposed to Sun that its engineers should produce an object-oriented environment based on C++. Initially, Gosling attempted to modify and extend C++ (which he referred to as "C++ ++ --") but soon abandoned that in favor of creating an entirely new language, which he called 'Oak', after the tree that stood just outside his office.
The team worked long hours and by the summer of 1992, they were able to demonstrate portions of the new platform including the Green OS, the Oak language, the libraries, and the hardware. Their first attempt, demonstrated on September 3, 1992, focused on building a PDA device named 'Star7' which had a graphical interface and a smart agent called "Duke" to assist the user. In November of that year, the Green Project was spun off to become 'firstperson', a wholly owned subsidiary of Sun Microsystems, and the team relocated to Palo Alto, California. The firstperson team was interested in building highly interactive devices, and when Time Warner issued an RFP for a set-top box, firstperson changed their target and responded with a proposal for a set-top box platform. However, the cable industry felt that their platform gave too much control to the user and firstperson lost their bid to SGI. An additional deal with The 3DO Company for a set-top box also failed to materialize. Unable to generate interest within the TV industry, the company was rolled back into Sun.
Java meets the Internet

In June and July of 1994, after three days of brainstorming with John Gage, James Gosling, Bill Joy, Patrick Naughton, Wayne Rosing, and Eric Schmidt, the team re-targeted the platform for the Web. They felt that with the advent of the Mosaic browser, the Internet was on its way to evolving into the same highly interactive medium that they had envisioned for cable TV. As a prototype, Naughton wrote a small web browser, WebRunner, later renamed HotJava.
That year, the language was renamed 'Java' after a trademark search revealed that the name "Oak" was used by a manufacturer of video adaptor cards (Oak Technology). The name Java was coined at a local coffee shop frequented by some of the members. It is not clear whether the name is an acronym or not; although some accounts claim that it stands for the names of 'J'ames Gosling, 'A'rthur 'V'an Hoff, and 'A'ndy Bechtolsheim, or 'J'ust 'A'nother 'V'ague 'A'cronym, it is generally accepted that "Java" was chosen for marketing purposes only. Lending credence to the idea that Java owes its name to the products sold at the coffee shop is the fact that the first 4 bytes (the so-called "Magic number") of any class file are, in hexadecimal, 0xCAFEBABE.
In October of 1994, HotJava and the Java platform were demonstrated for some of the Sun executives. Java 1.0a was made available for download in 1994, but the first public release of Java and the HotJava web browser was on May 23, 1995, at the SunWorld conference. The announcement was made by John Gage, the Director of Science for Sun Microsystems. His announcement was accompanied by a surprise announcement by Marc Andreessen, Executive Vice President of Netscape, that Netscape would be including Java support in its browsers. On January 9, 1996, the JavaSoft group was formed by Sun Microsystems in order to develop the technology.[1] A few weeks later the first version of Java was released.
Recent history

Desktop use

On the desktop, stand-alone Java applications remain relatively rare for several reasons.[2]

★ Java applications often use more memory than native applications because of the overhead for the Java runtime.

Graphical user interfaces for Java applications tend not to follow the platform-specific Human interface guidelines the user is accustomed to.[1]

★ Tools used to develop graphical Java applications are fragmented.

★ Installation of the Java Runtime Environment adds an extra step to deploying Java-based applications, since Microsoft Windows no longer bundles a Java runtime environment. In addition, there are multiple versions of the JRE, which can introduce compatibility issues for Java applications installed on a system.

★ One of the potential strengths of Java desktop applications -- portability to non-Windows operating systems -- has been offset by the fact that historically, Java has been unpopular with Free software advocates because Java was not released under a free software license.
Despite these difficulties, there are some Java applications in fairly widespread use, including the NetBeans and Eclipse integrated development environments, and file sharing clients such as LimeWire and Azureus. Java is also used in the MATLAB mathematics programming environment, both for rendering the user interface and as part of the core system.
Mobile devices

Java applications have become popular in mobile devices, where it competes with Symbian, BREW, and the .NET Compact Framework.
With Symbian, any developer can write and publish applications without paying a royalty. Symbian smartphones are the market leader with around 85% of the smartphone market.
BREW applications have access to routines which can add a charge to the telephone bill of the user. This power necessitates a strict approvals procedure managed by Qualcomm, which collects royalties for each BREW license given and controls which applications can be launched. Many CDMA vendors have opted for BREW, encouraged by their control over users' content by means of a walled garden technique, which some carriers believe will increase their profits. The main exception to this is the American CDMA carrier Sprint Nextel Corporation.
Like Symbian, developers can publish Java programs without paying a royalty. The penetration for Java is significantly higher than for Symbian, as it works on a wider range of phones, particularly popular cheaper models. This has allowed third-parties to create free applications like Opera Mini. Most GSM wireless carriers around the world use Java.
As Java runs in a sandbox, it is safe to allow independent developers to release their own software. The diversity of Java for mobile phones has led to a need for Java standards specifically for mobile phones so programs can run on phones from different suppliers - MIDP. The first standard was MIDP 1, which assumed a small screen size, no access to audio, and a 32kB program limit. The more recent MIDP 2 allows access to audio, and up to 64kB for the program size. With handset designs improving more rapidly than the standards, some manufacturers relax some limitations in the standards, for example, maximum program size.
Windows smartphones and PDAs provide a built-in .NET Compact Framework that can execute mobile .NET applications within a managed environment. .NET CF is in direct competition with Java ME, and is at an advantage within the Windows mobile market where a Java runtime environment is typically not provided by device manufacturers.
Java runtime availability

According to Sun, the Java Runtime Environment is found on over 700 million PCs.[2] Microsoft has not bundled a Java Runtime Environment (JRE) with its operating systems since Sun Microsystems sued Microsoft for adding Windows-specific classes to the bundled Java runtime environment, and for making the new classes available through Visual J++. A Java runtime environment is bundled with Apple's Mac OS X, and many Linux distributions include the partially compatible free software package GNU Classpath.[3]
Because of incompatibilities between different versions of the JRE, rather than rely on pre-installed JREs, many applications install their own JREs in order to function predictably. While newer Sun Java runtime environments are often backward-compatible with Java programs that were produced using a previous version of Java, numerous compatibility issues exist that can prevent older Java programs from functioning correctly, or at all, on newer Java runtime environments.[3] Java runtime environments are also specifically not forward-compatible, meaning that a Java program can rarely run on a runtime environment that is older than the development kit that was used to create the program.
Version history

Java Web Start, first introduced for 'J2SE 1.3', allows provisioning applications over the Web by clicking a desktop icon or a link on a website.

The Java language has undergone several changes since JDK (Java Development Kit) 1.0 as well as numerous additions of classes and packages to the standard library. Since J2SE 1.4, the evolution of the Java Language has been governed by the Java Community Process (JCP), which uses ''Java Specification Requests'' (JSRs) to propose and specify additions and changes to the Java platform. The language is specified by the ''Java Language Specification'' (JLS); changes to the JLS are managed under JSR 901.

★ 'JDK 1.0' (January 23, 1996) — Initial release.

★ 'JDK 1.1' (February 19, 1997) — Major additions included:


★ an extensive retooling of the AWT event model


inner classes added to the language


JavaBeans


JDBC


RMI

★ 'J2SE 1.2' (December 8, 1998) — Codename ''Playground''. This and subsequent releases through J2SE 5.0 were rebranded 'Java 2' and the version name "J2SE" (Java 2 Platform, Standard Edition) replaced JDK to distinguish the base platform from J2EE (Java 2 Platform, Enterprise Edition) and J2ME (Java 2 Platform, Micro Edition). Major additions included:


reflection


★ the Swing graphical API was integrated into the core classes


★ Sun's JVM was equipped with a JIT compiler for the first time


Java Plug-in


Java IDL, an IDL implementation for CORBA interoperability


Collections framework

★ 'J2SE 1.3' (May 8, 2000) — Codename ''Kestrel''. The most notable changes were:


HotSpot JVM included (the HotSpot JVM was first released in April, 1999 for the J2SE 1.2 JVM)


RMI was changed to be based on CORBA


JavaSound


Java Naming and Directory Interface (JNDI).


Java Platform Debugger Architecture (JPDA).

★ 'J2SE 1.4' (February 6, 2002) — Codename ''Merlin''. This was the first release of the Java platform developed under the Java Community Process as JSR 59. Major changes included:


regular expressions modeled after Perl regular expressions


exception chaining.


★ non-blocking NIO.


★ logging API.


★ integrated XML parser and XSLT processor (JAXP).


★ integrated security and cryptography extensions (JCE, JSSE, JAAS)


Java Web Start.

★ 'J2SE 5.0' (September 30, 2004) — Codename ''Tiger''. (Originally numbered 1.5, which is still used as the internal version number.[4]) Developed under JSR 176, Tiger added a number of significant new language features:


Generics.


Metadata.


Autoboxing/unboxing.


Enumerations.


Varargs.

★ 'Java SE 6' (December 11, 2006) — Codename [5]. As of this version, Sun replaced the name "J2SE" with 'Java SE' and dropped the ".0" from the version number.[6]. Major changes included in this version:


★ Scripting language support.


★ Support for pluggable annotations (JSR 269).


★ Lots of GUI improvements.


★ Improvements to the Java Platform Debugger Architecture (JPDA) & JVM Tool Interface for better monitoring and troubleshooting

★ 'Java SE 7' — Codename [7]. This is in the early planning stages. The Dolphin Project started up in August 2006, with release estimated in 2008. New builds including enhancements and bug fixes are released approximately weekly.[8]
In addition to the language changes, much more dramatic changes have been made to the Java class library over the years, which has grown from a few hundred classes in JDK 1.0 to over three thousand in J2SE 5.0. Entire new APIs, such as Swing and Java2D, have been introduced, and many of the original JDK 1.0 classes and methods have been deprecated.

Licensing


Background

The source code for Sun's implementations of Java (which is effectively the de-facto reference implementation) has been available for some time, but until recently the license terms severely restricted what could be done with it without signing (and generally paying for) a contract with Sun. As such these terms did not satisfy the requirements of either the Open Source Initiative or the Free Software Foundation to be considered open source or free software, and Sun Java was therefore a proprietary platform.[9]
While several third-party projects (e.g. GNU Classpath and Apache Harmony) created free software partial Java implementations, the sheer size of the Sun libraries combined with the use of clean room techniques meant that their implementations of the Java libraries (the compiler and vm are comparatively small and well defined) were incomplete and not fully compatible. These implementations also tended to be a long way behind Sun's in terms of optimization.
Sun announced in JavaOne 2006 that Java would become Open Source,[10] and on October 25, 2006, at the Oracle OpenWorld conference, Jonathan Schwartz said that Sun was set to announce the open-sourcing of the core Java Platform within 30 to 60 days. [11]
Current status

Sun made the Java HotSpot virtual machine and compiler Free software under the GPL on November 13 2006,[12] with a promise that the rest of the JDK (which includes the JRE) will be placed under the GPL by March 2007 ("except for a few components that Sun does not have the right to publish in source form under the GPL"). According to Richard Stallman, this means an end to the Java trap. Mark Shuttleworth called the initial press announcement, "''A real milestone for the free software community''".[13][14]
Following their promise, Sun released the complete source code of the Class library under GPL on May 8, 2007, except some limited parts that were licensed by Sun from 3rd parties who did not want their code to be released under an open-source license.[15][4] Sadly some of the encumbered parts turned out to be fairly key parts of the platform such as font rendering and 2D rasterisation. Sun's goal is to replace the parts that remain closed with alternative implementations and make the class library completely open.

See also



ARM9E, a CPU family with direct Java bytecode execution ability

Common Intermediate Language (CIL), a similar bytecode specification that runs on the CLR of the .NET Framework, but CIL predates CLR by nearly a decade.

C to Java Virtual Machine compilers

References


1. For example, prior to Java SE 6, font smoothing was disabled by default, which makes text look low quality. However, this was fixed in Java SE 6 and font smoothing for bold text is now enabled by default).
2. Include Java Software with Your PCs! ''sun.com'' retrieved 2006-10-25
3. kaffe.org: Results of comparison between jdk15 and classpath
4. Open JDK is here!

External links



Official developer site

College of the Extended University, Cal Poly Pomona - Learn JAVA now. Extending Boundaries Through Education And Innovation.

Java Keywords

"Java: The Inside Story" (''SunWorld'' article by Michael O'Connell)

The Java 6.0 Compiler API

Java User Groups

WebBasedProgramming - Java Tutorials

Object Oriented Java

''JavaWorld'' (how-to articles, tutorials, news)

IBM developerWorks: Java technology zone (how-to articles, tutorials, forums, code)

Free But Shackled - The Java Trap, by Richard Stallman

Java Discussion Forum

This article provided by Wikipedia. To edit the contents of this article, click here for original source.

psst.. try this: add to faves