# Java/Introduction
## Introduction à Java

Java est le langage phare de la société Sun Microsystems. Il a été créé en 1991, à l’époque dans le but d’intégrer des appareils domestiques pour un projet de domotique, dont le nom de code était « Green ». Il fallait donc que le langage soit léger et portable sur toute configuration. Baptisé dans un premier temps « Oak », il changea rapidement de nom, Oak étant déjà utilisé, pour devenir « Java », terme de l’argot en anglais qui signifie café. Les versions suivantes, avec l’ajout notamment de Swing permettant de créer des interfaces graphiques stables, rendront le langage de plus en plus populaire pour la création de nombreux types d’application, avec comme atout principal : sa portabilité. La version actuelle de Java est la version 1.8.
Java se décline en de nombreuses versions, pour ordinateurs (avec une version de la machine virtuelle par système d’exploitation), pour téléphones mobiles, pour la programmation d’applications commerciales… Chacune des versions possède certaines bibliothèques en commun et certaines autres spécifiques, écrites différemment ou absentes. Certains systèmes d’exploitation possèdent la machine virtuelle dans leur configuration de base (Mac OS X…), tandis qu’elle doit être installée séparément sur d’autres (Windows, Mac OS 9…)
Java ressemble en plusieurs points au C++, langage très célèbre et très répandu, considéré souvent comme son grand-frère. Java est donc un langage objet ; toutefois, étant prévu pour tourner sur des petites configurations (souvenons-nous qu’il est prévu à la base pour les appareils ménagers), il est aussi utilisé à la manière d’un langage procédural. Il possède plusieurs autres caractéristiques, dont le fait d’être fortement typé (le type des variables en détermine strictement le type de contenu).
Il est aussi, et c’est là une de ses grandes forces, portable (quasiment) sans modifier une seule ligne de code. En effet, Java est un langage interprété, et cette caractéristique est suffisamment importante pour que nous la développions ici un peu plus. À la différence d’un langage comme son proche parent le C++, il n’est pas compilé pour un type de processeur mais pour une machine virtuelle. C’est cette machine virtuelle (la JVM) qui interprète en temps réel le code précompilé. Ci-dessous, un schéma très simpliste permettant de se représenter la différence entre les deux principes :
On constate clairement ici qu’à la différence d’un langage dit « exécuté », le langage Java nécessite une étape de plus pour être exécuté. La machine virtuelle doit d’abord transformer le « Bytecode » (une sorte semi-code machine) en instructions réelles pour le processeur. Ce dernier doit donc effectuer une opération préalable au lieu de pouvoir immédiatement exécuter le code, d’où une plus grande lenteur d’exécution. C’est à ce prix-là que le langage peut être exécuté sur n’importe quelle machine : c’est en effet la machine virtuelle (qui elle, est programmée pour une architecture bien précise) qui va traduire le code spécialement pour la configuration en question. C’est donc d’une certaine manière la grande force du Java qui fait sa principale faiblesse : sa lenteur d'exécution. Puisque le code doit être traduit en temps réel avant de pouvoir être exécuté, le Java est naturellement plus lourd qu’un autre langage. Son utilisation pour des applications gourmandes telles que les jeux 3D ou les applications de calcul intensif reste donc anecdotique. Il est par contre parfaitement adapté à des applications plus modestes en ressources, et la puissance actuelle des processeurs tend à minimiser cette faiblesse encore flagrante il y a de cela quelques années.
Une autre particularité de Java est de proposer dans son kit de développement, le JDK (Java Developement Kit), un grand nombre (en fonction du type choisi : standard, pour téléphones mobiles…) de bibliothèques prêtes à l’emploi pour tous les domaines utilitaires : gestion des fichiers, classement, recherche, tri… La documentation fournie avec l’API est très complète et très bien organisée ce qui permet de trouver facilement la fonctionnalité dont on a besoin. Ainsi, le programmeur n’a pas à réinventer la roue à chaque nouveau projet, mais peut se concentrer directement sur la partie fonctionnelle de son produit.
Pour commencer à programmer en Java, il suffit de télécharger le JDK, sous Unix :
Celui-ci contient la machine virtuelle ainsi que les outils nécessaires à la compilation d’un projet. Comme dans beaucoup de langage, il est tout à fait possible de programmer au bloc-notes ou gedit ; toutefois, un environnement de développement digne de ce nom se révélera rapidement nécessaire. Il en existe beaucoup ; JBuilder chez Borland, intégrant un système de modélisation UML performant, XCode chez Apple, bien que peu orienté Java, et bien d’autres encore. Eclipse bénéficie d’une communauté d’utilisateurs très nombreuse. L’important est bien évidemment de trouver un environnement de développement où vous soyez à l’aise et qui vous convienne.

## Lancer un programme

Une fois le JDK installé, créer un fichier bonjour.java contenant le code :
Le compiler ensuite en lançant (sous UNIX ou DOS) :
Lancer ensuite le fichier salut.class ainsi généré :