Java
Java est un langage de programmation inspiré du langage C++, avec un modèle de programmation orienté objet.
Java permet de créer des applications complètes. Il peut également servir à créer un petit module d’application, dit applet, à intégrer dans une page Web.
Pourquoi Java est-il si populaire
Les principales caractéristiques de Java sont les suivantes :
- Les programmes créés sont portables. Le programme source est compilé dans un « code », qui peut être exécuté sur un serveur ou un client doté d’une machine virtuelle Java. Cette dernière traduit le code compilé en code exécutable sur le matériel informatique. Cela signifie que les différences entre les plateformes, comme la longueur des instructions, peuvent être reconnues et gérées en local au fil de l’exécution du programme. Il n’est donc plus nécessaire de créer des versions différentes du programme pour chaque plateforme.
- Le code est robuste. Cela signifie que les objets Java ne peuvent contenir aucune référence à des données qui leur sont externes ou à d’autres objets connus. Ce mécanisme garantit qu’une instruction ne contiendra pas l’adresse de données stockées dans une autre application ou dans le système d’exploitation lui-même, ce qui provoquerait l’arrêt ou le « plantage » du programme, voire du système d’exploitation. La machine virtuelle Java procède à diverses vérifications sur chaque objet pour en assurer l’intégrité.
- Java est orienté objet, ce qui implique, entre autres caractéristiques, qu’un objet tire parti de son appartenance à une classe d’objets pour hériter du code commun à cette classe. Les objets sont considérés comme des « noms » auxquels un utilisateur peut se rapporter, plutôt qu’à des « verbes » traditionnellement utilisés dans les procédures. Ainsi, une méthode peut être considérée comme l’une des fonctionnalités ou l’un des comportements de l’objet.
- La machine virtuelle Java comprend un compilateur JIT (Just-In-Time) – ou compilateur à la volée – qui compile dynamiquement le code source en code exécutable au lieu de l’interpréter instruction par instruction.
- Les données sont « sécurisées ». Contrairement à C++, Java n’utilise pas de pointeurs, qui peuvent être non sécurisés. Les données converties en bytecode par Java ne sont pas lisibles par l’homme. En outre, Java exécute les programmes à l’intérieur d’un bac à sable afin d’éviter les modifications provenant de sources inconnues.
- Les applets offrent une certaine flexibilité. Outre le fait qu’elle est exécutée sur le client plutôt que sur le serveur, un applet Java présente d’autres caractéristiques destinées à la rendre plus rapide.
- Les développeurs peuvent apprendre Java rapidement. Avec une syntaxe similaire à celle du C++, Java est relativement facile à apprendre, en particulier pour ceux qui ont une formation en C.
Attention à ne pas confondre JavaScript et Java. JavaScript, initialement mis au point par Netscape, s’interprète à un niveau plus élevé.
Les plateformes Java
- Java SE – Les applications simples et autonomes sont développées à l’aide de Java Standard Edition. Anciennement connue sous le nom de J2SE, Java SE fournit toutes les API nécessaires au développement d’applications « lourdes » traditionnelles. Sa version open source, OpenJDK, est largement exploitée par les développeurs et supportée par les fournisseurs.
- Java EE – La Java Enterprise Edition, anciennement connue sous le nom de J2EE, permet de créer des composants côté serveur qui peuvent répondre à un cycle requête-réponse et créer des applications Web. Cet arrangement permet de créer des programmes Java pouvant interagir avec des clients basés sur Internet, y compris des navigateurs Web, des clients basés sur CORBA et même des services Web basés sur REST et SOAP. Sa version open source est nommée Jakarta EE et est portée par l’Eclipse Foundation, après un don du code source par Oracle en 2017.
- Java ME – Java fournit également une plateforme légère pour le développement mobile, connue sous le nom de Java Micro Edition, anciennement J2ME. Java ME s’est avérée être une plateforme prévalente pour le développement d’appareils embarqués, mais elle a eu du mal à s’imposer dans l’ère du développement pour les smartphones. La version open source de Java ME est également connue sous l’appellation PhoneME.
Les principaux usages de Java
Il est facile pour les développeurs d’écrire des programmes qui utilisent des modèles de conception de logiciels populaires et les meilleures pratiques en utilisant les différents composants trouvés dans Java EE. Par exemple, des cadres tels que Struts et JavaServer Faces utilisent tous un servlet Java pour mettre en œuvre le modèle de conception du contrôleur frontal afin de centraliser les demandes.
Une grande partie de l’écosystème Java réside dans la grande variété de projets, de plateformes logicielles et d’API open source construits par la communauté. Par exemple, la Fondation Apache héberge une variété de projets écrits en Java, y compris des frameworks de logging simples pour Java (par exemple, le désormais tristement célèbre Log4J), des frameworks de traitement Yarn et Hadoop, des plateformes de développement de microservices et des plateformes d’intégration.
Les environnements Java EE peuvent également être utilisés dans le cloud. Les développeurs peuvent créer, déployer, déboguer et surveiller des applications Java sur le cloud.
De plus en plus d’équipes de développement s’appuient sur le Framework Spring, un projet open source orchestré par VMware. L’on peut également citer Micronaut, Helidon, ou encore MicroProfile. Celui-ci est particulièrement populaire pour déployer des applications Java dans le cloud.
En termes de développement mobile, Java est couramment utilisé comme langage de programmation pour les applications Android. Les développeurs Android ont tendance à préférer Java en raison de sa sécurité, de ses paradigmes orientés objet, de ses fonctionnalités régulièrement mises à jour et entretenues, de l’utilisation de la JVM et des cadres pour la mise en réseau, les entrées-sorties et le threading.
Bien que Java soit largement utilisé, il fait encore l’objet de certaines critiques. La syntaxe de Java est souvent critiquée pour être trop verbeuse. En réponse, plusieurs langages périphériques sont apparus pour résoudre ces problèmes, notamment Groovy. En raison de la manière dont Java référence les objets en interne, les opérations complexes et concurrentes basées sur des listes ralentissent la JVM. Le langage Scala remédie à de nombreuses lacunes du langage Java qui réduisent sa capacité à s’adapter.
Depuis 2019, l’écosystème s’adapte plus clairement aux approches cloud native en s’appuyant sur un lot de technologies Java. L’on peut citer le projet GraalVM, une machine virtuelle polyglotte adaptée à l’approche FaaS (Functions as a Service) et ses dérivés dont Quarkus. Certains concepts du langage ont également évolué pour amoindrir la verbosité du langage et faciliter le développement des applications Java.
Une brève histoire de Java
Le World Wide Web émergeait encore en 1996 quand Java naissait. Le langage de programmation n’était donc pas imaginé pour Internet. Au lieu de ça, les ingénieurs de Sun Microsystems, James Gosling et Patrick Naughton, envisageaient d’exécuter des applications à l’échelle d’une application qui pourrait communiquer entre elles.
En conséquence, la communauté a accordé plus d’attention à la programmation en réseau de Java que les autres langages concurrents. Grâce aux API java.net, il a fait de grands progrès dans la simplification de cette tâche traditionnellement difficile.
Le premier incrément complet de Java a eu lieu le 23 janvier 1996. L’interface JavaBeans bien connue a été introduite dans Java 1.1 en février 1997.
Les versions ultérieures de Java ont reçu des surnoms, comme le JDK 1.2, appelé Java 2. Java 2 a apporté des améliorations considérables aux collections d’API, tandis que Java 5 a apporté des changements significatifs à la syntaxe Java par le biais d’une nouvelle fonctionnalité appelée Generics.
En octobre 2009, Google a publié le kit du développeur logiciel (SDK) Android, un kit de développement standard qui a permis aux développeurs d’appareils mobiles d’écrire des applications pour les appareils basés sur Android en utilisant les API Java.
Oracle a repris la plateforme Java lors de l’acquisition de Sun Microsystems en janvier 2010. L’acquisition a retardé la sortie de Java 7 et Oracle a revu à la baisse certains des projets les plus ambitieux. La sortie de Java 7 coïncide avec la disponibilité de son implémentation open source OpenJDK.
Java 8 a été publié en mars 2014. Il inclut les expressions lambda, qui sont des caractéristiques communes à de nombreux langages concurrents, mais qui étaient absentes de Java. Grâce aux expressions lambda, les développeurs peuvent écrire des applications Web ou autres en utilisant une approche fonctionnelle, par opposition à une approche orientée objet.
En mars 2018, Java 10 est sorti, suivi de Java 11 en septembre 2018. Java 12 a été publié en mars 2019. Cette accélération est due à un changement de cycle de mise à jour après la disponibilité de Java SE 9. Une nouvelle version Java SE est désormais disponible tous les six mois. En revanche, Oracle propose des versions prises en charge à long terme (LTS) tous les deux ans. Cette règle est effective depuis la disponibilité de Java SE 17, suivi de la Java SE 21, elle aussi LTS depuis sa disponibilité en septembre 2023. La disponibilité des versions open source de l’OpenJDK suit ce calendrier de manière légèrement décalée, tout comme une bonne partie de l’écosystème, dont le framework Spring.
Procès Oracle contre Google : Java et Android
Le 10 août 2010, Oracle a intenté une première action en justice contre Google, la seconde visant à obtenir 8,8 milliards de dollars de dommages et intérêts pour l’utilisation du langage de programmation Java dans le SDK Android.
Oracle alléguait une violation des droits d’auteur et affirmait que la mise en œuvre par Google de diverses API Java utilisait du code copié directement à partir de la mise en œuvre d’Oracle. Le litige s’est finalement terminé en avril 2021, près de dix ans plus tard, et a donné raison à Google. Les jurés ont décidé que l’utilisation des API Java par Android constituait un usage loyal et n’ont pas accordé de dommages-intérêts à Oracle.
Autre polémique, datée de février 2023, Oracle a lancé Java Universal Subscription, une offre de support pour Java SE, censée cibler les nouveaux clients. Au lieu de payer au nombre de licences Java SE Desktop installé sur les ordinateurs d’une entreprise et d’énumérer le nombre de « processeurs » de serveurs utilisés pour exécuter les applications Java –, Oracle compte désormais le nombre d’employés d’une entreprise et ses prestataires. Les clients existants peuvent normalement conserver leurs anciennes souscriptions, mais plusieurs acteurs observeraient des pressions commerciales auprès des anciens clients pour migrer vers la nouvelle offre.