# Programmation Java/Bases du langage

* 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 ]
Un programme Java est une suite d'instructions exécutées de manière séquentielle. D'une manière générale, les instructions sont terminées par des points-virgules « ; ».
Ces instructions s'exécutent de gauche à droite et de haut en bas. Elles peuvent être organisées dans des blocs.

## Identificateurs

Les différentes parties d'une classe possède un nom, qui doit être unique dans le contexte local afin d'identifier cet élément :
* nom du package où se situe la classe (implique une structure de répertoires ayant les mêmes noms),
* nom de la classe et des classes internes,
* nom des méthodes et attributs membres de la classes,
* nom des variables locales aux méthodes.
Tous ces noms sont appelés identificateurs et ont des contraintes :
* Un identificateur ne peut être composé que de lettres, de chiffres et du caractère souligné. Les caractères unicode sont acceptés.
* Un identificateur ne peut commencer par un chiffre, pour éviter l'ambiguïté avec les nombres.
* Depuis Java 9, le caractère souligné seul n'est plus accepté car il est devenu un mot clé. En Java 8, cela provoque un avertissement à la compilation.
* Les identificateurs des packages étant identiques aux noms des répertoires, ils doivent également obéir aux règles des noms de répertoire acceptables sur tous les systèmes où le programme tourne. Notamment sur Windows, certains noms sont réservés : aux, nul, com1 ...
Exemples d'identificateurs :
| Identificateurs valides | Identificateurs invalides |
| somme_en_€ somme_en_$ somme_en_£ dépenses_2022 | 7jours // <!> commence par un chiffre somme totale // <!> contient un espace revenus+dépenses // <!> contient un caractère réservé (+) |

## Point d'entrée du programme

Tout programme Java contient au moins une classe, nommée par convention avec une majuscule contrairement aux méthodes. De plus, il nécessite un point d'entrée. Pour un programme simple, le point d'entrée est la méthode "main" qui doit être publique, statique et située dans une classe qui elle même doit être publique (d'où les mots-clés public et static) :
L'argument args de cette méthode contient les paramètres passés au programme par la ligne de commande.
D'autres types de programmes, comme les applets, les servlets ou encore les applications Android, utilisent d'autres méthodes comme point d'entrée.

## Blocs d'instructions

Un bloc d'instructions est une suite d'instructions commençant par une accolade ouvrante ( { ) et se terminant par une accolade fermante ( } ).
Un bloc d'instructions est considéré comme une seule instruction par les instructions for, while, if, else et case. Nous détaillerons cela plus loin.
Ce bloc délimite également la portée des variables. Toute variable déclarée dans ce bloc n'est accessible qu'à partir de ce bloc, et n'existe que durant l'exécution du bloc.

## Commentaires

    Pour plus de détails voir : Programmation Java/Commentaires.
Les commentaires sont, en programmation informatique, des portions du code source ignorées par le compilateur. Ils sont très pratiques pour préciser quelque chose ou pour "mettre de côté" du code sans le supprimer. Java permet d'insérer des commentaires en utilisant deux syntaxes différentes :
* La séquence // permet d'insérer un commentaire sur une seule ligne, qui se termine donc à la fin de la ligne.
* La séquence /* permet d'insérer un commentaire sur plusieurs lignes. La séquence */ marque la fin du commentaire. En d'autres termes, tout ce qui est situé entre /* et */ est considéré comme faisant partie du commentaire.
Exemple :

### Commentaire Javadoc

Les commentaires normaux sont totalement ignorés par le compilateur Java.
En revanche, certains commentaires sont interprétés par le générateur automatique de documentation Javadoc.
Ces commentaires commencent par la séquence /** et se terminent par */. Le contenu décrit l'entité qui suit (classe, interface, méthode ou attribut), suivi d'une série d'attributs dont le nom commence par un arobase @.
La documentation générée étant au format HTML, il est possible d'insérer des balises dans la description.
Exemple :
En fait, il existe un attribut Javadoc qui est pris en compte par le compilateur : l'attribut @deprecated. Cet attribut marque une classe, une méthode ou une variable comme obsolète. Ce qui signifie que si une autre classe l'utilise un avertissement est affiché à la compilation de cette classe.
Exemple :
Cet attribut permet de modifier une bibliothèque de classe utilisée par plusieurs applications, en la laissant compatible avec les applications utilisant l'ancienne version, mais en indiquant que les anciennes classes / méthodes / variables ne doivent plus être utilisées et pourraient ne plus apparaître dans une version ultérieure.

## Références

* ↑ Kathy Sierra, Bert Bates, Java : tête la première, O'Reilly Media, Inc., 2004 (lire en ligne)