# A History of the Language

{% hint style="info" %}

* *Core Java: Volume I—Fundamentals*
  * Chapter 1
    {% endhint %}

## Buzzwords

In computer science, a white paper is an authoritative guide describing the theory behind a new technology or innovation. James Gosling authored just such a document when he designed the Java programming language, outlining the things he and his colleagues at Sun Microsystems achieved. The bulk of the white paper centered around the 11 terms he used to summarize the language.

* Simple
* Object-Oriented
* Distributed
* Robust
* Secure
* Architecture-Neutral
* Portable
* Interpreted
* High-Performance
* Multithreaded
* Dynamic

If you're interested in further reading, check out [the original white paper](https://canvas.instructure.com/courses/2110009/files/folder/Resources?preview=98958661) in its entirety.

## Humble Beginnings

You can't fully appreciate the Java programming language until you understand where it came from—why and how it was created, and the forces that influenced its development. While the AP Computer Science A exam doesn't touch on this history, you should have an introductory understanding of the people, places, and things behind the creation and evolution of the language you're learning.

### C and C++

When the C programming language was introduced in the 1970s, it changed the landscape of computer programming. Prior to C, most available languages were effective in only specific arenas. BASIC was easy to learn, but lacked the power and structure to make it a worthy choice for large-scale applications. FORTRAN proved effective in writing scientific and engineering programs, but not much else. And assembly languages were very efficient, but impractical to read, write, and debug.

All of that changed when Dennis Ritchie created the C programming language while working at Bell Labs. Originally released in 1972, it was considered by many to be the birth of modern programming. It blended all of the disparate features of its predecessors, which resulted in a simple, powerful, and efficient language. Even more importantly, though, it was designed for programmers and implemented by programmers. This was a refreshing departure from the academic or bureaucratic nature of software development. Programmers knew what they needed and how they wanted it, and C provided exactly that.

Fast-forward 10 years, and C had become the dominant programming language in use (and it's still widely used today!). Despite its enormous success and popularity, increasingly complex programs raised questions about how to manage that complexity with such a simple language. C++ was the answer to these questions. Designed by Bjarne Stroustrup (also at Bell Labs) and originally called C with Classes, C++ is a superset of C. It contains all of the great features of C, while adding object-oriented features.

Interested in teaching yourself C or C++? You can't go wrong with any of these, all of which were authored by the inventors of the languages.

* *The C Programming Language*
* *The C++ Programming Language*
* *Programming: Principles and Practice Using C++*
* *A Tour of C++*

*A Tour of C++* moves at a pretty quick pace, and assumes at least an intermediate understanding of programming in general and C++ specifically. This might not be the best introduction to C++, but you can revisit it after going through one of the other two.

### Enter, Java

Java was designed by James Gosling in the early 1990s. The Green Team, as he and his team of engineers were known, were tasked with developing a platform-independent language that could be used in consumer electronics (such as televisions, remote controls, and microwaves). And while many of the prototypes Gosling's team produced were ultimately rejected, some of the unique features built into Java would later prove useful during the emergence of the World Wide Web.

It is no accident that Java derives much of its identity from C and C++. Its syntax is largely a carryover of C, while many of its object-oriented features are borrowed from C++. The authors of Java sought to capitalize on the popularity of C and C++, and despite some early stumbles, they were very successful. If C was the response to the emerging needs of systems programming, then Java was the response to the distributed nature of the post-Internet computing world.

Java has undergone a number of changes since its formal release in 1996, including language updates, library additions and enhancements, and the acquisition of Sun Microsystems by Oracle. Java is now in its 15th iteration, and has seen rapid feature releases since switching to a bi-annual release cycle in 2017.

### Chronology

| Version  | Released       |
| -------- | -------------- |
| 1.0      | January 1996   |
| 1.1      | February 1997  |
| 1.2      | December 1998  |
| 1.3      | May 2000       |
| 1.4      | February 2002  |
| 5.0      | September 2004 |
| 6        | December 2006  |
| 7        | July 2011      |
| 8 (LTS)  | March 2014     |
| 9        | September 2017 |
| 10       | March 2018     |
| 11 (LTS) | September 2018 |
| 12       | March 2019     |
| 13       | September 2019 |
| 14       | March 2020     |
| 15       | September 2020 |
| 16       | March 2021     |
| 17 (LTS) | September 2021 |

LTS stands for longterm support, and it means that version of the language is stable and will be supported for an extended period of time. We'll be using Java 11, the most recent LTS version of the language, in this course.
