# Programmation Java/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
* 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 ]
Cette section sera utile aux personnes qui apprennent Java mais connaissant un ou plusieurs autres langages. Les confusions courantes sont évoquées et les équivalences listées.

## C++

* En Java, on utilise final et non const. Le mot const étant tout de même réservé pour un usage ultérieur.
* Java ne définit pas d'espace de nom (namespace), mais des paquetages (package).
* On ne libère pas la mémoire. Cela est géré automatiquement par le ramasse-miette. À la place, il est recommandé de libérer les références aux objets qui ne sont plus utilisés en assignant null à la référence, dès que possible ou juste avant une potentielle allocation d'une grande quantité d'objets ou de grands tableaux.
* Il n'y a pas de pointeurs mais des références :
** Les opérateurs -> et * (déréférencement) n'existent pas. Il faut utiliser le point (.) ;
** Les références (contrairement au C++) peuvent être modifiées pour référencer un autre objet en utilisant l'opérateur d'affectation (=).
* Un char fait un octet en C++ mais 2 octets en Java car l'encodage Unicode utilisé est l'UTF-16.
* unsigned n'existe pas en Java : tous les types entiers sont signés.
* L'héritage multiple possible en C++ est interdit en Java, il faut utiliser des interfaces.
* L'opérateur de résolution de portée « :: » n'existe pas en Java :
** Pour utiliser un membre d'un package ou un membre statique d'une classe, utiliser le point (.) ;
** Pour appeler une méthode telle qu'elle est définie dans la classe parente, utiliser la référence super.
* Les classes ou méthodes ne peuvent être déclarées virtual car elles le sont toutes : toutes les liaisons sont dynamiques.
* Les opérateurs ne sont pas redéfinissables en Java. Les opérateurs n'agissent pas sur les objets, excepté pour l'opérateur + permettant de concaténer deux chaînes de caractères.

## PHP

* L'équivalent de PDO (PHP Data Objects) est JDBC (Java DataBase Connectivity).
* Import est remplacé par require_once.
* Le framework JUnit par PHPUnit.

## C sharp

Le langage C sharp ressemble beaucoup à Java dans la syntaxe, cependant :
* Le nom des méthodes de l'API est similaire, mais commence par une minuscule en Java :
       C sharp : ToString,Length,Main Java : toString,length,main
* Les accesseurs de propriétés n'existe pas en Java. Cependant, Java utilise la convention Bean (JavaBean), définissant des noms standards pour les méthodes d'accès aux propriétés (getProperty, setProperty(value), addPropertyCollectionItem(item), removePropertyCollectionItem(item)...). Cette convention est supportée par les outils de développement en Java (NetBeans par exemple), notamment les outils de création d'interface graphique pour les bibliothèques de composants (AWT, Swing, JavaFX...) qui respectent la convention.

## Voir aussi

* Translinguisme/Programmation