DOC

INTRODUCTION AU LANGAGE JAVA

By Craig Hicks,2014-04-24 14:40
9 views 0
INTRODUCTION AU LANGAGE JAVA

    LANGAGES OBJETS JAVA ET C#

    Cours introductif aux APIs

    ? Renato De Mori

    2004

     1

    1. ENVIRONNEMENTS ET LANGAGES

1.1 ARCHITECTURES LOGICIEL

    La diffusion de l’INTERNET a ouvert de nouvelles perspectives dans la conception

    d’architectures logiciel, en particulier pour les systèmes d’exploitation (SE). Un des objectifs

    principaux est de permettre l’exécution à distance de programmes, la possibilité d’effectuer des

    transactions à distance et d’échanger des documents avec un format standard. Un des résultats les plus importants a été d’enrichir les SE avec des nouvelles couches et des nouvelles machines virtuelles.

    La programmation Internet est orientée objet . Chaque programme est un ensemble d’objets.

    Chaque objet est l’instance d’une classe qui est, à son tour, l’intégration de structures de

    données avec des méthodes pour leur utilisation . Deux langages très similaires sont

    actuellement utilisés : JAVA et C#.

    Les services Web sont une autre grande innovation de l’Internet, notamment au niveau de la collaboration B2B (business-to-business). Lorsque deux sociétés voulaient partager des

    applications ou échanger des informations elles étaient souvent confrontées à un lourd

    processus. Les Web Services simplifient considérablement la collaboration B2B avec un

    nouveau système de partage de données et de systèmes. A ce propos, on considère deux

    environnement principaux, l’environnement de développement et l’environnement d’exécution .

    L’environnement d’exécution exécute une version compilée d’objets soit en interprétant chaque instruction comme dans la machine virtuelle JAVA (Java Runtime Environment : JRE) , soit avec une compilation dynamique (Just In Time Compliling : JITC) comme dans l’environnement .NET de Microsoft . Dans le cas de JRE les instructions à interpréter sont en J-Code, tandis que dans l’environnement .NET elles sont en MicroSoft Intermediate Language

    (MSIL) . La machine qui l’exécute s’appelle Common Language Run-time (CRL) et a un compilateur comme composant de base .

    La figure 1.1 montre le principe d’architecture intéressante où un navigateur peut utiliser une machine virtuelle JAVA.

     NAVIGATEUR

    API API API

    WEB MODULE MAIL module MACHINE JAVA

    API de base pour construire des applications

    Graphics/font library opaque device library System library

    Operating system specific layer

    Device drivers Network protocols kernel service link

    Figure 1.1 Architecture de support pour les navigateurs

     2

Le module opaque device library permet de traiter les périphériques comme des entités

    abstraites sans devoir connaître leur implémentation spécifique. Le navigateur peut se servir

    des environnements WEB, JAVA, MAIL grâce à des Application Program Interfaces (API) spécifiques. Ces environnements utilisent à leur tour un système d'exploitation avec ses

    librairies, fonctions, drivers et protocoles de communication .

    Une architecture récente pour les Web services est montrée dans la figure 1.2. Cette architecture

    a l’avantage de pouvoir être installée dans plusieurs plate-formes. La couche de niveau le plus bas contient la machine virtuelle (VM) pour l’exécution des instructions JAVA en J-code . VM fait partie de l’environnement Runtime (Java Runtime Environment : JRE) qui gère l’exécution des programmes . A un niveau plus haut on retrouve les compilateurs pour les clients et les

    serveurs et les API de base. Elles sont regroupées en paquets (packages) qui contient des classes que les objets en exécution peuvent utiliser.

    Figure 1.2 Architecture d’une plate-forme JAVA pour Web services

Parmi les API d’intégration avec d’autres environnements on retrouve celles pour CORBA,

    celles pour l’accès aux bases de données (JDBC), celles pour l’exécution à distance (RMI) et

    pour la recherche des adresses internet à partir des noms des sites (JNDI) . Les API pour les

    applications multimédia, le traitement des sons et des images sont dans une couche

    sous-jacente celle des classes pour les interfaces homme-machine (IHM) . Avec les classes pour

    les technologies de déploiement se termine JRE qui fait partie du System Development Kit (SDK) qui contient les outils de développement . La plus part des API feront l’objet d’une étude

    approfondie dans plusieurs cours .

    La figure 1.3 montre un schéma de l’architecture logiciel de .NET. La plate-forme est obligatoirement Windows, ce qui empêche l’application d’un des objectifs principaux de

    l’environnement JAVA permettant de concevoir et compiler un programme qui puisse être

    exécuté dans des sites différents avec des plates-formes différentes (write once and run everywhere).

     3

     Web services Web forms Windows forms

    Data and XML classes

    (ADOnet, SQL, XML)

    Framework base classes

    (IO, string, security, threads, reflection)

    Common Language Runtime (CRL)

    Plate-forme WINDOWS

    Fiure 1.3 Architecture .NET

La machine qui exécute le code compilé est CRL qui s’occupe de JITC, du traitement des

    exceptions, de la vérification de la cohérence des types d’opérandes . La sécurité, les opération d’entré/sortie, l’exécution parallèle, l’accès aux propriétés des objets

    sont assurés par les classes du Framework base.

    Pour le traitement des données, un autre langage XML (eXtended Markup Language) est devenu très populaire . Le traitement des données et l’accès aux bases de données sont assurés par les classes Data and XML.

    Les IHM peuvent être générées avec les Window forms, tandis que les Web forms permettent de contrôler les interactions à distance . Les services WEB sont développés avec les classes des

    Web services.

    Dans le cas de JITC, les objets représentés en MSIL sont compilés en langage machine au

    moment où leur exécution est demandée . Ceci est possible si on prévoit d’utiliser toujours la

    même plate-forme (Microsoft essaye d ‘imposer une plate-forme Windows comme de facto standard) et peut avoir l’avantage que, une fois récupéré le temps de compilation, l’exécution

    des objets en langage machine est plus rapide .

    On appelle les environnement de programmation, qui offrent aussi des groupes de classes

    utilisées en exécution, des Enterprises . On a donc la .NET Enterprise et la Java 2 Environment Enterprise (J2EE) . Les Enterprises contiennent des groupes de classes pour des opérations

    fréquentes ; Les fonctions de ces classes sont souvent les mêmes dans .NET et J2EE .Pour cette raison, il suffit de les voir dans une Enterprise même si passer à l’autre Enterprise nécessite souvent un effort non négligeable pour comprendre comment les même concepts sont

    implémentés avec une autre syntaxe .

    Comme J2EE est actuellement plus homogène que .NET grâce à l’utilisation du même langage

    pour tous les composants ou suivra principalement sa structure pour introduire des concepts de

    programmation internet, mais on fera des remarques pour montrer des liens avec .NET .

     4

En principe on peut écrire un programme dans n’importe quel langage et le compiler après en

    MSIL . Pour permettre à CRL de compiler les objets écrits en différents langages de façon

    cohérente, il faut suivre des spécifications qui font partie du Common Type System ( CTS ) . En pratique on pourrait intégrer du JAVA dans .NET, même si Microsoft fait un grand effort

    pour promouvoir le langage C# (C sharp) qui ressemble beaucoup à JAVA et intègre des

    éléments de C++ . Les autres langages disponibles actuellement pour .NET sont VB.NET

    (Visual Basic), JScript.NET et Managed C++ .

    L’environnement .NET intègre bien la plupart des composants déjà développés par Microsoft et

    assure l’interopérabilité des composants Microsoft . Ces composants sont similaires à des

    classes JAVA mais ils sont écrits dans des langages différents . Une grosse partie est incluse

    dans les Framework Base Classes (FBC) qui font partie de Framework Class Library (FCL) et correspondent aux Java Foundation Classes (JFC) .

    1.2 LES ENVIRONNEMENTS DE PROGRAMMATION ET D’EXECUTION

Il est actuellement accepté par les plus importants fournisseurs et développeurs que la

    programmation internet doit être orientée objet. A ce propos on considère deux environnement

    principaux, l’environnement de développement et l’environnement d’exécution .

    L’environnement d’exécution exécute une version compilée d’objets soit en interprétant chaque

    instruction comme dan la machine virtuelle JAVA (Java Run-time environment : JRE) soit avec une compilation dynamique (Just In Time Compliling : JITC) comme dans l’environnement .NET de Microsoft . Dans le cas de JRE les instructions à interpréter sont en

    J-Code, tandis que dans l’environnement .NET elles sont en MicroSoft Intermediate Language

    (MSIL) . La machine qui l’exécute s’appelle Common Language Run-time (CRL) et a un compilateur comme composant de base .

Dans le cas de JITC, les objets représentés en MSIL sont compilés en langage machine au

    moment où leur exécution est demandée . Ceci est possible si on prévoit d’utiliser toujours la même plate-forme (Microsoft essaye d ‘imposer une plate-forme Windows comme de facto standard) et peut avoir l’avantage que, une fois récupéré le temps de compilation, l’exécution

    des objets en langage machine est plus rapide .

On appelle les environnement de programmation, qui offrent aussi des groupes de classes

    utilisées en exécution, des Enterprises ; On a donc la .NET Enterprise et la Java 2 Environment Enterprise (J2EE) . Les Enterprises contiennent des groupes de classes pour des opérations

    fréquentes ; Les fonctions de ces classes sont souvent les mêmes dans .NET et J2EE .Pour cette raison, il suffit de les voir dans une Enterprise même si passer à l’autre Enterprise nécessite souvent un effort non négligeable pour comprendre comment les même concepts sont

    implémentés avec une autre syntaxe .

Comme J2EE est actuellement plus homogène que .NET grâce à l’utilisation du même langage

    pour tous les composants ou suivra principalement sa structure pour introduire des concepts de

    programmation internet, mais on fera des remarques pour montrer des liens avec .NET .

     5

En principe on peut écrire un programme dans n’importe quel langage et le compiler après en

    MSIL . Pour permettre à CRL de compiler les objets écrits en différents langages de façon

    cohérente, il faut suivre des spécifications qui font partie du Common Type System ( CTS ) .

En pratique on pourrait intégrer du JAVA dans .NET, même si Microsoft fait un grand effort

    pour promouvoir le langage C# (C sharp) qui ressemble beaucoup à JAVA et intègre des

    éléments de C++ . Les autres langages disponibles actuellement pour .NET sont VB.NET

    (Visual Basic), JScript.NET et Managed C++ .

    L’environnement .NET intègre bien la plupart des composants déjà développés par Microsoft . Ces composants sont similaires à des classes JAVA mais ils sont écrits dans des langages

    différents . Une grosse partie est incluse dans les Framework Base Classes (FBC) qui font partie de Framework Class Library (FCL) et correspondent aux Java Foundation Classes (JFC) .

    Pour le traitement des données, un autre langage XML (eXtended Markup Language) est devenu très populaire . Les classes pour traiter ce langages font partie d’un package JAVA et

    d’une couche .NET qui utilise FCL .

    Pour créer des applications WINDOWS, .NET offre un ensemble de Window Forms qui correspondent aux classes de AWT et des Swings, tandis que pour construire des applications

    WEB, .NET offre des Web Forms qui gênèrent des données qui sont intégrées dans des pages

    HTML . J2EE offre à ce propos des classes de servlets et des Java Server Pages (JSP).

D’autres classes pour d’autres services (WEB Services) sont offertes dans J2EE ainsi que

    dans .NET .

Les résultats de la compétition J2EE contre .NET sont difficiles à prévoir au moment actuel .

    Probablement on aura des clients avec un SE Microsoft et avec deux navigateurs, un avec la

    machine virtuelle JAVA (JRE : Java Runtime Environment ) et l’autre avec la machine CRL .

    Du coté serveur avec SE Microsoft, on aura probablement des serveurs avec un seul

    environnement de développement (J2EE ou .NET) et des serveurs avec les deux.

    Les clients et les serveurs qui n’ont pas un SE Microsoft, auront JRE et J2EE .

1.3 LES ARCHITECTURES CLINT-SERVEUR ET N-TIER

Les architectures client-serveur sont basées sur le dialogue entre deux systèmes, un client et un

    serveur. Le client interagit avec l’utilisateur pour formuler des requêtes qui seront envoyées à

    un serveur. Les réponses sont envoyées, en général, sous forme d’un document HTML. Le

    client doit aussi accepter les messages que l’utilisateur peut envoyer en réponse aux documents

    qu’il a reçus.

     6

Il est aussi possible d’implémenter du coté client un système de validation des messages que

    l’utilisateur veut envoyer au serveur. JAVA est particulièrement indiqué pour implémenter ces fonctions du serveur à cause de la portabilité du langage et de la facilité avec laquelle il

    intègre des méthodes de gestion de la sécurité.

En général, les serveurs doivent avoir la capacité de traiter des données complexes et de gérer la

    connexion réseau, tandis que les clients gèrent surtout les interfaces. Même si les clients sont

    devenus de plus en plus complexes et capables d’exécuter des fonctions différents ils ont des

    difficultés à transmettre des données à des bases de données multiples installées dans différents

    serveurs. Une autre opération difficile est celle de changer et redistribuer des règles de

    traitement des données qu’on appelle business logic.

Une autre faiblesse de cette architecture se manifeste quand on doit ré-utiliser un objet après

    l’avoir modifié.

    Une meilleure solution quand ont rencontre ces difficultés est des solutions three-tier ou n-tier avec plus que deux types de systèmes. Ces architectures permettent d’effectuer des transactions

    à partir des requêtes des utilisateurs, en utilisant des bases de données et des règles pour traiter

    les données.

    Le système intermédiaire d’une three-tyer architecture isole l’élaboration des données dans un

    site spécifique, libère l’application du client du problème de traiter la modélisation des données

    et maximise la ré-utilisation des objets. De cette façon la visualisation des données est

    complètement indépendante de la façon dans la quelle les données sont stockées dans une base.

    Le système intermédiaire est un serveur d’application qui contient des objets spécifiques pour

    des applications (business objects), tandis que la base de donnée est stockée dans un autre tier. Les business objects contiennent des méthodes pour traiter les données extraites d’une base. Le contrôle de l’accès à certains contenus d’une base est aussi confié aux business objects.

    Une architecture three tier peut être distribuée. Par exemple, on peut avoir un tier qui est logiquement un système de base de données physiquement distribué dans deux sites chacun

    ayant un type de base de données diffèrent (par exemple, Oracle et Informix). La figure 1.4

    montre un exemple d’architecture three tier avec plusieurs systèmes physiques.

Les objets des composants de ces architectures peuvent être conçus à partir de prototypes

    appelés design patterns. Parmi ces prototypes on retrouve les client patterns dont celui qui implémente l’architecture d’interface model-view-controller (MVC), le model-delegate pattern qui englobe dans un seul objet la gestion de l’apparence (V) et le contrôleur (C) et le listener patter pour la gestion des événements. De ce dernier il existe une version distribuée : le

    distributed listener pattern.

     7

    FInternet exploreri

    r

    eClient serverw

    a

    lNetscapel

    Tier 1

    Content

    Management

    XML

    Business

    Logic

    Tier 2

    Data base 1Data base n

    Tier 3

    Figure 1.4 Exemple d’une architecture three tier distribuée

    Malheureusement l’ajout d’un troisième tier augmente la complexité. Pour éviter cet inconvénient, des enterprises ont été créées. Un exemple est l’ Enterprise JAVA Beans (EJB)

    qui permet de développer rapidement les plus importantes applications de JDBC.

    1.4 APPLICATIONS ET APPLETS

     8

Un programme JAVA est une collection d'objets qui sont des instances de classes. Une classe

    est le résultat de l'encapsulation de méthodes qui exécutent des instructions, et de données

    utilisées par ces méthodes. Les classes et leurs instances (objets) peuvent être compilées en

    code machine dans une application qui peut être exécutée sous le contrôle direct d'un système

    d'exploitation. On a, dans ce cas, une application.

    On peut avoir aussi une compilation dans un code intermédiaire qui donne lieu à une applet qui est compilée à un endroit et envoyée à d’autres endroits pour être exécutée. Le résultat

    intermédiaire de cette compilation est une version en byte-code ou J-code qui est indépendante de la plate-forme et peut être interprété seulement dans une machine virtuelle JAVA à

    l’intérieur d’un navigateur. Ces opérations sont représentées dans la figure 1.5 Cette machine virtuelle contient des API (Application Program Interface), c'est à dire une interface avec le système, qui permet l'exécution de tous les programmes de la même famille

    (JAVA). Les API sont des collections de classes regroupées en packages . Pour exécuter une applet il faut écrire un fichier en langage HTML qui est interprété par le

    navigateur et qui invoque le programme JAVA.

    Tous les systèmes qui possèdent une machine virtuelle JAVA peuvent interpréter et exécuter du

    J-code. L'exécution du même J-code est donc possible avec toutes les architectures matérielles

    et les systèmes d'exploitation qui possèdent une machine virtuelle JAVA.

    Les résidences du script HTML et de l’applet JAVA peuvent être différentes. Pour cette raison,

    les ressources du système qui exécute une applet sont protégées des possibles dommages que

    l’applet peut provoquer.

    Le J-code peut être encore compilé et produire du code machine pour une architecture

    particulière.

    Si le fichier J-code est compilé dans le navigateur, l'exécution du programme par rapport à son

    interprétation est beaucoup plus rapide (~10 fois plus rapide).

    J-codeappletfichiernavigateur

    machinecompilévirtuelle javapr1.java

    pr1.class

     Figure 1.5 - Compilation et exécution d'une applet

Comme tout programme en JAVA est une classe, on écrit la classe principale dans un fichier

    dont l’extension est .java et on importe les ensembles (packages) de classes qui contiennent les méthodes qu’on veut utiliser. Dans nos exemples, on a besoin des méthodes pour gérer les

    Applets, qui sont dans le package java.applet.* (* indique qu’on importe tout le contenu du

    package applet) et les méthodes d’interfaces homme-machine qui sont dans le package java.awt.

class HelloWorldApp {

    /* APPLICATION : la classe est public, tout le monde peut l’appeler */

     public static void main(String[] args) {

    /* Attention : chaque application au moins une méthode main */

     9

System.out.println("Hello World!");

     /* invocation d’une méthode d’une autre classe */

     }

    }

import java.applet.Applet;

    import java.awt.Graphics;

public class HelloWorld extends Applet {

    /* Définition d’un programme java par un applet */

     public void paint(Graphics g) {

     g.drawString("Hello world!", 50, 25);

    /* 25 et 50 sont des paramètres de positions */

     }

    }

    --------------------------------------------------------------

    Dans le cas d’une application, le fichier

    <nom-du-fichier>.java

     est compilé par la fonction

     javac <nom-du-fichier>

    qui produit le ficher <nom-du-fichier>.class qui peut être alors exécuté:

    java <nom-du-fichier>

Une applet est un fichier dont l’extension est .java et il est exécuté par un script HTML écrit

    dans un fichier .html qui doit être ouvert sur un browser. Soit le fichier HTML :

<HTML>

    <HEAD>

    <TITLE> Mon applet java</title>

    </HEAD>

    <BODY>

    <APPLET CODE=’’nom-du-fichier’’.class WIDTH=320 HEIGHT=240 >

    </APPLET>

    </BODY>

    </HTML>

1.5 LE LANGAGE C#

    C# ressemble beaucoup à JAVA avec des influences de C++ .

    Les définitions des classes ne nécessitent pas de fichiers header ni de fichiers Interface

    Definition Language (IDL).

     10

Report this document

For any questions or suggestions please email
cust-service@docsford.com