# Programmation Java/Introduction

* Introduction
* La notion de machine virtuelle
* Installation
** NetBeans
** Eclipse
** Visual Studio Code
* Bases du langage
** Premier programme
** Commentaires
** Types de base
** Opérateurs
** Conditions
** Bloc de portée
** Itérations
** Tableaux
* Les classes en Java
** Membres
** Modificateurs d'accès
** Héritage
** Encapsulation
** Polymorphisme
** Classes abstraites
** Interfaces
** Classes internes
** Transtypage
** Types génériques
** Instanciation et cycle de vie
** « this »
** Objets comparables et clés
** Énumérations
** Exceptions
** Packages
* Classes de base
** Collections
** Nombre de taille arbitraire
** Tags Javadoc
** Annotations
** Entrées sorties
** Threads et synchronisation
** Méthodes natives
** Réflexion
** Regex
** JUnit
* Conclusion
* Exemples en Java
** Générer un carré magique
** Générer un triangle de Sierpiński
** XML
** Swing
*** Un premier exemple
*** Formulaire avec boutons sur image
*** Calcul de somme
*** Calcul de distance
* Annexes
** Les outils de base fournis avec le Java Development Kit
** Créer une archive Java
** Paramétrer la JVM
** Liste des mots réservés
** Débogage
** Java et les autres langages
* Introduction
* La notion de machine virtuelle
* Installation
** NetBeans
** Eclipse
** Visual Studio Code
* Bases du langage
** Premier programme
** Commentaires
** Types de base
** Opérateurs
** Conditions
** Bloc de portée
** Itérations
** Tableaux
* Les classes en Java
** Membres
** Modificateurs d'accès
** Héritage
** Encapsulation
** Polymorphisme
** Classes abstraites
** Interfaces
** Classes internes
** Transtypage
** Types génériques
** Instanciation et cycle de vie
** « this »
** Objets comparables et clés
** Énumérations
** Exceptions
** Packages
* Classes de base
** Collections
** Nombre de taille arbitraire
** Tags Javadoc
** Annotations
** Entrées sorties
** Threads et synchronisation
** Méthodes natives
** Réflexion
** Regex
** JUnit
* Conclusion
* Exemples en Java
** Générer un carré magique
** Générer un triangle de Sierpiński
** XML
** Swing
*** Un premier exemple
*** Formulaire avec boutons sur image
*** Calcul de somme
*** Calcul de distance
* Annexes
** Les outils de base fournis avec le Java Development Kit
** Créer une archive Java
** Paramétrer la JVM
** Liste des mots réservés
** Débogage
** Java et les autres langages
[ Modifier le sommaire ]

## Introduction au langage Java

Le 23 mai 1995, Sun Microsystems présentait une nouvelle plateforme, composée d'un langage de programmation et d'une machine virtuelle. Java™ était né.
L'histoire de Java commence en fait en 1991, lorsque Sun décide de lancer un projet destiné à anticiper l'évolution de l'informatique, confié à James Gosling, Patrick Naughton et Mike Sheridan. Ce projet, appelé « Green Project » (en anglais « projet vert »), eu comme résultat une plateforme baptisée « Oak » (en anglais « chêne »), indépendante du système, orientée objet et légère. Oak était initialement destinée à la télévision interactive. Il a été renommé en Java pour de simples raisons de droit d'auteur.
Lorsqu'il est révélé en 1995, Java profite de l'essor d'Internet en permettant l'un des premiers mécanismes d'interactivité au niveau du poste client : l'appliquette (applet) Java.
Langage orienté objet d'usage généraliste, Java est enrichi par des bibliothèques, des outils et des environnements très diversifiés, standardisés par le Java Community Process (JCP), consortium chargé de l'évolution de Java. Ce consortium regroupe des entreprises, comme Sun, IBM, Oracle, Borland, BEA, des organismes de normalisation, comme le NIST, des organismes du monde Open Source, comme la Fondation Apache et le JBoss Group, et des particuliers.
Il est possible d'utiliser Java pour créer des logiciels dans des environnements très diversifiés :
* applications sur client lourd (JFC) ;
* applications Web, côté serveur (servlets, JSP, Struts, JSF) ;
* applications réparties (EJB) ;
* applications embarquées (J2ME) ;
* applications sur carte à puce (Java Card).
Ces applications peuvent être enrichies par de nombreuses fonctionnalités :
* accès à des bases de données (JDBC et JDO) ;
* accès à des annuaires (JNDI) ;
* traitements XML (JAXP) ;
* connexion à des ERP (JCA) ;
* accès à des traitements en d'autres langages (JNI) ;
* services web (JAX-RPC, JAXM, JAXR) ;
* multimédia (Java Media) ;
* téléphonie (JTAPI) ;
* télévision interactive (Java TV).
Ceci n'est bien sûr qu'un petit échantillon. Il existe bien d'autres bibliothèques.

### Historique de Java

* 1991 : Début du projet Oak, qui donnera naissance à Java.
* Été 1992 : première présentation interne des possibilités de Oak. Un appareil appelé « Star Seven » permet de visualiser une animation montrant Duke, l'actuelle mascotte de Java.
* 1994 : Développement de HotJava, un navigateur internet entièrement écrit en Java.
* 23 mai 1995 : Lancement officiel de Java 1.0
* 23 janvier 1996 : Lancement du JDK 1.0.
* 29 mai 1996 : Première conférence JavaOne. Java Media et les servlets y sont notamment annoncés.
* 16 août 1996 : Premières éditions des livres Java Tutorial et Java Language Specification par Sun et Addison-Wesley.
* Septembre 1996 : Lancement du site Web Java Developer Connection Web.
* 16 octobre 1996 : Spécification des JavaBeans.
* 11 janvier 1997 : Lancement des JavaBeans.
* 18 février 1997 : Lancement du JDK 1.1.
* 28 février 1997 : Netscape annonce que Communicator supporte désormais Java.
* 4 mars 1997 : Lancement des servlets.
* 10 mars 1997 : Lancement de JNDI.
* 5 juin 1997 : Lancement de Java Web Server 1.0.
* 5 août 1997 : Lancement de Java Media et de Java Communication API.
* Mars 1998 : Lancement des JFC et notamment de Swing.
* 8 décembre 1998 : Lancement de Java 2 et du JDK 1.2.
* 4 mars 1999 : Support XML.
* 27 mars 1999 : Lancement de la machine virtuelle HotSpot.
* 2 juin 1999 : Lancement des JSP.
* 15 juin 1999 : Formalisation des environnements J2ME, de J2SE et J2EE ; Lancement de Java TV.
* Août 1999 : Lancement de Java Phone.
* 8 mai 2000 : Lancement de J2SE 1.3.
* 9 mai 2002 : Lancement de J2SE 1.4.
* 24 novembre 2003 : Lancement de J2EE 1.4.
* 30 septembre 2004 : Lancement de J2SE 1.5, nommé également « J2SE 5.0 » ou « Tiger ».
* 11 décembre 2006 : Lancement de JavaSE 6, nommé également « Mustang ».
* 13 novembre 2006 : 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. Java devient donc un logiciel libre.
* 27 janvier 2010 : Sun Microsystem est racheté par Oracle. Désormais, Java est maintenu par la société Oracle.
* 28 Juillet 2011 : Lancement de JavaSE 7, nommé également « Dolphin ».
* 18 mars 2014 : Lancement de JavaSE 8, nommé également « Kenaï ».

### Présentation du langage

Java est un langage typé et orienté objet. Il est compilé et basé sur une architecture logicielle très particulière nécessitant une machine virtuelle Java. Il utilise les notions usuelles de la programmation orientée objet : la notion de classe, d'encapsulation, d'héritage, d'interface, de virtualité, de généricité, … Il est accompagné d'un ensemble énorme de bibliothèques standard couvrant de très nombreux domaines, notamment des bibliothèques graphiques. C'est un langage qui présente d'excellentes propriétés de portabilité du code. Son gros point faible est une relative lenteur, surtout si on le compare à des langages comme le C++. Cependant, ce défaut a été résolu en grande partie par l'introduction de la technologie JIT (compilateur Just-In-Time, en anglais « juste à temps »), qui compile le code à la première exécution, permettant une exécution quasiment aussi rapide qu'en C/C++.