Java est le nom général du langage de programmation orienté objet Java et de la plate-forme Java lancée par Sun Microsystems en mai 1995. Il a été développé conjointement par James Gosling et ses collègues et officiellement lancé en 1995.
Java est divisé en trois systèmes :
En juin 2005, la conférence JavaOne a eu lieu et SUN a publié Java SE 6. À cette époque, diverses versions de Java avaient été renommées pour supprimer le chiffre « 2 » : J2EE a été renommé Java EE, J2SE a été renommé Java SE et J2ME a été renommé Java ME.
En 2009, Sun a été rachetée par Oracle.
En 2018, l'organisation open source Eclipse Foundation a annoncé que JavaEE (Enterprise Edition) serait renommé JakartaEE (Jakarta).
La syntaxe du langage Java est très proche du langage C et du langage C++, ce qui le rend facile à apprendre et à utiliser pour la plupart des programmeurs. D'un autre côté, Java ignore les fonctionnalités du C++ qui sont rarement utilisées, difficiles à comprendre et déroutantes, telles que la surcharge d'opérateurs, l'héritage multiple et les conversions automatiques. En particulier, le langage Java n'utilise pas de pointeurs, mais des références. Il fournit également un mécanisme de gestion automatique du recyclage de la mémoire afin que les programmeurs n'aient pas à se soucier de la gestion de la mémoire.
Le langage Java fournit des primitives telles que les classes, les interfaces et l'héritage. Par souci de simplicité, il ne prend en charge que l'héritage unique entre les classes, mais prend en charge l'héritage multiple entre les interfaces et prend en charge le mécanisme d'implémentation entre les classes et les interfaces (le mot clé est Implements). Le langage Java prend entièrement en charge la liaison dynamique, tandis que le langage C++ utilise uniquement la liaison dynamique pour les fonctions virtuelles. En bref, le langage Java est un pur langage de programmation orienté objet.
Le langage Java prend en charge le développement d'applications Internet. Parmi les interfaces de programmation d'applications Java de base, il existe une interface de programmation d'applications réseau (java net), qui fournit des bibliothèques de classes pour la programmation d'applications réseau, notamment URL, URLConnection, Socket, ServerSocket, etc. Le mécanisme RMI (Remote Method Activation) de Java constitue également un moyen important de développer des applications distribuées.
Le mécanisme de typage puissant de Java, la gestion des exceptions, le garbage collection automatique, etc. sont des garanties importantes pour la robustesse des programmes Java. Supprimer les pointeurs est un choix judicieux pour Java. Le mécanisme de vérification de sécurité de Java rend Java plus robuste.
Java est généralement utilisé dans les environnements réseau. Pour cette raison, Java fournit un mécanisme de sécurité pour empêcher les attaques de code malveillant. En plus des nombreuses fonctionnalités de sécurité du langage Java, Java dispose d'un mécanisme de prévention de sécurité (classe ClassLoader) pour les classes téléchargées via le réseau, comme l'attribution d'espaces de noms différents pour empêcher le remplacement de classes locales du même nom, l'inspection du byte code, et fournir un mécanisme de gestion de la sécurité (classe SecurityManager) permet aux applications Java de mettre en place des sentinelles de sécurité.
Les programmes Java (fichiers avec le suffixe java) sont compilés dans un format de bytecode neutre en termes d'architecture (fichiers avec la classe suffixe) sur la plate-forme Java et peuvent ensuite être exécutés sur n'importe quel système implémentant cette plate-forme Java. Cette approche convient aux environnements réseau hétérogènes et à la distribution de logiciels.
Cette portabilité vient de la neutralité de l'architecture. De plus, Java réglemente également strictement la longueur de chaque type de données de base. Le système Java lui-même est également hautement portable. Le compilateur Java est implémenté en Java et l'environnement d'exécution Java est implémenté en ANSI C.
Comme mentionné précédemment, les programmes Java sont compilés au format bytecode sur la plate-forme Java et peuvent ensuite être exécutés sur n'importe quel système implémentant cette plate-forme Java. Au moment de l'exécution, l'interpréteur Java de la plateforme Java interprète et exécute ces bytecodes, et les classes requises lors de l'exécution sont chargées dans l'environnement d'exécution pendant la phase de connexion.
Comparé à ces langages de script interprétés de haut niveau, Java est en effet très performant. En fait, la vitesse d'exécution de Java se rapproche de plus en plus de celle du C++ avec le développement de la technologie de compilateur JIT (Just-In-Time).
Dans le langage Java, un thread est un objet spécial qui doit être créé par la classe Thread ou ses descendants (petits-enfants). Il existe généralement deux manières de créer un thread : premièrement, utilisez le constructeur de type Thread(Runnable) pour envelopper un objet qui implémente l'interface Runnable dans un thread ; deuxièmement, dérivez une sous-classe de la classe Thread et remplacez run Method, l'objet ; créé à l'aide de cette sous-classe est un fil de discussion. Il convient de noter que la classe Thread a implémenté l'interface Runnable, donc tout thread a sa méthode run, et la méthode run contient le code à exécuter par le thread. L'activité d'un thread est contrôlée par un ensemble de méthodes. Le langage Java prend en charge l'exécution simultanée de plusieurs threads et fournit un mécanisme de synchronisation entre plusieurs threads (le mot-clé est synchronisé).
L'un des objectifs de conception du langage Java est de s'adapter à des environnements en évolution dynamique. Les classes requises par les programmes Java peuvent être chargées dynamiquement dans l'environnement d'exécution, ou les classes requises peuvent être chargées via le réseau. Cela facilite également les mises à niveau logicielles. De plus, les classes en Java ont une représentation au moment de l'exécution et peuvent effectuer une vérification de type au moment de l'exécution.
Le langage Java essaie de garantir que la mémoire système est supérieure à 1 Go. Les autres outils sont les suivants :
Après avoir installé les outils ci-dessus, nous pouvons générer le premier programme Java « Hello World ! »
public class MyFirstJavaProgram { public static void main(String []args) { System.out.println("Hello World"); } }
Dans le chapitre suivant, nous présenterons comment configurer l'environnement de développement Java.