Cours d'introduction à Java : programmation


Cette page propose une introductions à la programmation en Java. Elle a pour vocation de présenter les éléments remarquables du langages et propose pour chacun de ceux-ci des références bibliographiques à consulter (des exemplaires des livres cités se trouvent dans le bureau D334) ainsi que des liens vers des exemples ou plus généralement des sources d'informations hypertextuelles.

Cette page reste evidemment sommaire et reste sujette à des modifications en fonctions de vos besoins et des commentaires que vous me ferez.


Pour trouver des informations utiles sur l'intallation de Java, cliquer ici.

1 Le concept Java :

Java est un langage inventé par les développeurs de Sun. Si les bases de ce langage ont été concues en 1990, Java reste encore aujourd'hui dans une phase de développement.

Selon les développeurs de Sun, Java (qui signifie café en argot américain) est un langage : simple, orienté-objet, distribué, interprété, robuste sécurisé, neutre vis à vis de l'architecture, portable, à haute performance, multi-threaded et dynamique. Mis à part l'aspect de haute performance qui est TRES loin d'etre vérifié, Java dispose bien des fonction énumérées.

Comment ca fonctionne en gros ?

Le programmeur écrit un code qui est transformé par le compilateur Java en une série d'instructions qui ressemble à du langage machine (pseudo-code) mais que la machine est incapable d'exécuter. On fournit ce pseudo-code à un programme spécial (un interpréteur) qui éxécute l'une après l'autre les instructions du pseudo-code. L'interpréteur peut être un navigateur Web (comme Netscape Navigator) ou un programme indépendant plus ou moins caché dans le système d'exploitation de l'ordinateur. Le pseudo-code utilise la mémoire de la machine, mais un mécanisme (le ramasse-miettes) récupère la mémoire dès que possible ce qui permet ainsi à d'autres programmes de tourner. Le pseudo-code peut faire appel à des bibliothèques de classes qui sont tout simplement des programmes écrits par d'autres programmeurs. Ces bibliothèques de classes permettent au programmeur d'éviter d'avoir à réécrire sans cesse des fonctionnalités classique. Par exemple, les bibliothèques de classes contiennent des classes permettant de dessiner un bouton, d'ouvrir une connexion avec le réseau, de jouer de la musique... Ces bibliothèques de classes ne se trouvent pas forcement sur la machine où s'execute le pseudo-code. L'interpréteur va alors les chercher où il faut sur le réseau. En fait, vous avez peut être déja utilisé Java sans même le savoir, simplement en allant surfer sur le Web. Les programmes exécutés par les navigateurs sont appelés applets contrairement aux programmes autonomes appelés comme il se doit applications.

2 Notion d'objets :

Java est un langage orienté objet. Cela signifie qu'il réalise un ensemble de concepts lui permettant de dépasser le cadre du simple langage de programmation struturé (Pascal, C...). En particulier, Java intègre les notions (voir Linden, pp. 35-65) :
  • d'abstraction par des classes
  • de polymorphisme (surcharge d'une méthode et surclassage d'une méthode de la classe supérieure)
  • d'encapsulation (: c'est à dire qu'il existe des regles pour décider quels sont les objets qui peuvent être appelés par un autre objet)
  • d'héritage simple

    3 Structures de données :

    Il existe en Java des types de données. On peut schématiquement diviser ces types en types simples (entier, double, booléen...) et en types structurés (c'est à dire des tableaux ou toute structure qui combine l'utilisation de plusieurs types simples).

    4 instructions de base :

    De plus, Java, par sa vocation orientée objet, introduit un ensemble de d'instructions essentielles permettant :
  • la définition de classes
  • la défintion de méthodes
  • la définition d'un constructeur (et destructeur) d'une instance de classe
  • l'appel d'une méthode
  • l'appel d'une instance de classe

    Par ailleurs, Java propose un ensemble de mécanismes pratiques (repris du langage C) permettant :

  • la notation de commentaires
  • la notation d'opérateurs et de séparateurs pour les expressions

    5 Controle du flot de données :

    Java présente un jeu d'instruction standard issu des langages actionnels (par opposition aux langages fonctionnels comme LISP) et permettant de controler le flot des données (c'est à dire la manière de répartir les traitements d'informations au sein d'un programme. En particulier, Java permet d'utiliser :
  • des branchements conditionnels
  • des boucles
  • des labels

    6 Bibliothèques de classes et sécurité :

    Java propose une hierarchie de classes comme autant de niveaux d'abstractions sur des objets. Les developpeurs de Java ont concu un grand nombre de classes pretes à l'emploi evitant au programmeur d'avoir à réécrire des fonctions classiques pour la nième fois. Ces classes constituent ce que l'on appelle une bibliothèque de classes. Elles sont prévues de manière à ce que le programmeur puisse insérer ses classes comme spécifications des classes existantes dans la bibliothèque. Les mécanismes d'interfaces et de classe abstraite sont particulièrements utiles à cet égard. Un mécanisme de sécurité complet (et complexe) permet en outre de garantir la protection du code produit par chaque programmeur fiabilisant ainsi l'environnement tout en empechant les mauvaises intentions (utilisation de code privé, distribution de code potentiellement dangereux...).

    En résumé, Java propose :

  • des classes hierarchisées
  • des interfaces et des classes abstraites
  • des mécanismes de sécurité

    7 applications et applets :

    Java peut être employé dans deux objectifs différents :
  • Soit pour produire des applications classiques (standalone) fonctionnant comme n'importe quel logiciel classique de votre ordinateur.
  • Soit pour construire des applications distribuées (applets) fonctionnant à travers le Web et interfacées par un navigateur grâce à l'emploi judicieux de code HTML.

    Nous présentons ci-dessous le même programme (repris par exemple de Ritchey, pp. 111-124) écrit soit sous la forme d'application soit sous la forme d'applet :

  • Hello world format application (section "getting started")
  • Hello World format applet (section "getting started") (et code pour l'appel depuis un fichier HTML)

    Pour les applets en général, voir aussi Macary & al., pp 195-202.

    8 Exercices pratiques :

    Java est un langage complet permettant d'écire n'importe quel programme. En particulier, Java peut permettre d'effectuer des tâches de calculs, des tâches graphiques, de générer du VRML...

    Au cours des semaines et des mois à venir, des exemples seront accessibles à partir d'ici. Pour l'instant toutefois, il existe peu de programmes interessants écrits en Java, il faudra donc attendre un peu.

    9 Par delà cette introduction :

    Pour une séance suivante, il reste à voir :
  • la gestion des erreurs (les exceptions) (voir Macary & al., pp. 177-194)
  • les bibliothèques de classes (suite) : les graphiques

    Pour une séance encore plus lointaine :

  • l'utilisation du parallelisme (le multi-threading) (voir Macary & al., pp. 149-176)
  • les bibliothèques de classes (fin) : les entrées sorties et le réseau

    10 Références utiles :

  • Tutoriel Java (repris de chez Sun) disponible localement.

  • Macary, J-F. et Nicolas, C. (1996). Programmation Java, Eyrolles, Paris.

    Intéressant pour son aspect simple et pour son approche comparative par rapport au langage C. Recommandé pour des débutants, des explications et l'emploi de sources d'informations complémentaires restent nécessaires. Probablement parteillement obsolète.

  • Flanagan, D. (1996). Java in a Nutshell, O'Reilly & Associates, Sebastopol, CA.

    Un ouvrage de référence pour programmeurs chevronnés. Les descriptions sont succintes et destinées essentiellement à des adeptes du langage C qui tentent une reconversion à Java. La description de la bibliothèques de classes est un modèle du genre. Le livre n'en est pas moins complet par ailleurs. Seule ombre au tableau : le langage a évolué depuis sa sortie.

  • Ritchey, T. (1995). Java!, New Riders Publishing, Indianapolis, IN.

    Cet ouvrage propose une découverte très progressive de Java, des outils associés et des environnements. Toutefois, malgré la quantité impressionnante des explications fournies pour chaque nouveau concept introduit, ce livre reste d'un contenu assez pauvre. Par ailleurs, ce livre est obsolete.

  • Van der Linden, P. (1996). Just Java, Sun Microsystems, Mountain View, CA.

    Produit par la firme qui a développée Java, ce livre est malheureusement très incomplet.

  • Bonjour, M., Falquet, G., Guyot, J. et LeGrand, A. (1996). Java : de l'esprit à la méthode - Distribution d'applications sur Internet, International Thomson Publishing France, Paris.

    Le plus récent de tous les ouvrages et le plus à jour. Complet, presque trop pour des programmeurs débutants. Contient une description très complète de la syntaxe en Java et des bibliothèques de classes fournies en standard.


    S.M.M.