Le 23 janvier 1996, Sun Microsystems a publié un communiqué de presse annonçant la disponibilité de Java 1.0 :
Palo Alto, Californie - 23 janvier 1996 - JavaSoft, la société nouvellement créée de Sun Microsystems, Inc., a annoncé aujourd'hui que l'environnement de programmation Java™ 1.0 est désormais disponible au téléchargement à l'adresse http://java.sun.com.
«La capacité write-once-run-everywhere de Java, ainsi que sa facilité d'accès, ont poussé les communautés logicielles et Internet à l'adopter comme la norme de facto pour l'écriture d'applications pour les réseaux complexes», a déclaré Alan Baratz, le nouveau président de JavaSoft. "Nous sommes ravis d'inviter les développeurs à télécharger immédiatement Java 1.0 et à commencer à créer la prochaine application qui tue."
"L'amélioration de Java pour créer cette version générale 1.0 forte a été une grande réussite pour notre équipe", a déclaré Ruth Hennigar, directrice générale du langage et des applications Java chez JavaSoft. «Depuis notre première version alpha sur le Web en mars, nous avons reçu de nombreux commentaires des développeurs et avons amélioré les fonctionnalités et la fiabilité. Cette version intègre les composants dont les développeurs de logiciels nous ont dit qu'ils avaient besoin : Java Applet Viewer pour exécuter et tester des applets, le compilateur Java, un prototype de débogueur et la machine virtuelle Java pour exécuter des programmes basés sur Java. Nous avons également inclus des bibliothèques de classes pour les graphiques, l'audio, l'animation et le réseau. "
Sun a publié des versions alpha de Java jusqu'en 1995, y compris sa technologie disponible dans Netscape Navigator et Mosaic, mais la sortie de la version 1.0 (suivie par 1.0.1 et 1.0.2 peu de temps après) a marqué le début d'un voyage qui se poursuit jusqu'à ce jour. Oracle a célébré le 25e anniversaire la version alpha de Java en dernier an.
Le succès initial et la disponibilité généralisée de l'Internet en plein essor ont contribué à amener Java aux masses, et le fait que le compilateur et les bibliothèques soient disponibles gratuitement était un grand changement par rapport à la disponibilité des outils à l'époque. Les projets open source comme gcc l'ont précédé d'une décennie, mais la plupart des systèmes d'exploitation ne disposaient que d'outils disponibles dans le commerce pour créer des logiciels graphiques interactifs. Le fait que les applets puissent être écrites, publiées sur Internet, puis rendues disponibles pour fonctionner sur une variété de systèmes d'exploitation différents était unique à l'époque.
Dans le communiqué de presse initial, Sun Microsystems a déclaré que Java 1.0 était disponible pour Solaris, Windows 95 et Windows NT, et qu'une version pour macOS était promise à la fin de l'année suivante. Lorsque Apple et NeXT ont fusionné pour créer macOS, Java était installé par défaut pour le système d'exploitation, et le runtime Objective-C a été relié à Java pour avoir JavaWebObjects, un portage Java de la pile Objective-C WebObjects. (L'héritage de la pile Java WebObjects peut encore être vu aujourd'hui dans certaines WebObjectApplications, ou extensions .woa, sur certains sites d'Apple.) IBM a promis de fournir des portages pour OS/2 et Windows 3.1, et est titulaire d'une licence Java depuis.
Bien que Java ait évolué au fil des ans, le cœur de la JVM a maintenu sa stabilité - au point où les applications compilées avec Java 1.0 peuvent toujours être exécutées sur des JVM modernes, bien que beaucoup plus rapidement. Le format du bytecode est (en grande partie) resté inchangé; au lieu de cela, l'évolution a introduit quelques mnémonique dans le bytecode (par exemple invokedynamic) et des types d'attributs supplémentaires (module-info) au fil du temps. Certains, comme les génériques, ont été introduits d'une manière rétrocompatible dans Java ne nécessitant aucune modification, afin qu'ils puissent continuer à fonctionner sur des JVM plus anciennes.
Malheureusement, les JVM étaient souvent utilisés comme vecteur de vulnérabilités de sécurité et des mises à jour fréquentes des JVM dans les navigateurs étaient nécessaires pour rester en sécurité. Comme la popularité d'autres types de plugins intégrés au navigateur (comme Flash, auquel nous avons dit au revoir plus tôt ce mois-ci ), Java a été relégué du navigateur au serveur, où il a gagné en popularité avec la plate-forme J2EE (maintenant JakartaEE). Les technologies intégrées aux navigateurs continuent d'être un vecteur de malwares, sauf que cette fois-ci, le JIT ciblé est celui qui exécute JavaScript, dont le nom doit son existence à la sortie anticipée de Java dans les navigateurs, mais sans aucun rapport.
Java a rarement été hors du top des langages de programmation au cours de la période écoulée, échangeant des places avec C pour les deux premières places, et avec la sortie d'Android utilisant le code source Java (sinon le nom) pour alimenter ses applications exécutées dans la VM Dalvik, semble prêt à rester avec nous pendant une autre décennie. La poursuite de la syntaxe de type C et son suivi catégorique du point-virgule à la fin de la ligne peuvent sembler datés, mais à l'époque, les développeurs C ont pu facilement passer au langage. Contrairement aux programmes C compilés en 1996, les applications Java fonctionnent toujours - et beaucoup plus rapidement, grâce à l'évolution des JVM 32 bits puis 64 bits et des ramasse-miettes avancés comme Shenandoah et ZGC.
Le succès de Java dans le mode de l'embarqué - qui après tout, a été initialement conçu comme un langage de programmation pour set-top-box - n'est pas aussi visible. Bien que Java soit présent sur Blu-Ray et la spécification JavaCard dans les cartes SIM et les puces PIN, cela n'a peut-être pas déclenché une révolution dans le monde de l'IoT. Cependant, Java embarqué est lucratif et l'une des raisons de l'achat par Oracle de Sun Microsystems, qui continue à gérer le langage et le runtime dans un environnement ouvert jusqu'à ce jour, y compris la sortie d'OpenJDK qui a apporté la GPL à la base de code (bien que Java était disponible gratuitement, il n'a été open-source qu'après l'acquisition).
L'héritage durable de Java ne consiste peut-être pas seulement à apporter l'orientation objet aux navigateurs Internet, mais à la JVM elle-même. Comme Java (et d'ailleurs JavaScript) l'ont montré, si vous avez un langage dans lequel le runtime est indépendant du processeur (bytecode JVM, code source JavaScript, WASM), un moteur d'exécution ou de traduction peut alors exécuter ce code quelle que soit la plate-forme. Ceci, plus que toute autre chose, a permis au matériel d'évoluer - de 32 bits à 64 bits, de PowerPC à ARM en passant par RISC-V - et ne nécessite toujours pas de modifications de code compilées par l'auteur original.
La JVM n'est plus utilisée uniquement par Java, mais par d'autres langages construits dessus, tels que des dérivés inspirés de Java comme Kotlin et Scala, ou des langages non Java comme JRuby et Jython. Les projets Truffle et GraalVM d'Oracle montrent comment vous pouvez créer une JVM au-dessus de Java et optimiser des langages qui ne pourraient autrement pas tirer parti de ces optimisations d'exécution. Et au fur et à mesure que le langage Java évolue, introduisant des threads légers et des records, ces changements feront avancer la JVM pour prendre en charge des environnements d'exécution plus exotiques à l'avenir.
Java et la JVM approchent peut-être de l'âge mûr, mais ils ont des décennies d'utilisation et des améliorations à venir.
Quelle a été la première version de Java que vous avez utilisée ? Faites-nous le savoir dans les commentaires ci-dessous.