• Aucun résultat trouvé

[PDF] Cours programmation Objet comment ca marche | Cours java

N/A
N/A
Protected

Academic year: 2021

Partager "[PDF] Cours programmation Objet comment ca marche | Cours java"

Copied!
365
0
0

Texte intégral

(1)

- IUT ST MALO/ JJ MONTOIS - 1

version 1ier septembre 2006

version 1ier septembre 2006

-

INFORMATIQUE 2

ème

A

-

PROGRAMMATION OBJET

Langage JAVA – IHM - THREAD – APPLET - MIDLET

Fascicule N°1

[Modules I5, I6]

- Où sont les hommes? reprit enfin le petit Prince. On est un

peu seul dans le désert …

- On est seul aussi chez les hommes, dit le serpent. …

« Le petit Prince – Antoine de Saint Exupéry » Jean-Jacques Montois

Professeur des Universités - Rennes1 jean-jacques.montois@univ-rennes1.fr

(2)

- IUT ST MALO/ JJ MONTOIS - 2

0. Informations diverses avant de prendre … la route

Diapositive 3

1. Généralités sur la technologie JAVA

Diapositive 18

2. Outillages d’édition-compilation-exécution du code JAVA

Diapositive 44

3. les classes , les objets, -1ères notions-

Diapositive 60

4. Langage JAVA . Les bases …

Diapositive 76

5. Les entrées et sorties standards de base – clavier, écran

Diapositive 135

6. Les classes et objets -Notions avancées-

Diapositive 147

7. Parlons de familles de classes … sous JAVA

Diapositive 189

8. Les exceptions sous JAVA

Diapositive 206

9. Les Interfaces sous JAVA

Diapositive 219

10. Les FLUX (STREAM) sous JAVA

Diapositive 227

11. La programmation concurrente sous JAVA – Les Thread

Diapositive 263

12. La programmation d’Interface Homme-Machine (IHM)

Diapositive 298

13. La programmation de codes téléchargeables. APPLETs

Diapositive 321

14. -Les MIDlets- L’écriture de codes mobiles. Plateformes J2ME

TM

& Matériels légers mobiles

Diapositive 354

(3)

- IUT ST MALO/ JJ MONTOIS - 3

-0-Informations diverses avant

de prendre … la route

(4)

- IUT ST MALO/ JJ MONTOIS - 4

Avertissement:

Le document que vous avez entre les mains a été rédigé dans l'objectif d’un cours java « projeté» sur écran, et dispensé à des étudiants présents en amphi. En aucun cas, ce simple « powerpoint » ne se substitue à un ouvrage exhaustif dont vous pouvez trouver de bons exemples ci-dessous ou sur INTERNET. Le but est de faciliter le travail des étudiants en fournissant un support visuel, et écrit sous forme de slides que peut suivre séquentiellement l’enseignant. L’étudiant doit personnaliser son cours en prenant des NOTES (j’insiste!) Pour illustrer certains points, quelques passages ont été empruntés chez SUN ou parfois chez certains auteurs dont les productions ont été déposées sur le WEB, ou en librairie, et dont je donne les références ci-après. Pour des raisons de copyright, il est interdit sans autorisation, de les utiliser sous quelques manières que ce soient (copie, re-engineering, …) dans une intention lucrative, par exemple la rédaction d'un ouvrage en vue d'une vente, ou une formation JAVA dans le cadre d'un stage payant. En cas de manquement à ce conseil, le lecteur étant averti, l'auteur du document « Programmation objet » -votre serviteur- se dégage de toutes responsabilités quant aux conséquences. En cas d’usage universitaire par un collègue, s’il a un moment, qu’il m’en avertisse seulement: (jean-jacques.montois@univ-rennes1.fr).

Références bibliographiques:

SUN Microsystème,

java.sun.com

DIP Genève, Alexandre Maret & Jacques Guyot

G. Falquet - Université de Genève 1 –Cours JAVA

P. Ducrot - ENSI de Caen – Cours JAVA

"Introduction à la programmation objet" par J. Brondeau, Ed: Dunod

"Programmation JAVA" par JF Macary, Ed: Eyrolles

Cours en ligne de

Bruno Kostrzewa Prof. de Maths au Lycée Faidherbe

"JAVA" par M. Morisson & al. Ed: S&SM

"Le livre de JAVA premier langage" par A. Tasso, Ed: Eyrolles

"du C/C++ à JAVA" par E. Puybaret, cours web payant sur www.eteks.com, et un ouvrage

Le must!!

Excellent … Excellent …

(5)

- IUT ST MALO/ JJ MONTOIS - 5 L'erreur est humaine, mais pardonner est hors des capacités du système d'exploitation

Proverbe informatique

«Si vous ne pouvez le faire bien, rendez le beau.» Bill  Gates, PDG et fondateur de Microsoft.

[A quel produit Microsoft pensait-il Bill?]

«J'ai toujours rêvé d'un ordinateur qui soit aussi facile à utiliser qu'un téléphone. Mon rêve s'est réalisé. Je ne sais plus comment utiliser mon téléphone.»

Bjarne Stroustrup, auteur du langage C++

Quelques sentences pour la route …

Bonnes résolutions … mutuelles!

« La machine a gagné l’homme, l’homme s’est fait machine, fonctionne et ne vit plus »

(6)

- IUT ST MALO/ JJ MONTOIS - 6

Il m’est difficile, de résister au plaisir de citer dans cet humble cours de java, les célèbres préceptes du non moins célèbre “discours de la méthode”, formulés par notre grand philosophe logicien français, René Descartes. De mon avis, Descartes exprime dans les quatre règles qu’il énonce, l’attitude intellectuelle d’un informaticien face à l’élaboration d’un projet informatique (...et bien d’autres sciences !). J’ose même imaginer que le fameux langage PASCAL à la base de la programmation structurée, eusse pu se nommer le “langage DESCARTES” eut égard aux concepts de la logique du raisonnement, avancés par Descartes; - “cogito ergo sum” - affirmation logique s’il en est! Il eut été justice d’associer son nom à la technologie informatique dans la mesure où Pascal possède déjà un “triangle”, un “pari”, et une machine arithmétique. Voyons ces fameuses règles …

... je crus que j’aurais assez des quatre [préceptes] suivants, pourvu que je prisse une ferme et constante résolution de ne manquer pas une seule fois à les observer:

Le premier était de ne recevoir jamais aucune chose pour vraie que je ne la connusse évidemment être telle: c’est à dire, d’éviter soigneusement la précipitation, et la prévention, et de ne comprendre rien de plus en mes jugements, que ce qui se présenterait si clairement et si distinctement à mon esprit que je n’eusse aucune occasion de le mettre en doute.

Le second, de diviser chacune des difficultés que j’examinerais en autant de parcelles qu’il se pourrait, et qu’il serait requis pour mieux les résoudre.

Le troisième, de conduire par ordre mes pensées, en commençant par les objets les plus simples et les plus aisés à connaître, pour monter peu à peu comme par degrés jusqu’à la connaissance des plus composés: et supposant même de l’ordre entre ceux qui ne se précèdent point naturellement les uns les autres.

Et le dernier, de faire des dénombrements si entiers et des revues si générales que je fusse assuré de ne rien omettre.

Ainsi, les principes généraux des langages objets et structurés apparaissent complètement dans ces 4 préceptes !

P'tite histoire : savez-vous de quoi est mort le grand René Descartes? non? Et bien à cause de

la Reine Christine de Suède! Celle-ci avait un goût prononcé pour l'étude des mathématiques la nuit dans son château (à chacun ses fantasmes). Le château n’étant évidemment pas chauffé au fuel ou à l’électricité, Brrr! Elle faisait lever notre brave René (alors à son service; faut bien boulotter !) pour lui fournir la quintessence de son brillant esprit. A ce régime, Descartes finit par attraper une bonne fluxion de poitrine, que l'on guérissait en Suède en appliquant ... de la neige sur la poitrine! Combattre le mal par le mal (véridique! Georges Boole est mort de la même façon. Sa femme usait du même moyen. A croire que la logique mène toujours au 0 ... degré!)

Digressions philosophiques ...

Ouais, et en plus la cuisine suédoise fumée, on s’en lasse.

(7)

- IUT ST MALO/ JJ MONTOIS - 7

Attitudes, et comportements du bon programmeur …

Curieux –

Attachez vous à mieux connaître votre environnement de travail. N’hésitez pas à surfer dans les répertoires système afin de mieux connaître la structure hiérarchique du système de fichiers, ouvrir les fichiers qui s’y trouvent pour en apprécier leur contenu (sans les modifier!), lire les fichiers *.h, *.lib, *.doc, … Une règle cependant: ne jamais altérer les informations visionnées. Retenez, en informatique, la curiosité n’est pas un vilain défaut, c’est une excellente qualité! Ah, j’oubliais, repérez un cador en info, ces passionnés dont les yeux brillent dès qu’on prononce if-then-else. Tachez de devenir copain, c’est sûr, il mettra un point d’honneur à répondre à vos interrogations!

Précis –

La programmation requiert une précision diabolique: là où il faut un point virgule, n’écrivez pas une virgule, et quand bien même vous recompileriez sans cesse votre source jusqu’à la fin des temps, l’ordinateur vous répondra invariablement : « Error: Invalid Descriptor » ou autre injure incompréhensible. Souvenez-vous, il est plus têtu que vous, il ignore le temps qui s’écoule, vous non!

Méthodique -

C’est pas grave si vous êtes d’un naturel désordonné, vous aimez «répartir vos affaires », d’autres ont la manie de tout ranger, chacun sa façon de vivre. Soyons tolérant. Mais en programmation point de fantaisie, pratiquez l’ordre et la méthode , et puis relisez les 4 règles de Descartes dans le « discours de la Méthode » pour vous forger une ligne de conduite.

Persévérant, pugnace-

« 100 fois sur le métier il faut remettre l’ouvrage … ». Si le

programme ne fonctionne pas, prenez du recul, «laisse béton», aller prendre un verre avec un pote à la « Caravelle » (après les cours, of course), parlez de tous et de rien, dégagez vous l’esprit, et reprenez le lendemain votre programme; vous verrez, c’est souverain. « fiat lux »!

Autonome-

ne comptez que sur vous-même pour résoudre les mystères d’un programme qui ne veut point fonctionner malgré vos efforts durant 4h de TP; et surtout éviter les conseils des messieurs YAKA-FAUCON, « j’sais-tout , sur tous ». Souvenez-vous des vers de La Fontaine

« S’agit-il d’un conse« S’agit-il? La Cour en conse« S’agit-illers foisonne; faut-« S’agit-il exécuter, on ne trouve plus personne ». Vous

pouvez aussi solliciter l’aide d’un prof, on ne sait jamais, il peut trouver le bug!

Cool-

face à un programme récalcitrant; surtout pas de « gros mots » (enfin pas de manière trop sonore, et seulement le mot de Cambronne; … c’est être patriote!!), et ne cassez pas l’ordinateur en tapant dessus, il n’y est pour rien!! Quoique … ?

Non-conformiste

Habillez-vous comme vous le sentez, venez à mes cours en kilt écossais, en indien cheyenne, ou en bure de moine si çà vous chante (ma préférence va au chapeau à plumes, perruque, pourpoint et rhingrave), mais surtout, respectez les standards informatiques, et les règles de l’écriture de programme, sinon aucune chance que votre soft fonctionne avec d’autres.

Bjarne Stroustrup, créateur du C++, en plein travail …

(8)

- IUT ST MALO/ JJ MONTOIS - 8 Jadis, les hommes édifièrent une tour à Babel city. Ils firent monter du parpaing le

plus haut possible afin de montrer leur force et leur grandeur (genre tour Montparnasse, ou World Trade Center - Enfin, ce qu’il en reste -, mais vraiment en plus grand !). Dieu voyant cela, décida de punir l’orgueil des hommes en leur imposant l’usage de très très nombreux langages et dialectes afin de semer la confusion et faire voir ainsi qui était le maître (non mais!). « … tous les habitants de la terre parlaient encore la même langue. Ils voulurent construire tous ensemble une ville et une tour dont le sommet atteindrait les cieux. Alors Dieu, ne voulant pas les foudroyer, confondit leurs langages pour qu'ils ne puissent plus continuer de parler et travailler ensemble. Ils cessèrent de bâtir leur tour, qui s'écroula, se séparèrent, et se dispersèrent.

C'est ainsi que sont nés les différents langages … » [Bible]

Ainsi, aujourd’hui pour écrire nos programmes, nous utilisons des tas de langages (C, C++, C#, Perl C, JAVA, PASCAL, Eiffel, ADA, fortran, lisp, basic, PHP, JSP, XML, HTML, …), des tas de protocoles de communication (TCP/IP, NETBEUI, IPX, ..) [environ 600 langages recensés; quand aux protocoles de communications, on ne les dénombre plus!].

Or les langages assembleur(s), basic, fortran, cobol, ada, pascal, c, c++, java, lisp, prolog, etc etc sont bien sûr tous incompatibles les uns des autres. Ainsi, Dieu, 1ier programmeur système de l'Univers, n’avait pas oublié l’informatique future! «Progranticipation » divine. Et depuis 70 ans, l’homme continue fébrilement, frénétiquement, pathétiquement à construire moult idiomes informatiques, et pérenniser ainsi la malédiction divine …

Mont a ra mat? Me zo plijet gant ho daoulagad …

Oh Yes, it’s a Pentium-M with centrino label!

Dialogues non compatibles …

(9)

- IUT ST MALO/ JJ MONTOIS - 9

Trois géants! Ils ont contribué aux fondations de l’informatique. Retenez ces noms, ces visages, ils ont eu chacun un destin grandiose et une fin ... misérable, tragique. Harcelés, frappés par la bêtise humaine,

surtout lorsqu’elle agit en meute bien-pensante, fraternelle disent-ils, et se réfugie, derrière la «normalité» grégaire,intolérante de leur Vérité! Pourtant ces personnalités appartiennent à ces magnifiques «locomotives» qui tirent l’humanité, à ces héros de la pensée constamment conspués, décriés, mais en définitive … immortels! Albert Einstein disait souvent: « Il y a 2 choses d’infini: l’Univers, et la bêtise humaine; quoique je n’ai pas

encore acquis une certitude absolue pour …l’Univers!»

Adélaïde of Byron (Ada pour les intimes) [1816-1852], fille du poète romantique anglais Lord Byron ( ses poésies

exaltent le héros rebelle). Ada était membre de la « jet society » anglaise et épouse du Comte of Lovelace de 30 ans son aîné. Egérie du savant Lord Babagge (inventeur de la machine analytique), elle attacha son nom à des études sur les systèmes de traitement automatique des données. Ada formula, la première, les concepts théoriques de la programmation qu’elle appliqua à la « machine analytique » de Babagge. Le grand Von Neumann devait se souvenir de cela quand il mit au point sa propre architecture informatique en ... 1949. Ada est considérée comme le 1ier programmeur. Du fait d’un comportement non conforme aux usages de la société puritaine de l’époque («dilapidation» de son patrimoine pour soutenir ses recherches, adultère, jeu, dettes, mépris des crétins importants, ...), Ada fut internée dans un asile sur la demande de sa mère, la redoutable lady Noll Byron (femme d’une grande culture), jusqu’à la fin de son existence (1852) où elle mourut d’un cancer dans des conditions particulièrement atroces, d’abandon, de dénuement, sans aucune compassion! Destin et fin tragique à rapprocher de celui de Camille Claudel, elle même égérie du sculpteur Rodin, et morte exactement dans les mêmes conditions misérables, implorant son intransigeante mère. Décidément, à cette époque, il ne faisait pas bon pour une femme d’être libre comme un … homme! [Très belle exposition de Camille Claudel à Dinan automne 2005, musée des Jacobins]. Le monde scientifique lui a rendu cependant hommage en donnant son prénom (ADA) au meilleur langage de programmation qui soit. Noter l’étrange destinée du père et de la fille morts tous deux à 36 ans dans des conditions violentes.

L’anglais Alan Turing, professeur au King’ collège responsable durant la seconde guerre mondiale du bureau du chiffre. Mathématicien surdoué, à 24 ans il apporte une contribution décisive aux fondements logiques de l’informatique. Il définit les principes théoriques des « machines logiques ». Il donne une réponse « mécanique » au problème de la décidabilité énoncé par le grand Hilbert. Grâce à lui, les messages codés par la machine de cryptage : ENIGMA en usage dans la marine allemande étaient régulièrement déchiffrés. Incontestablement Turing a permis d’écourter la durée du conflit économisant ainsi des centaines de milliers de vies. Le véritable vainqueur de la bataille de l’atlantique, c’est lui ! On lui doit aussi les premières recherches sur l’intelligence artificielle. Personnage farfelu, imprévisible, trop brillant et ... homosexuel. Pour cette dernière raison, il fut mis à l’index, mis à l’écart et condamné par la justice anglaise à suivre un dur traitement hormonal ou bien être incarcéré. Turing choisit le traitement médical qui transforma quelque peu son apparence masculine. Un beau jour Alan finit par croquer une pomme qu’il avait enduit de cyanure (il aimait bien les pommes, et … blanche-neige qui représentait pour lui le symbole de la pureté). C’était sa manière de dire tchao à cette société qui l’avait si mal remercié ! Son destin est à rapprocher de celui d’Oscar Wilde.

(10)

- IUT ST MALO/ JJ MONTOIS - 10

Evariste Galois [1811-1832]; personnage balzacien à la Julien Sorel, ou Rastignac. Il fut l’un des plus grands

mathématiciens de tous les temps, sinon le plus prodigieux. Ses travaux ont révolutionné les mathématiques; ils sont directement à l’origine de la cryptographie en informatique, de la théorie de l’organisation des structures

cristallines (utile pour Pierre-Gilles Degenne, prix Nobel pour la découverte des cristaux liquides. Pensez à Evariste lorsque vous regardez l’écran LCD de votre portable); récemment, Andrew Wiles a pu bénéficier des travaux de Galois pour résoudre l’un des plus fameux problème mathématique: le grand théorème de Fermat. Il découvre les mathématiques à 15 ans, et meurt dans un duel stupide à 20 ans à cause « d’une infâme coquette … ». Jeunesse difficile, dont le père adoré, maire de Bourg-La-Reine s’est suicidé suite à une campagne venimeuse de diffamation. E. Galois, personnalité tourmentée, alternant entre des actions politiques [républicain passionné, il se jette dans la mêlée politique. Lors de la période des « 3 glorieuses » de juillet 1830, il monte sur les barricades parisiennes pour défendre la Liberté, et le droit de vote sérieusement écornée par Charles X ], et des travaux mathématiques ponctués souvent par des séjours dans les prisons de St Pélagie, ou de la Force conséquemment à ses activités politiques, harcelé par la police secrète de Charles X. Mathématicien parfaitement incompris, souvent combattu avec hargne, l’audace des ses idées fait peur, il est trop en avance des perceptions de son temps, son approche est trop inductive. Il est, entre autre, l’inventeur de la théorie des groupes, qu’il applique à la résolution d’un des plus grands problèmes mathématiques irrésolus: La résolubilité des équations algébriques de degré N par l’étude des groupes de permutations issus des fonctions symétriques des racines. Les nombreux mémoires (rédigés à la plume d’oie) qu’il soumet à l’académie ou qu’il adresse aux grands mathématiciens de l’époque (Poisson, Cauchy, Fourier, …) sont soit égarés, soit négligés car incompréhensibles. Parfois méprisé, voire conspué par les sociétés savantes; on l’accuse même de plagiat des travaux du jeune mathématicien Abel (mort de tuberculose à 25 ans, misérablement, et dans le dénuement) qui travaillait aussi sur les équations algébriques. Refusé par 2 fois à l’entrée de polytechnique, en effet l’examinateur Mr Binet comprend mal les réponses d’Evariste, ce dernier excédé finit par lui lancer l’éponge à la figure « Voici, monsieur, ma réponse à votre question! », et il sort en claquant la porte . L’année suivante, il est exclu de la toute nouvelle école normale supérieure, toujours pour insubordination, et activité politique subversives. En effet, tandis que le Directeur pro-Charles X consigne ses condisciples dans l’enceinte de l’école afin qu’ils ne participent pas aux 3 jours d’émeutes qui allaient devenir les … « 3 glorieuses », Evariste fait le mur de l’école pour prendre part à ses journées historiques en tant que membre de la garde nationale. A 20 ans, Evariste découvre l’amour, non partagé, avec Stéphanie Poterin du Motel –une coquette- qui le conduit presque aussitôt à la mort lors d’un duel imbécile un matin de mai 1832, aux étangs de la Glacière à Paris. Abandonné par ses témoins sur le lieu de l’affrontement, il agonisera 24h presque sans soutien à l’hôpital Cochin, et le 31 Mai 1832, le monde perd l’un des esprits les plus prodigieux de tous les temps. Il sera enterré à la fosse commune du cimetière du MontParnasse (comme Mozart, étrange similarité de destin pour 2 esprits jumeaux: géniaux, rebelles, jeunes, et tourmentés). Fidèle à son esprit rebelle, la nuit précédant son duel, au lieu de s’entraîner au pistolet, ou tout au moins de dormir, Evariste préfère reconstituer l’essentiel de ses travaux égarés. Il se savait condamné, mais avait conscience de l’importance de ses Recherches pour l’Humanité. Il a donc résumé en quelques heures, dans le silence de sa petite chambre-logement, à la lumière vacillante de la bougie, l’essentiel de ses idées. Il faudra 50 ans pour que l’on comprenne enfin l’immense intérêt de ce testament scientifique légué à l’Homme. A mesure que l’aube pointe, le crissement de la plume se fait plus rapide, Evariste sait qu’il n’a plus le temps de préciser certains résultats «je n’ai pas le temps, je n’ai pas le temps, … », «le lecteur démontrera lui-même … » écrit-il. Parfois, Evariste s’insurge, et griffonne rageusement dans la marge du mémoire-testament « Liberté, égalité, fraternité, ou la mort … ». Le jour pointe à travers la petite fenêtre de sa chambre, Evariste fatigué range ses papiers, rédige à son frères ses dernières recommandations, enfile sa redingote, et tel un héros romantique, part vers son destin … Citoyen

étudiant, lorsque tu votes, aie une pensée pour le malheureux Galois et ses compagnons républicains qui t’ont permis de faire ce geste! Quidam, lorsque tu tapotes le clavier de ton téléphone, de ton ordinateur, que tu surfes sur le WEB, pense à Evariste associé à l’avènement de ces technologies!

Dernière nuit, derniers écrits …

(11)

- IUT ST MALO/ JJ MONTOIS - 11

C’est par moi que tout commence comme concepteur du langage C :

Dennis RITCHIE

Moi, j’ai continué avec le C++ :

Bjarne Stroustrup

Moi, j’ai innové avec java, proche du C++ :

James Gosling

Les responsables de ce qui vous arrive aujourd’hui …

Moi, c’est surtout le concept GNU (et plein d’autres choses: emacs, gcc …) qui vous permet d’utiliser plein

de freeware, notamment linux, … : Richard Stalmann

Là, sur la photo, c’est ma période mystique, Woodstock,Katmandou. ( Non, non, je n’ai pas de lien de parenté avec Lui ! )

Là, je réfléchis à mon programme

C++

(12)

- IUT ST MALO/ JJ MONTOIS - 12

Représenter directement les entités du monde réel dans les environnements

informatiques, sans nécessité de les déformer ou de les décomposer.

Réutiliser et étendre les logiciels existants, à partir de bibliothèques spécialisables,

et modifiables

Facilités de prototypage rapide des applications sans créer le corps des procédures.

Facilités d'exploitation du parallélisme pour la mise en oeuvre de structures

multiprocesseur;

Faciliter la conception d'interfaces homme/machine

Accroître la productivité des développeurs de logiciel.

Pourquoi les langages objet?

(13)

- IUT ST MALO/ JJ MONTOIS - 13 Approche objet:

Associe données et traitements dans une même entité.

Née avec le langage SIMULA, : Dahl O. et Nygaard K. " SIMULA, An Algol based simulation language", ACM, 1966

SIMULA a introduit les concepts de classe

SIMULA est un langage structuré permettant de simuler des processus parallèles

La notion d'abstraction de l'approche objet "types abstraits de données" a été formalisée dans les années 70:

GuttagJ.V, Horowitz E. Musser D., "The design of data type spécifications", in current trends in programming methodology, Prentice Hall, Englewood Cliff, 1977

Liskow B, Zilles S., "Specification techniques for data abstractions", IEEE Transaction on software Engineering, 1975

Un type abstrait se compose d'une interface qui définit la vision offerte aux utilisateurs en termes d'opérations et d'une implémentation en terme de structures de données et d'algorithmes définissant les fonctions.

 Émergence de la programmation objet avec l'apparition de SMALLTALK. Langage développé durant les années 70 au centre de recherche de XEROX (parc de Palo Alto).

 SMALLTALK intègre les technologies d'interaction avec l'utilisateur par icônes, fenêtres et souris. Ces technologies ont servi de base au Macintosh

(14)

- IUT ST MALO/ JJ MONTOIS - 14

SIMULA - construit au départ pour résoudre des problèmes de simulation de processus parallèles  syntaxe proche du langage ALGOL

 permet de définir des classes  héritage simple

 mécanisme des fonctions virtuelles

 classe Echéancier pour gérer des processus déclenchables à des instants précisés. SMALLTALK vise plutôt les applications interactives

 conçu durant les années 70 par Golberg et Kay à Xérox

 gère les concepts d'objet, de classe, d'héritage, d'envoi de messages.  orienté vers la communication homme/machine.

 supporte les notions de polymorphisme

ADA plutôt destiné aux applications multitâche temps réel  Conçu par J. Ichbiah pour le compte du DOD (70)  Langage d'usage général de type PASCAL.

 ADA n'est pas exactement un langage objet.

 Intègre la notion de type abstrait à travers le "paquetage" (package).  Les données, fonctions et procédures peuvent être exportées ou privées.  Intègre des mécanismes multitâches.

(15)

- IUT ST MALO/ JJ MONTOIS - 15

C++

, développé en 80 par Bjarne stroustrup des laboratoires Bell.

 Langage orienté P.O.O

 Extension du langage C; C++ corrige les défauts du C vis à vis du typage.

 C++ à mi-chemin entre un langage structuré (C) et un langage totalement P.O.O (SMALLTALK)

 Concepts de classe, d'héritage, de polymorphisme emprunté à SIMULA.  Le concept de classe généralise le constructeur struct.

 Encapsulation totale ou partielle des données.

 droits d'accès private, public, protected des objets d'une classe.(sur-ensemble orienté objet du langage C).

 Dérivation des classes. héritage multiple  Concept de fonction amie (friend)

 Surdéfinition des fonctions et des opérateurs

 En attendant la normalisation définitive du C++ ANSI, ce sont les publications d' AT&T qui servent de références:

 versions 1.1(86), 1.2(87), 2.0(89), 3.0(91) [version de travail de l'ANSI];  Nouvelles possibilités d' E/S, basées sur la notion de "flux".

 C++ permet de transiter doucement d'une programmation algorithmique (WIRTH) à une programmation P.O.O (préserver le "savoir faire" et l'existant).

(16)

- IUT ST MALO/ JJ MONTOIS - 16

Histoire courte du langage Java et anecdotes

1990 : Naissance du langage Java, appelé initialement Oak (chêne ??).

Langage créé par une équipe de Sun Microsystems, dirigée par James Gosling,

effectuant le développement de concepts sur les logiciels incorporés dans les

appareils électroniques de grande consommation. Contrainte majeure : différentes plateformes et microprocesseurs.

1ère application: un contrôleur de poche interactif pour l'équipement de loisir domestique, destiné aux chaînes de télévision câblées numériques (en 1991!!).

1995: Netscape Communications annonce que leur navigateur va supporter Java, ... Microsoft achète aussi une licence de Java (on ne sait jamais!?).

Anecdote: Le nom Java proviendrait d’une large consommation de café durant le temps de développement du langage …

Les navigateurs Java:

Il est possible de visualiser des applications Java dans un navigateur dans la mesure où celui-ci est compatible Java. Exemple: le navigateur HotJava (développé par Sun). Les navigateurs ci-dessous permettent d’exécuter du code JAVA mobile (applets).

 Internet Explorer  Netscape, …

C’est moi!

(17)

- IUT ST MALO/ JJ MONTOIS - 17

Un peu de terminologies

Un peu de terminologies

1.

1. AppletApplet: Codes JAVA téléchargeables sur des machines clientes à partir d’un serveur WEB (APACHE, …). Ne contient pas de fonction main(), et s’exécute obligatoirement dans l’environnement d’un navigateur compatible JAVA (IE, NETSCAPE, …) intégrant une JVM.

2.

2. MidletMidlet: Codes JAVA téléchargeables à partir d’un serveur de Servlets (TOMCAT, …), sur des dispositifs mobiles (portables, PDA, …) à ressources matérielles limitées. Ne contient pas de fonction main(), et s’exécute obligatoirement dans

l’environnement d’un équipement compatible JAVA intégrant une KVM ou CVM. 3.

3. ServletServlet: Codes stockés sur un serveur et s’exécutant sur la requête d’une machine cliente afin de fournir un service de traitement ou de calcul.

4.

4. JVMJVM: Processeur virtuel, produisant un code « machine » intermédiaire (byte-code) à partir d’un fichier source java. Un interpréteur est ensuite nécessaire afin de convertir et d’exécuter les bytes-code en code assembleur de la machine cible. 5.

5. KVMKVM: Processeur virtuel « très allégé » afin de pouvoir être porté sur des machines embarquées (téléphones cellulaires, PDA, …) aux ressources matérielles limitées.

6.

6. CVMCVM: Processeur virtuel « moyennement allégé » afin de pouvoir être porté sur des machines embarquées aux ressources matérielles relativement limitées.

7.

7. RMIRMI: (Remote Methode Invocation) – API JAVA permettant le développement d’applications distribuées objet 8.

8. JSP, ASPJSP, ASP: (JavaServerpage) - Langages de script, type C (resp. sun, microsoft) permettant de créer des sites web dynamiques. Les scripts sont insérés dans des pages html à l’intérieur des balises <% et %>

9.

9. PHPPHP: Langage de script structuré, inséré dans une page html, exécuté au niveau du serveur, et permet de « dynamiser » la page html en fournissant un ensemble complet de fonctions utiles (mail, …); Remplace avantageusement le code CGI (écrit en C, PERL, …) au niveau des temps d’exécution. Dès que le code PHP est exécuté dans la page html, il ne figure plus dans le source récupéré par la machine client.

10.

10.Socket: Point de connexion réseau (prise réseau) où doit se brancher d’autres machines informatiques afin de pouvoir Socket établir des échanges entre elles.

11.

11.APACHE: Application informatique configurée comme un serveur WEB, et permettant de « uploader » des pages html, wml, APACHE xml, … sur des machines clientes. Des services peuvent être exécutés pour le compte de client sur requêtes PHP, JSP, ASP, CGI, … des applets peuvent être téléchargées sur des machines clientes

12.

12.TOMCAT: Application informatique configurée comme un serveur de servlet, et permettant sur requêtes de machines TOMCAT clientes, d’exécuter des services de traitement et/ou de calcul à partir de code java spécifiques: servlet

(18)

- IUT ST MALO/ JJ MONTOIS - 18

-1-Généralités sur la

technologie JAVA

J’adore la java Ignorantus, ignorantum! il s’agit du langage JAVA, ignares!!

(19)

- IUT ST MALO/ JJ MONTOIS - 19

Java, c'est quoi ?

Java est un langage de programmation orienté objet (POO) créé par Sun. Il permet de

développer des applications client/serveur pour le WEB (RMI, CORBA) et du code mobile (applet, midlet) sur workstations, téléphones cellulaires, PDA, cartes de paiement, …

Un source Java est compilé pour fournir un binaire de type pcode (pseudo code machine).

Les fichiers ainsi compilés peuvent être soit interprétés et exécutés localement; soit chargés via une page HTML dans un navigateur WEB compatible Java (intègre un « plugin » capable d'interpréter le pcode fourni par la page HTML et exécuter le programme java); soit téléchargés dans un dispositif mobile léger (téléphone cellulaire, PDA, …).

Java permet:

De concevoir une application de type objet

De mettre un peu plus de vie dans les pages WEB (html)

De créer une vraie application graphique et interactive au sein d’une page html

 De valider le contenu d’un formulaire sur votre machine avant de l'envoyer au serveur

Où trouver outils et informations sur java ?

Les principales informations concernant JAVA peuvent être trouvées sur le site de Sun. Ce site permet de charger le JDK (Java Development Kit, version J2SE 1.5.0), et la documentation Java.

http://java.sun.com ou ftp://java.sun.com/pub/ http://www.javasoft.com/tutorial/index.html

(20)

- IUT ST MALO/ JJ MONTOIS - 20 JAVA permet le multi-thread

Une application Java peut lancer plusieurs tâches ou processus indépendants qui s'exécutent simultanément. Java intègre un exécutif multitâche permettant d'ordonnancer les "threads".

JAVA est sécurisé

Java a intégré, dès sa conception, plusieurs mécanismes de sécurité visant à rendre les programmes fiables et à éliminer les risques de virus ( vérification du "bytes codes", pas de manipulation de pointeurs, … ). Les écritures sur disque ne sont pas autorisées dans les applets. Le code source n’est pas visible, seul le pcode l’est (*.class). Chaque groupe de classes (local, machine distante) est stocké dans un espace mémoire distinct par le chargeur de classes.

JAVA est simple

Plus simple que le C++, Java n'a pas de pointeurs, source de nombreuses erreurs (mais des références). Il n'intègre ni l'héritage multiple, ni la surcharge d'opérateurs.

JAVA implémente le modèle client-serveur.

Conçu pour les architectures distribuées; intègre la gestion des sockets TCP/IP et URL

Caractéristiques du langage Java (suite)

(21)

- IUT ST MALO/ JJ MONTOIS - 21 JAVA est orienté-objet

Java permet:

L'encapsulation (masquage d'information)

L'héritage (déclarer une nouvelle classe comme extension d'une classe existante),

La liaison dynamique (les appels à une opération ou à n'importe laquelle de ses redéfinitions dans les classes dérivées sont "résolus" au moment de l'exécution, en fonction du type de l'objet concerné).

Une gestion automatique de la mémoire (les objets inutilisés sont désalloués par un système sousjacent, le garbage collector, sans intervention du programmeur)

Une bibliothèque de classes standard très complète. JAVA est indépendant de la machine

Point fort de Java: un source Java compilé donne des bytes-code (opcodes 8 bits et opérandes

de tailles variables ); codes d'un pseudo-assembleur (pcode) d'une machine virtuelle Java (JVM)

lload address ; 22xxxx

ladd; 97

lstore address; 55xxxx

jsr address; 168 xx

Espace d'adressage 32 bits; méthode 32KB max; 256 variables par pile.

L’exécution des bytes-codes nécessite un interpréteur Java simulant une machine virtuelle.

Les logiciels de navigation compatibles Java intègrent un tel interpréteur.

Applications Java, applets, midlets conçues en bytes-codes sont indépendantes de la machine physique.

Quelques instructions

«assembleur» JVM

(22)

- IUT ST MALO/ JJ MONTOIS - 22 JAVA est un langage de classe

Un programme s’écrit en faisant référence directement à la classe principale: class MonProgramme

{

}

La compilation ne donne pas un fichier exécutable: MonProgramme.exe, mais un fichier intermédiaire MonProgramme.class constitué de pcodes

Le pcode doit être transcris et exécuté en codes de la machine informatique utilisée, par la commande : JavaJava MonProgramme.class ↲

JAVA gère les erreurs et exceptions

Des segments de codes peuvent être surveillés pour lever les erreurs d’E/S ou de traitement.

try

{

}

catch (exception <objet erreur>) { //code de traitement de l’erreur }

public void init() { resize (500,100);

date = getParameter ("LAST_UPDATED"); email = getParameter ("EMAIL"); } public void paint (Graphics g) { g.drawString(date + " by ",100, 15); }

Caractéristiques du langage Java (suite)

le code source

Transmission d’un objet erreur de type exception

public void init() { resize (500,100);

date = getParameter ("LAST_UPDATED"); email = getParameter ("EMAIL"); } public void paint (Graphics g) { g.drawString(date + " by ",100, 15); }

MonProgramme.class java.exe

(23)

- IUT ST MALO/ JJ MONTOIS - 23

JAVA appli java

Site HTTP WWW. Site HTTP WWW. Scripts Scripts JSP, PHPJSP, PHP Applet(s Applet(s)) Moteur d’applet Moteur d’applet (IE, …) (IE, …)

navigateur plugin java

APPLET

navigateur

plugin java APPLET

1.

1.

Interface IHM évènementielle & Applet JAVA

Interface IHM évènementielle & Applet JAVA

1.

1.

Programmation de dispositifs légers mobiles - Développement d’applications

Programmation de dispositifs légers mobiles - Développement d’applications

CLDC

CLDC

MIDP

MIDP

:

:

Servlet -

Servlet

Midlet sous JAVA

Midlet sous JAVA

ME

ME

et machine

et machine

KVM

KVM

,

,

Midlet(s

Midlet(s)) Servlet(sServlet(s))

Moteur de Moteur de servlet servlet (Tomcat, …) (Tomcat, …) Serveur HTTP (APACHE Midlet Midlet WAP/UMTS/G WAP/UMTS/G PRS … PRS … http http↔↔WAPWAP

APPLET = APPLICATION INTERNET

SERVLET = SERVICEINTERNET

MIDLET = Mobile Information Device Profile

JAVA & LES APPLICATIONS DISTRIBUEES …

JAVA & LES APPLICATIONS DISTRIBUEES …

1.

1.

Programmation réseau « bas niveau » -

Programmation réseau « bas niveau » -

SOCKETSOCKET

,

,

STREAMSTREAM

TCP/IP UNIX/WINDOWS

TCP/IP UNIX/WINDOWS

client client serveur serveur Trames UDP TC P/IP Trames UDP TC P/IP SOCKET SOCKET SOCKET SOCKET Transact ions RMI Transact ions RMI

1.

(24)

- IUT ST MALO/ JJ MONTOIS - 24

Saisie d'une URL ou clic sur un lien hypertexte Routage de la requête sur le réseau WWW Internet Le WEB répond! examen de la réponse suivant le format de la réponse: Affiche le texte Affiche l'image HTML GIF JPEG Affiche l'animation VRML ... autre format ?

1 - Requête classique à partir d’un lien hypertexte: aucune demande d’applet java:

MAIS QU’EST DONC UNE APPLET? Schéma de chargement d’une applet …

MAIS QU’EST DONC UNE APPLET? Schéma de chargement d’une applet …

Je suis une ablette

Mais non,bêta une applet!!

(25)

- IUT ST MALO/ JJ MONTOIS - 25

Saisie d'une URL ou clic sur un lien hypertexte

Routage de la requête sur le réseau WWW Internet Le WEB répond! examen de la réponse

la classe java se trouve t-elle déjà sur le poste?

chargement de la classe sur le réseau non chargement de la classe dans le navigateur et interprétation des données (son, texte,

image) oui

2 - Requête à partir d’un lien hypertexte: l’appel nécessite une applet java:

 Concept de codes mobiles;

 Emergence du traitement répartie sur réseau  Faire jouer un rôle plus actif aux clients  Réduire la charge du serveur

(26)

- IUT ST MALO/ JJ MONTOIS - 26

Le processeur virtuel de la machine JAVA – La JVM

OS

Séquenceur d’instructions pcodes Piles et registres

JVM

Mon ordinateur

... lload address ladd; lstore address; jsr address;

Programme JAVA

compilé en pcode

toto.class

(27)

- IUT ST MALO/ JJ MONTOIS - 27

CARACTERISTIQUES D’UNE JVM

CARACTERISTIQUES D’UNE JVM

1. Jeu de registres internes de 32 bits pour stocker les données traitées, et à traiter selon l’instruction pcode présente dans le registre d’instruction.

- SS : registre pointeur (Stack) de pile vers la 1ière variable locale de la méthode en cours d’exécution.

- PCPC: « Program Counter », registre indiquant l’@ de l’instruction pcode en cours d’exécution

- Optop, FrameOptop, Frame : registres pointeur: sommet de la pile des opérandes, et zone de stockage des méthodes

5. Jeu d’instructions « machine »: le PCODEPCODE

6. Une pile LIFO pour transmettre paramètres, espace des variables locales, et adresses de retour aux méthodes

7. Une pile FIFO d’opérandes pour stocker les arguments/résultats des instructions pcodes 8. Un segment de mémoire dans lequel s’effectue l’allocation/désalocation d’objets

9. Une zone de stockage des segments de pcodes des méthodes ainsi que la table des symboles.

Instr pcode en coursInstr pcode en cours Reg d’instruction

PC Reg Program counter

@

instr OPTOP VARS FRAME pile Arguments et résultats Opérandes pile

Zone de stockage des méthodes

pile

Segment de mémoire

(28)

- IUT ST MALO/ JJ MONTOIS - 28

public class DocFooter extends Applet { String date;

String email;

public void init() {

resize (500,100);

date = getParameter ("LAST_UPDATED"); email = getParameter ("EMAIL"); }

public void paint (Graphics g) {

g.drawString(date + " by ",100, 15); g.drawString(email, 290,15); } } Method DocFooter() 0 aload_0 1 invokespecial #1 4 return

Method void init() 0 aload_0 1 sipush 500 4 bipush 100 6 invokevirtual #2 9 aload_0 10 aload_0 11 ldc #3 13 invokevirtual #4 16 putfield #5 19 aload_0 20 aload_0 21 ldc #6 23 invokevirtual #4 26 putfield #7 29 return

Method void paint (java.awt.Graphics) 0 aload_1 1 new #8 4 dup 5 invokespecial #9 8 aload_0 9 getfield #5 12 invokevirtual #10 15 ldc #11 17 invokevirtual #10 20 invokevirtual #12 23 bipush 100 25 bipush 15 27 invokevirtual #13 30 aload_1 31 aload_0 32 getfield #7 35 sipush 290 38 bipush 15 40 invokevirtual #13 43 return } La compilation du programme DocFooter.class avec la commande

javap -c DocFooter, donne le source assembleur JVM suivant:

Le programme DocFooter.java

*

*

On trouve sur le site de SUN, des précisions sur la

On trouve sur le site de SUN, des précisions sur la

JVM, et son jeu d’instructions « machine »

(29)

- IUT ST MALO/ JJ MONTOIS - 29

Architecture de la machine virtuelle JAVA

Architecture de la machine virtuelle JAVA

Garbage collector

Méthodes Tas (HEAP) Pile

Interpréteur java Vérificateur Résolution des liens Classes JNI

Appel méthode native

Fichier de classes à exécuter ClassLoader Mémoire Seulement en cas d’utilisation de méthodes conçues directement en langage machine de la cible

Zone de stockage des

méthodes Zone de gestion de la pile LIFO

Zone pour l’allocation dynamique de mémoire

(30)

- IUT ST MALO/ JJ MONTOIS - 30

Deux dispositifs permettant la sécurité

1. Le chargeur de classe: le

ClassLoader

ClassLoader

classe(s ) locales

Espace de noms des classes locales

classe(s) machineX

Espace de noms des classes de la machine distante X

classe(s) machineY

Espace de noms des classes de la machine distante Y

Lors de l’appel d’une classe donnée, la recherche s’effectue en priorité dans l’espace des classes locales. Ainsi, aucune classe téléchargée ne peut se faire passer pour une classe système, en écrasant l’original, même si elle modifie sont nom,

(31)

- IUT ST MALO/ JJ MONTOIS - 31

2. Le vérificateur de code: le

vérificateur

vérificateur

class MaClasse {

public static void main (String args[]) { int A = 10; int B = 12; int X;

System.out.println("L'entier A vaut "+ A); System.out.println("L'entier B vaut "+ B);

if (A < B) System.out.println("A est plus petit que B"); else if (A == B) System.out.println ("A est égal a B"); else System.out.println ("A est plus grand que B"); System.out.println("comptons de 1 à "+ A); int somme = 0;

int fact = 1;

for (int i = 1;i <= A;i++) { System.out.print(" "+i); somme += i;

fact *= i; }

System.out.println();

System.out.println("la somme de tous les nombres de 1 à "+ A + " vaut "+ somme);

System.out.println("la factorielle de "+ A+" vaut "+ fact); }

}

Le pcode ne provoque pas de dépassement de la pile d’opérande

Les types d’arguments passés lors des appels de méthodes sont corrects

Le pcode ne tente pas de conversion illégale de données (int, float, …) en pointeursLe pcode ne tente pas de passer outre les restrictions d’accès (public, private, …)

Compiled from "MaClasse.java" class MaClasse extends java.lang.Object{ MaClasse();

Code: 0: aload_0

1: invokespecial #1; 4: return

public static void main(java.lang.String[]); Code: 0: bipush 10 2: istore_1 3: bipush 12 5: istore_2 6: getstatic #2; 9: new #3; 12: dup 13: invokespecial #4; 16: ldc #5; 18: invokevirtual #6; 21: iload_1 22: invokevirtual #7; 25: invokevirtual #8; 28: invokevirtual #9; 31: getstatic #2; 34: new #3; 37: dup 38: invokespecial #4; 41: ldc #10; 43: invokevirtual #6; 46: iload_2 47: invokevirtual #7; 50: invokevirtual #8; 53: invokevirtual #9; 56: iload_1 57: iload_2 58: if_icmpge 72 61: getstatic #2; 64: ldc #11; 66: invokevirtual #9; 69: goto 96 72: iload_1 73: iload_2 74: if_icmpne 88 77: getstatic #2; 80: ldc #12; pcode de MaClasse.java MaClasse.jav a Voyons, voyons, ce pcode tente-t-il de fabriquer des pointeurs ??

(32)

- IUT ST MALO/ JJ MONTOIS - 32

Compilation …

Exécution …

Source JAVA Compilateur JAVA Bytes-code JAVA ClasseLoader Vérificateur Interpréteur Runtime … Générateur de codes

Séquencement des opérations de compilation, chargement,

exécution d’une application JAVA

c:\...

Bytecodes issus du réseau ou localement

(33)

- IUT ST MALO/ JJ MONTOIS - 33

Conception multiplateforme d’un programme compilé en pcodes

0 aload_0 1 sipush 500 4 bipush 100 6 invokevirtual #2 Machine virtuelle, (JVM) Un seul « langage » machine interpréteur JAVA Pentium interpréteur JAVA Sparc interpréteur JAVA PowerPC Un interpréteur quelconque class MaClasse {

public static void main (String args[]) { int A = 10; int B = 12; int X;

System.out.println("L'entier A vaut "+ A); System.out.println("L'entier B vaut "+ B); Compilateur JAVA Pentium (*.class) Compilateur JAVA Sparc (*.class) Compilateur JAVA PowerPC (*.class) Différentes plateformes

(34)

- IUT ST MALO/ JJ MONTOIS - 34

Processeur JAVA JVM « siliciumisé »

Processeur JAVA JVM « siliciumisé »

Architecture de base : Picojava (SUN 1996)

But : faire exécuter du bytecode JAVA sans interpréteur

Usage: appications embarquées

OS TRe intégré

On peut trouver aussi un processeur JVM « en dur », ou « siliciumisé »

Tini de Dallas semiconductor ’s Support 68 pins avec processeur interface ethernet, RS232, I2C, CAN

(35)

- IUT ST MALO/ JJ MONTOIS - 35 EXEMPLE: Contrôle-Commande domotique d’un ou plusieurs équipements d’une maison. Pouvoir piloter à distance l’éclairage ou le chauffage de la maison, et être averti en toute heure d’un éventuel problème comme le déclenchement d’une alarme, risque d’incendie ou autres…

Chargement codes de l’application; configurations, …

(36)

- IUT ST MALO/ JJ MONTOIS - 36 Envoi de

message sms

Message sms reçu

Carte JAVA IPJV-ES

Système de commande à base de la carte JAVA IPJV-ES permettant d’établir la communication entre les différents capteur de température et de luminosité et un téléphone mobile via un

modem WAVECOM.

Les systèmes de contrôle et de supervision utilisent de plus en plus le GSM et plus spécialement la fonctionnalité des messages courts (SMS). La carte JAVA exécute un programme qui prélève les informations via la liaison RS232.

Processus commandés

MODEM GSM WAVECOM

Envoi/réception de sms

(37)

- IUT ST MALO/ JJ MONTOIS - 37 Plateforme de développement logiciel 6 entrées analogiques Liaison RS232 Liaison ethernet 10base-T 6 E/S 8/24 mA, 3,3V La carte JAVA Logiciel résident L’application

Codes binaires JAVA à télécharger puis exécuter dans la cible.

Téléchargement … .class

.java

(38)

- IUT ST MALO/ JJ MONTOIS - 38

Architecture logicielle de l’application domotique …

(39)

- IUT ST MALO/ JJ MONTOIS - 39

Diverses plateformes spécialisées de développement JAVA

Plateforme JAVA 3 sous-ensembles spécialisés:

3.

3.

J2EE

J2EE

(JAVA 2 Enterprise Edition) – Développement et déploiement d’applications à destination des entreprises (applet, SERVletSERVlet) (Architectures B2C et B2B);

4.

4.

J2SE

J2SE

(JAVA 2 Standard Edition) – Développement et exécution de logiciels au niveau de l’utilisateur (APPletAPPlet).

5.

5.

J2ME

J2ME

(JAVA 2 Micro Edition) – Production d’applications Java pour les systèmes

embarqués (MIDletMIDlet). Architecture définie avec des configurations (ressources minimales nécessaires pour accueillir la plateforme JAVA et des profils permettant de compléter la configuration avec des fonctionnalités spécifiques au matériel)

Java 1.2 c'est …

60 Packages

1 781 Classes et Interfaces

15 060 Méthodes!!

(40)

- IUT ST MALO/ JJ MONTOIS - 40

PLATEFORMES JAVA

PLATEFORMES JAVA

TMTM

ME & MACHINES VIRTUELLES: JVM, KVM, …

ME & MACHINES VIRTUELLES: JVM, KVM, …

Plusieurs processeurs virtuels selon le type d’application: JVM, KVM, CVM, CardVM, …

CVM

Workstation/semi-embarqué

Architecture distribuée Architecture embarquée

contrainte

JVM JVM

Pour construire des MIDlet téléchargeable sur mobiles légers Pour construire des

(41)

- IUT ST MALO/ JJ MONTOIS - 41

Rien que la plateforme JAVA SE …

Pour avoir accès à toutes les infos du JAVA SE, ne pas hésiter à consulter le site:

http://java.sun.com/javase/index.jsp

Chacune de ces zones

est associée à un lien hypertexte

(42)

- IUT ST MALO/ JJ MONTOIS - 42

Différentes versions de JAVA Standard Edition …

fin 2006? Mustang 6 1991 à 2000 Versions 1.0, 1.1, 1.2, 1.3 2008? Dolphin 7 2006? Dragonfly 1.5.1 2004 Tiger 1.5 2003 Mantis 1.4.2 2002 Hopper 1.4.1 2001 Merlin 1.4 Année de sortie Nom de code Versions JAVA 3270 166 44 Mo J2SE 1.5 53 Mo Java SE 6 En construction Java SE 7 47 Mo 30 Mo 20 Mo 8,6 Mo Taille compressée J2SE 1.4 J2SE 1.3 Java 1.2 Java 1.1 Java 1.0 Versions JAVA 2990 135 1840 76 1524 59 477 23 211 8 Nombre de classes Nombre de packages

Depuis le J2SE1.4, l'évolution de Java est dirigée par le JCP (Java Community Process) qui utilise les JSR (Java spécifications Requests) pour proposer des ajouts et des changements sur la plateforme Java. http://www.jcp.org

Le langage est spécifié par le JLS (Java Spécification Language). Les modifications du JSL sont gérées sous le code JSR 901

(43)

- IUT ST MALO/ JJ MONTOIS - 43

Ministre de l'Instruction publique du 4 février 1879 au 23 septembre 1880 , il

attache son nom aux lois scolaires :

• Collation des grades universitaires retirée à l'enseignement privé (12/03/1880) • Dispersion des congrégations religieuses non autorisées (29/03/1880)

• Gratuité de l'enseignement primaire (16/06/1881)

• Extension aux jeunes filles du bénéfice de l'enseignement secondaire d'État (21/12/1881)

• Loi relative à l'obligation et à la laïcité de l'enseignement (28/03/1882) • Création d'une École Normale féminine à Sèvres et d'une agrégation féminine (13/07/1882)

[d’après WIKIPEDIA]

Pause culturelle …

Pause culturelle …

Jules Ferry

John Von Neumann

John à côté du 1er dispositif automatisé de traitement des données que l’on nommait pas encore ordinateur. John Von Neumann est bien trop peu connu, pourtant il est à l'origine de l'architecture encore utilisée aujourd'hui par tous les processeurs !

(44)

- IUT ST MALO/ JJ MONTOIS - 44

-2-Outillages d’édition, de

compilation, d’exécution

du code JAVA

compilateur debugger

interpréteur Éditeur texte

Chapitre consacré aux outils de développement de classes JAVA. A passer dans un 1er temps, puis à étudier lors des exercices et TP à venir

(45)

- IUT ST MALO/ JJ MONTOIS - 45

L'environnement

L'environnement

« basique »

« basique »

de compilatio

de compilatio

n selon la plateforme J2SE

n selon la plateforme J2SE

Cet environnement de développement s'appelle aussi JDK (Java Development Kit).

Seuls les environnements Windows 32 bits (Windows NT, Windows 95) et SUN sont supportés.

De façon identique aux environnements SUN et Windows 32 bits, le compilateur JAVA se nomme javac et son appel se fait par la syntaxe suivante :

javac

fichier.

java

compilationcompilation

fichier.

class

pcodes

- ? Permet d’obtenir la liste des options du compilateur

-classpath chemin Spécifie le chemin utilisé par javac pour localiser les classes. -d repertoire Specifie le répertoire racine où stocker les classes générées.

-encoding nom Specifie le nom du fichier source.

-g Autorise la génération d’information pour le debugging. -nowarn Inhibe les warnings.

-O Optimiser le code compilé par “inlining” les méthodes static, final, et

private.

-verbose Générer des détails lors de la compilation

javac -<

options

> sourcefichier.java

(46)

- IUT ST MALO/ JJ MONTOIS - 46

Hiérarchie des répertoires du JDK

Hiérarchie des répertoires du JDK

c:\j2sdk1.4.2

c:\j2sdk1.4.2

c:\ j2sdk1.4.2 \bin

c:\ j2sdk1.4.2 \bin

c:\ j2sdk1.4.2

c:\ j2sdk1.4.2

\demo

\demo

c:\ j2sdk1.4.2

c:\ j2sdk1.4.2

\include

\include

c:\ j2sdk1.4.2

c:\ j2sdk1.4.2

\lib

\lib

Trois commandes essentielles dans c:\jsdk1.4.2\bin:

Visionneur d’applet qui permet d’exécuter un fichier *.html contenant l’applet.

appletviewer.exe

appletviewer.exe

Compilateur traduisant le texte source *.java en pcode *.class

javac.exe

javac.exe

Interpréteur java pour exécuter les programmes *.java

java.exe

java.exe

(47)

- IUT ST MALO/ JJ MONTOIS - 47

Schéma de développement de programme JAVA à l’aide du JDK de Sun:

éditeur de texte essai.java compilateur e eedddiiitt essai.java t jjjaaavvvaaacc essai.java c essai.class   interpréteur j jjaaavvvaa essai.class a   insertion dans une page HTML exemple.html <html> <applet> code=essai.class ...> </applet> </html> viewer a aappppppllleeetttvvviiieeewwweeerr exemple.html r ’’  '' 

On écrit le texte source du programme JAVA à

l’aide d’un éditeur de texte (edit, worpad). Le

fichier doit être suffixé par l’extension .java

On compile le texte essai.java avec l’utilitaire

javac.exe

javac.exe, celui-ci produit le fichier essai.class

On lance l’interpréteur java.exejava.exe, qui charge la

classe essai (trouvée dans le fichier essai.class).

Puis exécute la méthode main de cette classe.

L’exécution du programme affiche ses résultats

"On appelle ensuite l’utilitaire viewer d’applet: appletviewer

appletviewer pour exécuter la page exemple.html (ou hotjava)

L’affichage de la page html s’exécute …

'' Eventuellement, on peut insérer la classe (une

applet) dans une feuille exemple.html en utilisant la

balise HTML: <applet> .... </applet>

Le nom du fichier source *.java doit être absolument identique (casse comprise) au nom de la classe à compiler:

essai.java ↔ public class essai { … }

(48)

- IUT ST MALO/ JJ MONTOIS - 48

Fenêtre d'édition. On

peut prendre

WORDPAD ou EDIT

comme éditeur de

texte!

Fenêtre de compilation

et d'exécution en

session ligne de

commande

Un OS mutitâches (win9x, winNT, linux, …)

Un OS mutitâches (win9x, winNT, linux, …)

fournit un EDI de "campagne" …

(49)

- IUT ST MALO/ JJ MONTOIS - 49

mais … 2 variables système « vitales » à régler préalablement …

mais … 2 variables système « vitales » à régler préalablement …

PATH = %PATH%;c:\j2sdk1.4.2\bin

(50)

- IUT ST MALO/ JJ MONTOIS - 50

Pour connaître l’ensemble des variables systèmes et utilisateurs de sa machine

Pour connaître l’ensemble des variables systèmes et utilisateurs de sa machine

informatique (Windows ou Unix): exécuter la commande en ligne:

(51)

- IUT ST MALO/ JJ MONTOIS - 51

Sous windows XP …

Sous windows XP …

Ouvrir le panneau de

configuration et cliquer sur System

cliquer

Créer, modifier

(52)

- IUT ST MALO/ JJ MONTOIS - 52

Un EDI plus sophistiqué et … gratuit:

Un EDI plus sophistiqué et … gratuit:

RealJ

RealJ

 Une interface simple pour construire: Une application, une applet

 La plateforme J2sdk doit être au préalable installée

Exécuter une applet Exécuter une application Construire le fichier *.class Compiler le fichier *.java Fenêtre d’édition du fichier *.java Fenêtre donnant la structure de la classe principale

(53)

- IUT ST MALO/ JJ MONTOIS - 53

1°) Avant toute chose, créer un projet

2°) Donner le nom de la

classe principale: Bonjour.

Si c’est une application (méthode main), cocher la

case Application Project

3°) Enregistrer le fichier

projet Bonjour.jpr dans un

répertoire de travail Tous les réglages et configurations sont stockés dans

(54)

- IUT ST MALO/ JJ MONTOIS - 54

4°) Cocher ici, seulement dans le cas de saisie d’arguments en ligne

7°) Préciser le répertoire où sera déposé tous vos fichiers 6°) Préciser le

répertoire où se trouve les librairies

de classes JAVA 5°) Préciser le

répertoire où se trouve la plateforme

(55)

- IUT ST MALO/ JJ MONTOIS - 55 8°) Saisir le code source de Bonjour.java 10°) Exécuter Bonjour.java 11°) Résultats de l’exécution de Bonjour.java 9°) Compiler Bonjour.java Attention, le nom de la classe doit être identique au nom du fichier

(56)

- IUT ST MALO/ JJ MONTOIS - 56

Contenu du répertoire de travail tpjava après

compilation Fichier projet Fichier source Fichier compilé de pcodes ClassNotFoundException

C’est un message d’erreur qui apparaît souvent lorsque la variable CLASSPATH est mal configuré, entre autre, lorsqu’on a pas définit le répertoire de travail où se trouve notre classe recherchée par le compilateur.

Références

Documents relatifs

L'étude des thèmes et des motifs exploités lors de l'entrée solennelle de Charles Quint à Bologne en 1529 et de la procession solennelle après son couronnement en 1530

This paper presents a design of a custom architecture for a Minimum Mean Square Error Interference Cancellation (MMSE-IC) Linear Equalizer (LE) used in iterative

Thus, the purpose of this study was to examine whether the function identified by expert reviewers using ABC narrative recordings would match the one identified by a

Enfin, les derniers délits sexuels que l’on évoquera ici, sont la bestialité, l’homosexualité, et les pratiques sexuelles non autorisées telle le sodomie et la

Rappelons en préambule quelques étapes de la réflexion de grande ampleur qu’a pu susciter cette démarche (I.1), ce qui nous permettra de préciser ensuite l’objet du

• HS2 : En contexte de recherche d’information exploratoire, la visualisation des résultats de recherche classifiés démontre une meilleure perception que la présentation textuelle

Ces outils n’étant pas, à notre connaissance, utilisés par une grande partie des cabinets d’expertise comptable, au moins pour ceux considérés comme de petite