Oak is a discontinued programming language created by
James Gosling
James Gosling (born May 19, 1955) is a Canadian computer scientist, best known as the founder and lead designer behind the Java programming language.
Gosling was elected a member of the National Academy of Engineering in 2004 for the conceptio ...
in 1989, initially for
Sun Microsystems
Sun Microsystems, Inc. (Sun for short) was an American technology company that sold computers, computer components, software, and information technology services and created the Java programming language, the Solaris operating system, ZFS, the ...
'
set-top box
A set-top box (STB), also colloquially known as a cable box and historically television decoder, is an information appliance device that generally contains a TV-tuner input and displays output to a television set and an external source of sign ...
project. The language later evolved to become
Java
Java (; id, Jawa, ; jv, ꦗꦮ; su, ) is one of the Greater Sunda Islands in Indonesia. It is bordered by the Indian Ocean to the south and the Java Sea to the north. With a population of 151.6 million people, Java is the world's List ...
.
The name ''Oak'' was used by Gosling after an
oak tree
An oak is a tree or shrub in the genus ''Quercus'' (; Latin "oak tree") of the beech family, Fagaceae. There are approximately 500 extant species of oaks. The common name "oak" also appears in the names of species in related genera, notably '' ...
that stood outside his office.
History
In 1985,
Sun Microsystems
Sun Microsystems, Inc. (Sun for short) was an American technology company that sold computers, computer components, software, and information technology services and created the Java programming language, the Solaris operating system, ZFS, the ...
was 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++
C++ (pronounced "C plus plus") is a high-level general-purpose programming language created by Danish computer scientist Bjarne Stroustrup as an extension of the C programming language, or "C with Classes". The language has expanded significan ...
, but rejected the idea for several reasons (see
Java history).
Initially, Gosling attempted to modify and extend C++ but soon abandoned that in favor of creating a new platform called ''Green'' and an entirely new language, which he called Oak, after the tree that stood just outside his office.
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
PDA may refer to:
Science and technology
* Patron-driven acquisition, a mechanism for libraries to purchase books
*Personal digital assistant, a mobile device
* Photodiode array, a type of detector
* Polydiacetylenes, a family of conducting poly ...
device named ''Star7'' which had a graphical interface and a smart agent called "Duke" to assist the user.
Oak was renamed ''Java'' in 1994 after a
trademark
A trademark (also written trade mark or trade-mark) is a type of intellectual property consisting of a recognizable sign, design, or expression that identifies products or services from a particular source and distinguishes them from others ...
search revealed that ''Oak'' was used by
Oak Technology
Oak Technology was an American supplier of semiconductor chips for sound cards, graphics cards and optical storage devices such as CD-ROM, CD-RW and DVD. It achieved success with optical storage chips and its stock price increased substantiall ...
.
Java 1.0 was finally shipped in 1996.
Differences with Java
Oak was the basis for what Java 1.0 became later, but there were also some differences:
Several concepts were planned in the Oak specification but were not implemented in the original language because of time constraints:
*
Unsigned
Unsigned can refer to:
* An unsigned artist is a musical artist or group not attached or signed to a record label
** Unsigned Music Awards, ceremony noting achievements of unsigned artists
** Unsigned band web, online community
* Similarly, the c ...
primitive types
In computer science, primitive data types are a set of basic data types from which all other data types are constructed. Specifically it often refers to the limited set of data representations in use by a particular processor, which all compiled pr ...
turned out never to be implemented in Java.
* The ''enum'' keyword for
enumerated type
In computer programming, an enumerated type (also called enumeration, enum, or factor in the R programming language, and a categorical variable in statistics) is a data type consisting of a set of named values called ''elements'', ''members'', ''en ...
s was implemented in Java for
Java 5.0.
* The
assert
Assertion or assert may refer to:
Computing
* Assertion (software development), a computer programming technique
* assert.h, a header file in the standard library of the C programming language
* Assertion definition language, a specification lang ...
keyword was implemented in Java for
Java 1.4
Other concepts were different from, or improved later, for Java:
*
Abstract methods
Method ( grc, μέθοδος, methodos) literally means a pursuit of knowledge, investigation, mode of prosecuting such inquiry, or system. In recent centuries it more often means a prescribed process for completing a task. It may refer to:
*Scien ...
were defined as in
C++
C++ (pronounced "C plus plus") is a high-level general-purpose programming language created by Danish computer scientist Bjarne Stroustrup as an extension of the C programming language, or "C with Classes". The language has expanded significan ...
.
* While the Oak default
access level
In computer science and computer programming, access level denotes the set of permissions or restrictions provided to a data type. Reducing access level is an effective method for limiting failure modes, reducing debugging time, and simplifying ...
was the same as Java's (default)
package private access level, it was called "private". Oak did not have an equivalent to Java's
private
access modifier.
And finally some concepts were later scraped out:
* All
exceptions were
unchecked.
* It was possible by the ''unprotect'' keyword to write code that would not signal
asynchronous exceptions.
* There was some support for
Design by Contract: Oak had
assertions whereby
Class variable
In class-based, object-oriented programming, a class variable is a variable defined in a class of which a single copy exists, regardless of how many instances of the class exist.
A class variable is not an instance variable. It is a special typ ...
could be constrained and the constraints were enforced at entry and exit of every public and protected method of the class. Methods could also have their own
pre-conditions and
post-conditions, which were inherited but not redefinable in a subclass.
See also
*
Java (programming language)
Java is a high-level, class-based, object-oriented programming language that is designed to have as few implementation dependencies as possible. It is a general-purpose programming language intended to let programmers ''write once, run anywh ...
*
Java version history
The Java language has undergone several changes since JDK 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 P ...
References
External links
Oak language specificationJava early history
{{DEFAULTSORT:Oak (Programming Language)
Java (programming language)
C programming language family
Sun Microsystems
Class-based programming languages
Object-oriented programming languages
Cross-platform software
Programming languages created in 1991