Oak (langage de programmation)
# Oak (langage de programmation)

Oak est un langage de programmation inventé par James Gosling en 1991. Initialement créé pour le projet de décodeur TV de Sun Microsystems, ce langage est aujourd'hui abandonné pour son évolution : Java.

Le nom Oak a été choisi par Gosling en regardant un chêne qui se trouvait à l'extérieur de son bureau.

## Histoire

En 1995, l'entreprise Sun Microsystems tentait de créer une nouvelle technologie pour programmer des appareils intelligents de nouvelle génération, car Sun jugeait que ceci était une nouvelle opportunité majeure.

L'équipe de développement a tout d'abord envisagé d'utiliser le langage de programmation C++, mais a rejeté l'idée pour plusieurs raisons (voir l'historique de Java).

Au départ, Gosling a tenté de modifier et d'étendre les fonctionnalités du C++. Par la suite, il a rapidement abandonné l'idée et a créé une nouvelle plate-forme appelée Green munit d'un nouveau langage qu'il a appelé Oak, d'après l'arbre qui se trouvait juste à l'extérieur de son bureau.

Durant l'été 1992, l'équipe de développement a pu présenter des parties de la nouvelle plate-forme, notamment le système d'exploitation Green OS, le langage de programmation Oak, les bibliothèques logicielles et le matériel de leur machine. Leur première tentative, démontrée le 3 septembre 1992, s'est concentrée sur la construction d'un PDA nommé Star7 : Celui-ci avait une interface graphique et un agent intelligent appelé "Duke" pour aider l'utilisateur (A la manière de Clippy).

Oak a finalement été renommé Java en 1994 car Oak était une marque déposée déjà utilisé par l'entreprise Oak Technology. Ainsi c'est sous le nom de Java 1.0 en 1996 que fut livré le logiciel.

## Différences avec Java

Oak a servi de base à Java 1.0, mais il a cependant quelques $différences^,.$ Plusieurs concepts pourtant planifiés dans les spécifications de Oak n'ont pu être implémentés en raison de contraintes de temps :

* Les types primitifs non signés ne sont d'ailleurs toujours pas implémentés en Java.
* Le mot clé enum pour les types énumérés n'a été implémenté qu'à partir de Java 5.0.
* Le mot-clé assert pour les assertion a été implémenté pour Java 1.4.

D'autres concepts ont été améliorés plus tard pour Java :

* Les méthodes abstraites copié du C++.
* Les niveaux d'accès de Java (private, public, ...) n’existaient pas en Oak : En effet, tout se comporte comme si les éléments sont privés pour Oak.

Et finalement, certains concepts ont été supprimés par la suite :

* Toutes les exceptions pouvaient être désactivées.
* De la même manière, il était aussi possible, grâce au mot clé unprotect, d'écrire du code qui ne levait pas d' exceptions asynchrones.
* Oak supportait assez bien la programmation par contrat : Les attributs d'une classe pouvaient avoir des contraintes appliqués à chaque entrée et sortie d'une méthode de la classe. Et les méthodes pouvaient également avoir leurs propres pré-conditions et $post-conditions^,.$

## Voir également

* Java (langage de programmation)
* Historique des versions de Java
