« Java » : différence entre les versions

De EduTech Wiki
Aller à la navigation Aller à la recherche
Aucun résumé des modifications
 
(39 versions intermédiaires par 2 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
{{En construction}}
==Introduction==
Le Java est un langage de programmation orienté objet développé par Sun Microsystems ([http://www.sun.com Sun]) au début des années 1990. L'article qui suit est traité de manière non approfondie et est destiné à être lu par des non spécialistes.
 
Java a de multiples particularités. La première d'entre elle se situe dans son mode de distribution, car en effet, son code source est accessible en Open Source. De plus, son accès est libre et gratuit. (Attention à l'amalgame, Open Source ne veut pas forcément dire gratuit, [http://www.lesoir.be/la_vie_du_net/actunet/open-source-vs-logiciel-libre-2009-04-03-699344.shtml ici pour plus d'infos]).
 
L'autre aspect est celui d'être multi-plateforme, c'est à dire que les programmes écrits en java peuvent s'exécuter de la même manière sur une plateforme Windows, MacOS, Linux ou Solaris. Ceci est dû à son architecture faisant appel à une Machine Virtuelle (ou VM en anglais: Virtual Machine).
 
==Historique==
A l'origine, le projet Green de Sun Microsystems fonde les bases d'un langage orienté objet ayant comme particularité d'être multi-plateforme. Mais le projet est abandonné faute d'applications. Peu de temps après, Netscape cherche une technologie pour rendre les pages Web un peu plus attrayantes et dynamiques. Sun ressort son projet des cartons et lance Java avec ses fameuses [http://fr.wikipedia.org/wiki/Applet Applets], petits programmes informatiques créés pour être directement exécutés à l'intérieur d'une page Web.
 
Comme on le sait, Internet (1969) connaît alors un essor incroyable grâce au Web (~1990 [http://www.w3.org/History.html]), et tiré par cette ascension, Java a le même succès.


==Introduction==
==Java et son environnement==
Le Java est un langage de programmation orienté objet. Développé par Sun Microsystems ([http://www.sun.com Sun]) au début des années 1990.
Malheureusement, le Java ne désigne pas un concept précis propre à une application. En fait, on peut le décomposer en trois parties.
 
*L'une d'elle désigne le langage de programmation en tant que moyen de communication entre un être humain et un ordinateur et permettant le codage d'un programme informatique, appelé ''code source''. Comme autres langages, on pourrait citer, entre autre, le BASIC, le PASCAL, le C et son évolution, le C++, le COBOL, le FORTRAN. Comme tous les langages, il possède sa structure, sa grammaire et sa syntaxe. Elle est proche de la famille de C/C++


==Historique et particularités==
En voici un exemple:
A l'origine, le projet Green fonde les bases d'un langage orienté objet ayant comme particularité d'être multi-plateforme. Mais le projet est abandonné faute d'applications. Peu de temps après, Netscape cherche une technologie pour rendre les pages Web un peu plus attrayantes et dynamiques. Sun Microsystems ressort son projet des cartons et lance Java avec ses fameuses [http://fr.wikipedia.org/wiki/Applet Applets], petits programmes informatiques directement exécutés dans une page Web.
''public class Connection{''
''     private String protocole = "http://"''
''    private int port = 80;
''    private String server = "tecfa.unige.ch";''
'' ''
''    public String getUrl(){''
''          return protocole+server+":"+port;''
''    }
''}''


Le Java a de multiples facettes. La première d'entre elle se situe dans son mode de distribution, car en effet, son code source est accessible en Open Source. De plus, son accès est libre et gratuit. (Attention à l'amalgame, Open Source ne veut pas forcément dire gratuit, [http://www.lesoir.be/la_vie_du_net/actunet/open-source-vs-logiciel-libre-2009-04-03-699344.shtml ici pour plus d'infos]). Comme on le sait, Internet connait un essor incroyable grâce au Web et tiré par cette ascension, Java connait le même succès.
*Le deuxième aspect du Java consiste plutôt en un ensemble d'outils pour permettre le traitement du code source. Pour cela, le programmeur a besoin d'un ensemble de petits outils (déjà créés, et par forcément en Java) que ''Sun'', le concepteur du langage, dénomme le '''Java Development Kit''' (ou JDK). Il va permettre de transformer (par compilation) le code source en un programme final qui sera exécuté par l'ordinateur. Cependant, pour exécuter le programme ainsi conçu, il est nécessaire d'avoir une troisième partie décrite ci-dessous.


L'autre aspect est celui d'être multi-plateforme, c'est à dire que les programmes écrits en java peuvent s'exécuter de la même manière sur une plateforme Windows, MacOS, Linux ou Solaris. Ceci est à son architecture faisant appel à une Machine Virtuelle (ou VM en anglais: Virtual Machine).
*Cette dernière partie est, sans doutes, la plus connue du grand public. Elle constitue cette fois l'environnement d'exécution d'un programme développé. C'est à dire qu'un fois créé et compilé (voir plus loin), une application écrite en java ne peut s'exécuter seule sur un ordinateur, mais nécessite un ''environnement d'exécution''. Il se nomme le '''Java Runtime Environment''' (ou JRE). Ce dernier est nécessaire à l'utilisation d'un programme Java. C'est le JRE qui contient la '''Java Virtual Machine''' (JVM).


==Java Virtual Machine==
==Java Virtual Machine==
Si l'on devait résumer deux mondes concernant l'exécution d'un programme informatique, on pourrait les décrire comme suit:
Si l'on devait résumer deux mondes concernant l'exécution d'un programme informatique, on pourrait les décrires comme suit:


===Programme compilé===
===Programme compilé===
Un programme compilé est une succession de commandes écrites dans un langage informatique, et qui une fois lu par le ''compilateur'' est traduit en un programme directement lisible par le microprocesseur d'un ordinateur. L'ordinateur charge le programme ainsi compilé d'un bloc dans sa mémoire et la machine l'exécute.
Un programme compilé est une succession de commandes écrites dans un langage informatique, et qui, une fois lues par le ''compilateur'' est traduit en un programme directement lisible par le microprocesseur (CPU) d'un ordinateur. L'ordinateur charge le programme ainsi compilé d'un bloc dans sa mémoire et il l'exécute.
* Avantage: l'exécution d'un tel programme rapide
* Avantage: l'exécution d'un tel programme est rapide
* Désavantage: le programme ne peut être exécuté que sur un seul type de processeur pour qu'un seul type de système d'exploitation. Si l'on veut changer de machine, il faut utiliser un autre compilateur, voir même modifier le programme source.
* Désavantage: le programme ne peut être exécuté que sur un seul type de processeur pour qu'un seul type de système d'exploitation. Si l'on veut changer de machine, il faut utiliser un autre compilateur, voir même, modifier le programme source.
* Exemple: le navigateur Web Safari pour Mac ne peut être installé sur un PC.
Exemple: le navigateur Web ''Safari'' pour Mac ne peut être installé sur un PC.


===Programme interprété===
===Programme interprété===
Un programme interprété possède la caractéristique d'être lu commande par commande par une module d'interprétation (qui est lui-même un programme), et c'est ce module qui va, en fonction de ce qu'il lit, communiquer les commandes au microprocesseur une par une, et non pas d'un seul bloc.
Un programme interprété possède la caractéristique d'avoir sont code source directement lu commande par commande par une module d'interprétation (qui est lui-même un programme), et c'est ce module qui va, en fonction de ce qu'il lit, communiquer les commandes au microprocesseur une par une, et non pas d'un seul bloc.
* Désavantage: l'exécution est plus lente qu'un programme compilé
* Désavantage: l'exécution est plus lente qu'un programme compilé
* Avantage: si on veut changer de plateforme d'exécution, le programme peut rester inchangé, il suffit de changer l'interpréteur. * Exemple: Une page Web est écrite dans un langage (le HTML) et elle est visible sur un PC comme sur un Mac car un navigateur n'est rien d'autre qu'un interpréteur.
* Avantage: si on veut changer de plateforme d'exécution, le programme peut rester inchangé, il suffit de changer l'interpréteur.
Exemple: Une page Web est écrite dans un langage (le HTML) qui est visible sur un PC comme sur un Mac car un navigateur n'est rien d'autre qu'un interpréteur de HTML.


''Et Java dans tout ça?''
===Et Java dans tout ça?===
Ce dernier a une forme hybride. Le programme Java est d'abord pré-compilé, c'est à dire qu'il passe tout de même par une phase de transformation vers un langage proche du processeur (appelé le byte-code) et qui permettra une exécution plus rapide. Le résultat de cette opération produit un code qui est identique pour toutes les plateformes. Arrive ensuite une étape d'interprétation qui va exécuter le programme à proprement parler. C'est cet interpréteur que l'on appelle la Machine Virtuelle. Pourquoi cette méthode?
Ce dernier a une forme hybride. Le programme Java est d'abord pré-compilé, c'est à dire qu'il passe tout de même par une phase de transformation vers un langage proche du processeur (appelé le byte-code) et qui permettra une exécution plus rapide. Le résultat de cette opération produit un code qui est identique pour toutes les plateformes. Arrive ensuite une étape d'interprétation qui va exécuter le programme à proprement parler. C'est cet interpréteur que l'on appelle la Machine Virtuelle. Pourquoi cette méthode?
;Avantages
;Avantages
:Le programme est plus rapide à exécuter car pré-compilé. Donc, avec une phase d'interprétation plus rapide.
:Le programme est plus rapide à exécuter car pré-compilé. Donc, avec une phase d'interprétation plus rapide.
:Le byte-code est identique sur tous les ordinateurs, il suffit que celui-ci intègre un environnement d'exécution Java (JVM: Java Virtual Machine) et le programme s'exécutera sur n'importe quel plateforme.
:Le byte-code est identique sur tous les ordinateurs, il suffit que celui-ci intègre une JVM et le programme s'exécutera sur n'importe quel plateforme.


C'est pour cela que l'on retrouve des applications écrites en Java sur PC, Mac ainsi que sur téléphone portable ou encore PDA.
On trouve des applications écrites en Java sur PC, Mac, Linux ainsi que sur téléphone portable ou encore PDA, pour autant qu'il integrent des JVM.


Fondamentalement, une JVM est un programme (compilé) qui prendra en charge le byte-code et simule un environnement d'exécution hardware. C'est comme si le code java précompilé s'exécutait sur un ordinateur physiquement présent. C'est pour cela que ce programme se nomme une "machine virtuelle".
Fondamentalement, une JVM est un programme qui prend en charge le byte-code et simule un environnement d'exécution hardware. C'est comme si le code java précompilé s'exécutait sur un ordinateur physiquement présent. C'est pour cela que ce programme se nomme une "machine virtuelle" (cf [http://fr.wikipedia.org/wiki/%C3%89mulation Emulation]).


==Paradigme objet==
==Paradigme objet==
Le paradigme objet se place assez tôt dans l'histoire de l'informatique et paradoxalement tard dans le monde du développement commercial. Simula (~1960), considéré comme le premier langage objet, avais la prétention de "simuler" le mode de pensée humain pour résoudre un problème sous forme d'algorithme informatique..
En effet, si on considère grossièrement le raisonnement humain, on constate qu'il est plus enclin à schématiser un ensemble d'éléments d'un [http://www.daskoo.org/377-theorie-elementaire-des-ensembles.cours univers]), qu'à échafauder des algorithmes [http://fr.wikipedia.org/wiki/Programmation_proc%C3%A9durale linéaires].


Or, c'est le propre du mode de pensée objet. Philosophiquement, il ne fait pas appel à la thèse de Pascal (tout problème peut se décomposer en une somme finie de sous problèmes), mais plutôt à la manière d'Aristote qui définit un "objet" comme un ensemble d' '''attributs''' (un caillou a telle taille, tel poids, telle forme, telle couleur, etc.) et des '''méthodes''' pour modifier ces attributs.  
Le paradigme objet se place assez tôt dans l'histoire de l'informatique et paradoxalement tard dans le monde du développement commercial. Simula (~1960), considéré comme un précurseur, avait la prétention de "simuler" le mode de pensée humain pour résoudre un problème sous forme d'algorithme informatique.
En effet, si on considère grossièrement le raisonnement humain, on constate qu'il est plus enclin à schématiser un ensemble d'éléments d'un [http://www.daskoo.org/377-theorie-elementaire-des-ensembles.cours univers], qu'à échafauder des algorithmes [http://fr.wikipedia.org/wiki/Programmation_proc%C3%A9durale linéaires].
 
Ces éléments sont les objets qui sont en fait des représentations (modèles) de concepts abstraits ou physiques. La programmation orientée objet offre donc un language pour décrire ces objets et leurs relations. Celle-ci permet de réaliser les fonctionnalités attendues, de résoudre des problèmes.


Pour finir, on peut dire que cette théorie place la résolution d'un problème au niveau d'une interaction entre les objets plutôt que d'une séquence de tâches à effectuer dans un certain ordre.
Exemple: pour chauffer de l'eau, on a une plaque électrique et une bouilloire et on suit une marche à suivre. La programmation procédurale ne s'occupe que de la marche à suivre, alors que la programmation orientée objet (POO), ne dissocie pas les objets de ce qu'ils sont capable de faire.


C'est le propre du mode de pensée "objet". Philosophiquement, il ne fait pas appel à la thèse de Pascal (tout problème peut se décomposer en une somme finie de sous problèmes), mais plutôt à la manière d'Aristote qui définit un "objet" comme un ensemble d' '''attributs''' (un caillou a une taille, un poids, une forme, une couleur, etc.) et des '''méthodes''' pour modifier ces attributs ('''casser''' un caillou modifie son poids, sa taille et sa forme par exemple).


===Avantages de ce système===
Dans l'absolu, pour de petits systèmes, l'approche objet n'apporte pas d'avantages significatifs. Cependant, si on considère la notion d' '''héritage''' propre cette méthode, la programmation objet va offrir à son utilisateur un monde que les autres langage (non objets) n'ont pas.


En effet, la possibilité de faire hériter les objets entre eux de leurs caractéristiques va permettre une réutilisation du code qui rendra tout développement futur plus rapide.
== Bibliographie ==


===Exemple===
* Eckel, Bruce (2004). [http://mindview.net/Books/TIJ4 Thinking in Java, 4th edition]. An older version is free [http://www.mindview.net/Books/TIJ/ Free Electronic Book: Thinking in Java, 3rd Edition]
...


[[Utilisateur:Roberto_R|Roberto R]]
[[Category: Programmation]]

Dernière version du 8 avril 2011 à 18:19

Introduction

Le Java est un langage de programmation orienté objet développé par Sun Microsystems (Sun) au début des années 1990. L'article qui suit est traité de manière non approfondie et est destiné à être lu par des non spécialistes.

Java a de multiples particularités. La première d'entre elle se situe dans son mode de distribution, car en effet, son code source est accessible en Open Source. De plus, son accès est libre et gratuit. (Attention à l'amalgame, Open Source ne veut pas forcément dire gratuit, ici pour plus d'infos).

L'autre aspect est celui d'être multi-plateforme, c'est à dire que les programmes écrits en java peuvent s'exécuter de la même manière sur une plateforme Windows, MacOS, Linux ou Solaris. Ceci est dû à son architecture faisant appel à une Machine Virtuelle (ou VM en anglais: Virtual Machine).

Historique

A l'origine, le projet Green de Sun Microsystems fonde les bases d'un langage orienté objet ayant comme particularité d'être multi-plateforme. Mais le projet est abandonné faute d'applications. Peu de temps après, Netscape cherche une technologie pour rendre les pages Web un peu plus attrayantes et dynamiques. Sun ressort son projet des cartons et lance Java avec ses fameuses Applets, petits programmes informatiques créés pour être directement exécutés à l'intérieur d'une page Web.

Comme on le sait, Internet (1969) connaît alors un essor incroyable grâce au Web (~1990 [1]), et tiré par cette ascension, Java a le même succès.

Java et son environnement

Malheureusement, le Java ne désigne pas un concept précis propre à une application. En fait, on peut le décomposer en trois parties.

  • L'une d'elle désigne le langage de programmation en tant que moyen de communication entre un être humain et un ordinateur et permettant le codage d'un programme informatique, appelé code source. Comme autres langages, on pourrait citer, entre autre, le BASIC, le PASCAL, le C et son évolution, le C++, le COBOL, le FORTRAN. Comme tous les langages, il possède sa structure, sa grammaire et sa syntaxe. Elle est proche de la famille de C/C++

En voici un exemple:

public class Connection{
     private String protocole = "http://"
     private int port = 80;
     private String server = "tecfa.unige.ch";
 
     public String getUrl(){
           return protocole+server+":"+port;
     }
}
  • Le deuxième aspect du Java consiste plutôt en un ensemble d'outils pour permettre le traitement du code source. Pour cela, le programmeur a besoin d'un ensemble de petits outils (déjà créés, et par forcément en Java) que Sun, le concepteur du langage, dénomme le Java Development Kit (ou JDK). Il va permettre de transformer (par compilation) le code source en un programme final qui sera exécuté par l'ordinateur. Cependant, pour exécuter le programme ainsi conçu, il est nécessaire d'avoir une troisième partie décrite ci-dessous.
  • Cette dernière partie est, sans doutes, la plus connue du grand public. Elle constitue cette fois l'environnement d'exécution d'un programme développé. C'est à dire qu'un fois créé et compilé (voir plus loin), une application écrite en java ne peut s'exécuter seule sur un ordinateur, mais nécessite un environnement d'exécution. Il se nomme le Java Runtime Environment (ou JRE). Ce dernier est nécessaire à l'utilisation d'un programme Java. C'est le JRE qui contient la Java Virtual Machine (JVM).

Java Virtual Machine

Si l'on devait résumer deux mondes concernant l'exécution d'un programme informatique, on pourrait les décrires comme suit:

Programme compilé

Un programme compilé est une succession de commandes écrites dans un langage informatique, et qui, une fois lues par le compilateur est traduit en un programme directement lisible par le microprocesseur (CPU) d'un ordinateur. L'ordinateur charge le programme ainsi compilé d'un bloc dans sa mémoire et il l'exécute.

  • Avantage: l'exécution d'un tel programme est rapide
  • Désavantage: le programme ne peut être exécuté que sur un seul type de processeur pour qu'un seul type de système d'exploitation. Si l'on veut changer de machine, il faut utiliser un autre compilateur, voir même, modifier le programme source.

Exemple: le navigateur Web Safari pour Mac ne peut être installé sur un PC.

Programme interprété

Un programme interprété possède la caractéristique d'avoir sont code source directement lu commande par commande par une module d'interprétation (qui est lui-même un programme), et c'est ce module qui va, en fonction de ce qu'il lit, communiquer les commandes au microprocesseur une par une, et non pas d'un seul bloc.

  • Désavantage: l'exécution est plus lente qu'un programme compilé
  • Avantage: si on veut changer de plateforme d'exécution, le programme peut rester inchangé, il suffit de changer l'interpréteur.

Exemple: Une page Web est écrite dans un langage (le HTML) qui est visible sur un PC comme sur un Mac car un navigateur n'est rien d'autre qu'un interpréteur de HTML.

Et Java dans tout ça?

Ce dernier a une forme hybride. Le programme Java est d'abord pré-compilé, c'est à dire qu'il passe tout de même par une phase de transformation vers un langage proche du processeur (appelé le byte-code) et qui permettra une exécution plus rapide. Le résultat de cette opération produit un code qui est identique pour toutes les plateformes. Arrive ensuite une étape d'interprétation qui va exécuter le programme à proprement parler. C'est cet interpréteur que l'on appelle la Machine Virtuelle. Pourquoi cette méthode?

Avantages
Le programme est plus rapide à exécuter car pré-compilé. Donc, avec une phase d'interprétation plus rapide.
Le byte-code est identique sur tous les ordinateurs, il suffit que celui-ci intègre une JVM et le programme s'exécutera sur n'importe quel plateforme.

On trouve des applications écrites en Java sur PC, Mac, Linux ainsi que sur téléphone portable ou encore PDA, pour autant qu'il integrent des JVM.

Fondamentalement, une JVM est un programme qui prend en charge le byte-code et simule un environnement d'exécution hardware. C'est comme si le code java précompilé s'exécutait sur un ordinateur physiquement présent. C'est pour cela que ce programme se nomme une "machine virtuelle" (cf Emulation).

Paradigme objet

Le paradigme objet se place assez tôt dans l'histoire de l'informatique et paradoxalement tard dans le monde du développement commercial. Simula (~1960), considéré comme un précurseur, avait la prétention de "simuler" le mode de pensée humain pour résoudre un problème sous forme d'algorithme informatique. En effet, si on considère grossièrement le raisonnement humain, on constate qu'il est plus enclin à schématiser un ensemble d'éléments d'un univers, qu'à échafauder des algorithmes linéaires.

Ces éléments sont les objets qui sont en fait des représentations (modèles) de concepts abstraits ou physiques. La programmation orientée objet offre donc un language pour décrire ces objets et leurs relations. Celle-ci permet de réaliser les fonctionnalités attendues, de résoudre des problèmes.

Exemple: pour chauffer de l'eau, on a une plaque électrique et une bouilloire et on suit une marche à suivre. La programmation procédurale ne s'occupe que de la marche à suivre, alors que la programmation orientée objet (POO), ne dissocie pas les objets de ce qu'ils sont capable de faire.

C'est le propre du mode de pensée "objet". Philosophiquement, il ne fait pas appel à la thèse de Pascal (tout problème peut se décomposer en une somme finie de sous problèmes), mais plutôt à la manière d'Aristote qui définit un "objet" comme un ensemble d' attributs (un caillou a une taille, un poids, une forme, une couleur, etc.) et des méthodes pour modifier ces attributs (casser un caillou modifie son poids, sa taille et sa forme par exemple).


Bibliographie