Cet historique provient d’une traduction libre d’un article de la wikipedia anglophone Java programming language.
N’hésitez pas à vérifier la qualité de la traduction pour être certain qu’il n’y ait pas de contresens.
La plate-forme et le langage Java sont issus d’un projet de Sun Microsystems datant de 1990. L’ingénieur Patrick Naughton n’était pas satisfait par le langage C++ utilisé chez Sun, ses interfaces de programmation en langage C, ainsi que les outils associés. Alors qu’il envisageait une migration vers NeXT, on lui proposa de travailler sur une nouvelle technologie et c’est ainsi que le Projet Stealth (furtif) vit le jour.
Le Projet Stealth fut rapidement rebaptisé Green Project avec l’arrivée de James Gosling et de Mike Sheridan. Ensemble, aidés d’autres ingénieurs, ils commencèrent à travailler dans un bureau de la rue Sand Hill de Menlo Park en Californie. Ils essayèrent d’élaborer une technologie pour le développement d’applications d’une nouvelle génération, offrant à Sun la perspective d’opportunités uniques.
L’équipe envisageait initialement d’utiliser le langage C++, mais l’abandonna pour différentes raisons. Tout d’abord, ils développaient sur un système embarqué avec des ressources limitées et estimaient que l’utilisation du C++ demandait un investissement trop important et que cette complexité était une source d’erreur pour les développeurs. Les lacunes de ce langage au niveau du ramasse-miettes impliquaient que la gestion de la mémoire devait être programmée manuellement, un défi mais aussi une source d’erreur(s). L’équipe était aussi troublée par les lacunes du langage au niveau de la sécurité, de la programmation distribuée, du multi-threading. De plus, ils voulaient une plate-forme qui puisse être portée sur tout type d’appareils ou de plate-forme.
Bill Joy avait envisagé un nouveau langage combinant le meilleur du langage de programmation Mesa et du langage C. Dans un article appelé Plus loin (Further), il proposa à Sun que ses ingénieurs développent un environnement orienté objet basé sur le langage C++. À l’origine, Gosling envisageait de modifier et d’améliorer le langage C++, qu’il appelait C++ ++ --, mais l’idée fut bientôt abandonnée au profit du développement d’un nouveau langage de programmation qu’ils appelèrent Oak (chêne) en référence, selon la légende, à un arbre planté devant la fenêtre de leur bureau.
L’équipe travailla avec acharnement et, à l’été 1992, ils furent capables de faire une démonstration incluant le système d’exploitation Green, le langage Oak (1992), les bibliothèques et le matériel. Leur première réalisation, présentée le 3 septembre 1992, fut la construction d’un PDA appelé Star7 ayant une interface graphique et un agent intelligent appelé Duke pour prêter assistance à l’utilisateur. En novembre de la même année, le Green Project fut abandonné pour devenir FirstPerson, Inc, appartenant en totalité à Sun Microsystems et l’équipe fut relocalisée à Palo Alto. L’équipe FirstPerson était intéressée par la construction d’outils hautement interactifs et quand Time Warner publia un appel d’offres en faveur d’un décodeur multifonctions, FirstPerson changea d’objectif pour proposer une telle plate-forme. Cependant, l’industrie de la télévision par câble trouva qu’elle offrait trop de possibilités à l’utilisateur et FirstPerson perdit le marché au profit de Silicon Graphics. Incapable d’intéresser l’industrie audiovisuelle, la société fut réintégrée au sein de Sun.
De juin à juillet 1994, après trois jours de remue-méninges avec John Gage, James Gosling, Joy, Naughton, Wayne Rosing et Eric Schmidt, l’équipe recentra la plate-forme sur le web. Ils pensaient qu’avec l’avènement du navigateur Mosaic, Internet était le lieu où allait se développer le même genre d’outil interactif que celui qu’ils avaient envisagé pour l’industrie du câble. Naughton développa comme prototype un petit navigateur web, WebRunner qui deviendra par la suite HotJava.
La même année le langage fut renommé Java après qu’on eut découvert que le nom Oak était déjà utilisé par un fabricant de carte vidéo. Le nom Java fut inventé dans un petit bar fréquenté par quelques membres de l’équipe. Il n’a pas été déterminé clairement si oui ou non le nom est un acronyme, bien que certains prétendent qu’il signifie James Gosling, Arthur Van Hoff et Andy Bechtolsheim ou tout simplement Just Another Vague Acronym (littéralement « juste un acronyme vague de plus »). La croyance selon laquelle Java doit son nom aux produits vendus dans le bar est le fait que le code sur 4 octets (également appelé nombre magique) des fichiers de classe est en hexadécimal 0xCAFEBABE.
Certaines personnes prétendent également que le nom de Java vient du fait que le programme était destiné à pouvoir tourner sur des systèmes embarqués, comme des cafetières (Java signifie café en argot américain). En octobre 1994, HotJava et la plate-forme Java furent présentés pour Sun Executives. Java 1.0a fut disponible en téléchargement en 1994 mais la première version publique du navigateur HotJava arriva le 23 mai 1995 à la conférence SunWorld.
L’annonce fut effectuée par John Gage, le directeur scientifique de Sun Microsystems. Son annonce fut accompagnée de l’annonce surprise de Marc Andressen, vice président de l’exécutif de Netscape que Netscape allait inclure le support de Java dans ses navigateurs. Le 9 janvier 1996, le groupe Javasoft fut constitué par Sun Microsystems pour développer cette technologie. Deux semaines plus tard la première version de Java était disponible.
Historiquement, la possibilité des navigateurs Web de lancer des applets Java était la seule solution pour afficher des applications clientes riches (RIA pour Rich Internet Application). Des technologies concurrentes ont émergé parmi lesquelles Macromedia Flash, le DHTML Javascript et Silverlight basé sur Xul ou XAML.
Les applets sur le poste Client peuvent communiquer avec des servlets sur le Serveur, tout comme Javascript peut communiquer avec le Serveur au moyen d’AJAX. Flex utilise la technologie Flash par le biais du Adobe Flash Player.
À une époque où Javascript souffrait de problèmes de compatibilité inter-navigateur, les applets Java avaient l'avantage de la portabilité car le portage d'interfaces complexes était difficile à assurer pour tous les navigateurs du marché. Les progrès faits dans les technologies concurrentes à Java ont amené la plupart des développeurs à se détourner des applets Java et des problèmes inhérentes à cette technologie (incompatibilités entre les JVM, mauvaises performances, pauvreté des bibliothèques graphiques, complexité) et de la retombée de la « mode » Java. Enfin, les navigateurs modernes n'incluent plus systématiquement l'environnement Java à cause de sa taille importante et le taux de machines capables d'afficher des applets n'était plus que de 70 % en 2010, bien plus faible pour Flash par exemple.. En 2010, la quasi totalité des applications clients riches utilisent des technologies alternatives ; Flash pour l'essentiel mais aussi GWT.
Côté serveur, on retrouve des classes Java qui permettent de définir des objets (classes POJO) et d'autres classes qui permettent de définir des actions sur ces objets (classes métiers). On effectue ici un travail sur les données en les modélisant sous formes d'objets. Ces objets peuvent être modifiés par des méthodes issues de classes spécialement conçues pour effectuer des opérations. Ainsi on pourra trouver par exemple une classe pour définir une pomme en tant qu'objet (taille, poids, calibre) et une autre classe pour définir des opérations sur une pomme (acheter, vendre, manger). Avec les serveurs d’applications, on utilise des EJB pour encapsuler les classes définies précédemment. Ces éléments sont utilisés dans des architectures J2EE pour des applications multi-couches. L'avantage qu'on tire de ce travail est de pouvoir cacher au client l'implémentation du code côté serveur.
L’utilisation native du langage Java pour des applications sur un poste de travail restait jusqu'à présent relativement rare à cause de leur manque de rapidité. Cependant, avec l’accroissement rapide de la puissance des ordinateurs, les améliorations au cours de la dernière décennie de la machine virtuelle Java et de la qualité des compilateurs, plusieurs technologies ont gagné du terrain comme par exemple Netbeans et l’environnement Eclipse, les technologies de fichiers partagés Limewire et Azureus. Java est aussi utilisé dans le programme de mathématique Matlab au niveau de l’interface homme machine et pour le calcul formel. Les applications Swing apparaissent également comme une alternative à la technologie .NET.
Java, et le langage qui en dérive : JavaFx, essaye d'occuper une niche préssentie pour devenir un marché d'avenir important : les plateformes mobiles (PDA, tablettes, téléphones). Cependant, là encore, la concurrence est rude. Microsoft Silver Run, et la convergence de Flash et de Javascript/Ecmascript en ActionFlash, sont également bien positionnées dans ce nouveau domaine. Java, notamment via eclipse et netbeans offrent déjà des environnements de développement intégré pour mobile. Le système d'exploitation libre pour Mobile de Google, Android, repose sur le langage java (et des librairies qui lui sont propres). Le développement de ces appareils devraient entraîner une convergence entre les applications pour mobile et les RIA (Riches Internet Application). Pour cette raison, nous devrions assister à une nouvelle explosion de la programmation côté-client.
Le 13 novembre 2006, Sun annonce le passage de Java, c’est-à-dire le JDK (JRE et outils de développement) et les environnements Java EE (déjà sous licence CDDL) et Java ME sous licence GPL. En mai 2007, Sun publie effectivement OpenJDK sous licence libre. Cependant OpenJDK dépend encore de fragments de code non libre que Sun ne détient pas. C'est pourquoi la société Redhat lance en juin 2007 le projet IcedTea qui vise à remplacer les fragments de code non libre et ainsi rendre OpenJDK utilisable sans aucun logiciel propriétaire. En juin 2008, le projet IcedTea a passé les tests rigoureux de compatibilité Java (TCK). On peut donc dire que Java devient un logiciel libre.
La société Oracle a acquis en 2009 l'entreprise Sun Microsystems. On peut désormais voir apparaître le logo Oracle dans les documentations de l'api Java.
Le 12 avril 2010, James Gosling, le créateur du langage de programmation Java démissionne d’Oracle pour des motifs qu’il ne souhaite pas divulguer. Il était devenu le directeur technologique de la division logicielle client pour Oracle.
Le langage Java a connu plusieurs évolutions depuis le JDK 1.0 (Java Development Kit) avec l’ajout de nombreuses classes et packages à la bibliothèque standard. Depuis le J2SE1.4, l’évolution de Java est dirigée par le JCP (Java Community Process) qui utilise les JSR (Java Specifications Requests) pour proposer des ajouts et des changements sur la plate-forme Java. Le langage est spécifié par le JLS (Java Language Specification). Les modifications du JLS sont gérées sous le code JSR 901.
strictfp
assert
(Spécifié dans JSR 41.)int
) et le Wrapper de classe correspondant (comme la classe Integer) (Spécifié dans (en) JSR 201).enum
permet de créer une liste ordonnée de valeurs sans type. Auparavant, ceci pouvait seulement être réalisé par des entiers constants (Spécifié dans JSR 201).Object …
utilisée dans une déclaration de méthode permet de spécifier un nombre variable d’arguments pour cette méthode. C’est un fonctionnement équivalent à la fonction « printf » en C.for
pour les boucles — la syntaxe du for
est étendue avec une syntaxe spéciale pour itérer sur n’importe quel objet itérable comme un tableau, ou une collection en utilisant la syntaxe :void displayWidgets (Iterable<Widget> widgets) { for (Widget w: widgets) { w.display(); } }
En plus des changements au niveau du langage, des changements plus importants ont eu lieu au fil des années qui ont conduit des quelques centaines de classes dans le JDK 1.0 à plus de 3 000 dans J2SE 5.0. Des API entières, comme Swing ou Java2D ont été ajoutées et beaucoup de méthodes de l’original JDK 1.0 ont été déclarées deprecated (c’est-à-dire obsolètes et pouvant être supprimées à tout moment).