Bases du langage. Historique Applications et applets Éléments de base du langage Classes et objets Les exceptions



Documents pareils
as Architecture des Systèmes d Information

Initiation à JAVA et à la programmation objet.

Généralités sur le Langage Java et éléments syntaxiques.

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Plan du cours. Historique du langage Nouveautés de Java 7

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

PROGRAMMATION PAR OBJETS

Une introduction à Java

Programmer en JAVA. par Tama

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Introduction au langage Java

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

Chapitre I Notions de base et outils de travail

INITIATION AU LANGAGE JAVA

Java Licence Professionnelle CISII,

Java c est quoi? Java. Java. Java : Principe de fonctionnement 31/01/ Vue générale 2 - Mon premier programme 3 - Types de Programme Java

TP1 : Initiation à Java et Eclipse

RN2-Programmation Orientée Objet - JAVA CH 1 Introduction à la POO et Java

Cours 1: Java et les objets

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

JAVA. Introduction à la programmation objet avec java 1/4. Nadir BOUSSOUKAIA

Corrigé des exercices sur les références

La technologie Java Card TM

Java Licence Professionnelle CISII,

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Java - la plateforme

Présentation de Java. Olivier de Pertat IT GROUP

Java c est quoi? Java pourquoi?

Institut Supérieure Aux Etudes Technologiques De Nabeul. Département Informatique

Chapitre 10. Les interfaces Comparable et Comparator 1

Le Modèle de Sécurité dans JAVA

Programmation Orientée Objet

Traitement de données

Encapsulation. L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets.

La carte à puce. Jean-Philippe Babau

Apprendre la Programmation Orientée Objet avec le langage Java (avec exercices pratiques et corrigés)

et se trouve popularisé rapidement pour ses possibilités de développement liés au Web. Les

Introduction à Java. Philippe Genoud.

TP Composants Java ME - Java EE. Le serveur GereCompteBancaireServlet

Programmation Orientée Objet - Licence TIS CM8/9. Rappel sur la séance précédente. Lancelot Pecquet Lancelot.Pecquet@math.univ-poitiers.

Java DataBaseConnectivity

Héritage presque multiple en Java (1/2)

Page 1 sur 5 TP3. Thèmes du TP : l la classe Object. l Vector<T> l tutorial Interfaces. l Stack<T>

RMI le langage Java XII-1 JMF

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

La JVM. La machine virtuelle Java. La JVM. La JVM

Programmation Réseau. Sécurité Java. UFR Informatique jeudi 4 avril 13

TP1. Outils Java Eléments de correction

Langage Java. Classe de première SI

RMI. Remote Method Invocation: permet d'invoquer des méthodes d'objets distants.

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Programmeur Java 1.4 et 5.0

Auto-évaluation Programmation en Java

Remote Method Invocation (RMI)

Projet de Veille Technologique

Programmation avancée et répartie en Java : interfaçage avec d autres langages

Programmation par les Objets en Java

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

Introduction au langage de programmation Java

Utilisation d objets : String et ArrayList

Langage à objets : JAVA (1)

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

Classe Interne, Anonyme & Enumération

RAPPELS SUR LES METHODES HERITEES DE LA CLASSE RACINE Object ET LEUR SPECIALISATION (i.e. REDEFINITION)

1 Définition d une classe en Java

Introduction. Les méthodes. Les méthodes. Identité et égalité. Identité et égalité. La copie d'objets. Identité et égalité.

Applet pour visualiser les variables «automate» notifiées

Initiation à la Programmation Java

Java Licence Professionnelle Cours 7 : Classes et méthodes abstraites

Java Avancé. Le langage Java. Rémi Forax

Programmation en Java IUT GEII (MC-II1) 1

Support de cours et TD Programmation Orientée Objet

Polymorphisme, la classe Object, les package et la visibilité en Java... 1

Java Licence professionnelle CISII,

Programmation par composants (1/3) Programmation par composants (2/3)

Synchro et Threads Java TM

Flux de données Lecture/Ecriture Fichiers

Programmation Orientée Objet application au langage Java Version Novembre 2007

Étude de l interopérabilité de deux langages de programmation basée sur la machine virtuelle de Java

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

Annexe : La Programmation Informatique

ACTIVITÉ DE PROGRAMMATION

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp

Java 1.5 : principales nouveautés

Polycopié Cours Programmation Orientée Objet sous Java Programme : Filière SMI S5

Projet de programmation (IK3) : TP n 1 Correction

Classe ClInfoCGI. Fonctions membres principales. Gestion des erreurs

Premiers Pas en Programmation Objet : les Classes et les Objets

Introduction : les processus. Introduction : les threads. Plan

ALGORITHMIQUE ET PROGRAMMATION ORIENTEE OBJET

JAVA TD0. Prise en main du langage Environnement de base JAVA 1

Systeme d'exploitation

Cours Java Native Interface

Remote Method Invocation Les classes implémentant Serializable

Serveur d'archivage 2007 Installation et utilisation de la BD exist

Bases Java - Eclipse / Netbeans

Généralités. javadoc. Format des commentaires. Format des commentaires. Caractères spéciaux. Insérer du code

Derrière toi Une machine virtuelle!

Dis papa, c est quoi un bus logiciel réparti?

Machines Virtuelles. et bazard autour. Rémi Forax

Transcription:

Langage JAVA Bases du langage Opérations sur les fichiers Réseau Multi-tâche Logiciel: interfaces... Gestion des périphériques (méthodes natives) Accès aux bases de données

Bases du langage Historique Applications et applets Éléments de base du langage Classes et objets Les exceptions

Historique 1990: «Project Green» de Sun ordinateur autonome = le Star 7 Écran LCD 5 '', couleur 240x240, tactile Contrôleur graphique Processeur RISC SPARC Connexion réseau wireless 200 kb/s Équipement multimédia Émetteur/récepteur IR Langage d'origine C++ abandonné Suivi difficile Bugs Carence des outils de conceptions

Historique James Gosling propose le langage Oak: Intégration des aspects «réseaux» Sécurité / fiabilité Indépendant de la plateforme Multi-threading Dynamique Taille de code réduite Simple et «familier»

Historique WWW : au même moment le transport de programme sur internet pose les mêmes contraintes. Langage prévu = HotJava 1996 : La fusion des projets Hotjava et Oak donne le langage java

Technologie Java 4 déclinaisons: 1) JAVA 4..8 MB ROM, >4MB RAM, 32bits, >100MHz Logiciels, serveurs... 2) PersonalJAVA <2MB ROM, 1MB RAM, 32 bits, >50MHz mobiles haut de gamme... 3) EmbeddedJAVA <512kB,<512kB,32 bits,>25mhz mobiles milieu de gamme... 4) JAVACard 16kB, 512B, 8bits, 300 kips horloges, petit matériel

Machine virtuelle Le processeur physique exécute une «machine virtuelle»: c'est un interpréteur de code binaire. JVM : Java Virtual Machine La JVM encapsule le processeur et les fonctions système de l'os (Windows, Unix, Solaris, tinios, symbian...) Dans une technologie donnée, le code binaire est portable. C'est du binaire interprété: le byte-code

Compilation Compilateur / windows A.EXE Fichier source Compilateur / UNIX A.OUT Compilation classique C Seul le code source est portable (pour un ensemble réduit de fonctions) On peut difficement obtenir des informations à partir du code binaire

Compilation Compilateur / windows Fichier source Compilateur / UNIX Byte code Compilation Java Chaque système dispose d'une JVM et d'outils spécifiques «compile once, run anywhere...»

Conséquences Les variables d'un type donné on toujours la même taille qqs le système Pas de signed et unsigned Pas d'accès direct à la mémoire Pas d'inclusion de fichiers, ni de typedef Pas de confusion entier/booléen Accès aux tableaux contrôlés Fonctions (x,y,...) t U { *exceptions*

Éléments du JDK JDK: Java Development Kit javac : le compilateur java : lance la machine virtuelle javah : crée un fichier header pour l'interfaçage avec le C appletviewer : test local d'une applet javap : extrait les prototypes à partir du byte code javadoc : génère la documentation à partir des sources jar : archives...

Applet «Petite application» Intégrée dans une page HTML Exemple http://localhost/htdocs/iris/magasin/magasin.html http://localhost/htdocs/iris/simul/ HTML: <applet> </applet> Suppose que le navigateur intègre déjà une JVM

Applet Source HTML <html> <head> <title>applet Java </title> </head> <body> <applet CODE="ex2.class" WIDTH=200 HEIGHT=50> <param name= "X" value="100" /> Texte visible pour les navigateurs non compatibles... </applet> </body> </html> Formulaire + javascript + java applet paramétrable public String Applet.getParameter(String S)

Applet Fichier Fichier source source JAVA JAVA Fichier HTML javac Fichier Fichier byte-code byte-code CLASS CLASS

Application Classe contenant un main() Une application est (en général) composée de plusieurs classes. Chaque classe peut contenir un main() Le test unitaire en est grandement facilité On exécute le programme de l'une des classes

Application c2.java c1.java ~> javac *.java ~> java c2 javac c2.class c1.class

Application /* Fichier: ex1.java */ import java.io.*; class Ex1 { /* sous programme */ static int somme(int x, int y, int z) { return x+y+z; /* programme principal */ public static void main(string args[]) { System.out.println("Résultat = " + somme(1,2,3)); (style C)

Application /* Fichier: ex1.java */ import java.io.*; class Ex2 { /* sous programme */ int somme(int x, int y, int z) { return x+y+z; /* programme principal */ public static void main(string args[]) { Ex2 E = new Ex2(); System.out.println("Résultat = " + E.somme(1,2,3)); (objet)

Application An général, une application utilise des classes externes, standards ou non. Exemple: jogl.jar xith3d.jar log4j-1.2.11.jar odejava.jar odejava-xith3d.jar Les fichiers «jar» sont des archives. Ils doivent figurer dans la variable d'environnement CLASSPATH pour que les commandes java les trouvent.

CLASSPATH Windows: préciser la variable d'environnement dans les paramètres du

CLASSPATH Dans l'interpréteur de commande: c:\> set CLASSPATH=%CLASSPATH%;jogl.jar;javacomm.jar c:\> Dans un fichier de commande:

CLASSPATH: Linux CLASSPATH = $CLASSPATH:~/jar/jogl.jar:~/jar/RXTXcomm.jar export CLASSPATH Ces lignes peuvent êtres recopiées (une fois pour toutes) dans le fichier ~/.bashrc

Éléments du langage Types

Opérateurs arithmétiques

Opérateurs sur les bits

Opérateurs relationnels

Opérateurs logiques

Classe class maclasse { public int N; protected int pn; private int K; public maclasse() {... public maclasse(int x){... public int method1(){... private void method2(...) { protected float method3() { public static void main(string[] args){...

Objets Un objet est instancié avec l'opérateur new dans : maclasse M1, M2; M1 et M2 sont des identificateurs d'objets ( assimilables à des adresses) pour créer un objet: M1 = new maclasse(); pour récupérer une référence sur l'objet: M2 = M1; M1 et M2 correpondent au même objet physique. M1 M2 maclasse@xxxx maclasse@xxxx Objet maclasse

Objets Il n'y a pas de destructeur. Un objet est «détruit» lorsqu'il n'y a plus de variables à le référencer. M1 = null; M2 = null;... plus rien n'indique où se trouve l'objet Il sera détruit par une tâche qui s'exécute en fond: le «garbage collector» (ramasse miette) On peut provoquer l'exécution du GC avec: System.gc(); mais en général, ce n'est pas la peine.

Classe Object public class java.lang.object{ public native int hashcode(); static {; public java.lang.object(); protected void finalize(); throws java.lang.throwable public final native void notify(); public final native void notifyall(); public final void wait(); throws java.lang.interruptedexception public final native void wait(long); throws java.lang.interruptedexception public final void wait(long,int); throws java.lang.interruptedexception public final native java.lang.class getclass(); protected native java.lang.object clone(); throws java.lang.clonenotsupportedexception public boolean equals(java.lang.object); public java.lang.string tostring(); Toutes les classes héritent implicitement de Object

Classe Class public final class java.lang.class extends java.lang.object implements java.io.serializable { static java.lang.class class$java$lang$class; public native int getmodifiers(); static {; public boolean desiredassertionstatus(); public native boolean isarray(); public native boolean isinterface(); public native boolean isprimitive();... public native java.lang.class getcomponenttype(); public native java.lang.class getdeclaringclass(); public native java.lang.class getsuperclass(); public java.lang.class[] getclasses();...... On peut identifier la classe d'appartenance d'une variable.

Classe String public final class java.lang.string extends java.lang.object implements java.io.serializable,java.lang.comparable,java.lang.charsequence{ public static final java.util.comparator CASE_INSENSITIVE_ORDER; public int hashcode(); public int length(); static {; public java.lang.string(); public byte[] getbytes(); public char[] tochararray(); public char charat(int); public int indexof(int); public int lastindexof(int); public int indexof(int,int); public int lastindexof(int,int); public void getbytes(int,int,byte[],int); java.lang.string(int,int,char[]); public void getchars(int,int,char[],int); public java.lang.string(byte[]); public java.lang.string(byte[],int); public java.lang.string(byte[],int,int); public java.lang.string(byte[],int,int,int); public java.lang.string(char[]); public java.lang.string(char[],int,int);

Classe String static int indexof(char[],int,int,int); static int lastindexof(char[],int,int,int); public java.lang.charsequence subsequence(int,int); public int compareto(java.lang.object); public boolean equals(java.lang.object); public native java.lang.string intern(); public java.lang.string tolowercase(); public java.lang.string touppercase(); public java.lang.string trim(); public static java.lang.string valueof(char); public java.lang.string replace(char,char); public static java.lang.string valueof(double); public static java.lang.string valueof(float); public java.lang.string substring(int); public static java.lang.string valueof(int); public java.lang.string substring(int,int); public boolean regionmatches(int,java.lang.string,int,int); public int compareto(java.lang.string); public int comparetoignorecase(java.lang.string); public int indexof(java.lang.string);

Classe String public int lastindexof(java.lang.string); public java.lang.string(java.lang.string); public boolean endswith(java.lang.string); public boolean equalsignorecase(java.lang.string); public boolean matches(java.lang.string); public boolean startswith(java.lang.string); public byte[] getbytes(java.lang.string); throws java/io/unsupportedencodingexception public int indexof(java.lang.string,int); public int lastindexof(java.lang.string,int); public boolean startswith(java.lang.string,int); public static java.lang.string valueof(boolean); public boolean regionmatches(boolean,int,java.lang.string,int,int); public java.lang.string(byte[],int,int,java.lang.string); throws java/io/unsupportedencodingexception public java.lang.string(byte[],java.lang.string); throws java/io/unsupportedencodingexception

Classe String public static java.lang.string copyvalueof(char[]); public static java.lang.string valueof(char[]); public static java.lang.string copyvalueof(char[],int,int); public static java.lang.string valueof(char[],int,int); public java.lang.string(java.lang.stringbuffer); public boolean contentequals(java.lang.stringbuffer); public static java.lang.string valueof(java.lang.object); public java.lang.string concat(java.lang.string); public java.lang.string[] split(java.lang.string); public java.lang.string[] split(java.lang.string,int); public java.lang.string tolowercase(java.util.locale); public java.lang.string touppercase(java.util.locale); public java.lang.string replaceall(java.lang.string,java.lang.string); public java.lang.string replacefirst(java.lang.string,java.lang.string);

Classe String Un objet de type String n'est pas un tableau de caractères. Le caractère au rang n: char c = S.charAt(n); La longueur de la chaîne: S.length(); Comparer deux chaînes: if (S1.equals(S2)) {...

Les tableaux Les tableaux sont des objets. Exemple avec des entiers: int[] T = new int[1024]; T[i] est le (i+1)ème élément. Exemple avec des objets: String[] TS = new String[256]; for (int i=0; i<ts.length; i++) { TS[I] = new String("ABCDE"); Ne donne pas 256 objets comme en C++ Remarque: TS.length; est le nombre d'éléments du tableau (attribut) TS[i].length(); est le nombre de caractère de la chaîne (méthode)

Les tableaux C:\langage\java\pres>java tab T[0]=0 T[1]=1 T[2]=2 T[3]=3 T[4]=4 T[5]=5 T[6]=6 T[7]=7 T[8]=8 T[9]=9 T[10]=10 T[11]=11 T[12]=12 T[13]=13 T[14]=14 T[15]=15 Exception in thread "main" java.lang.arrayindexoutofboundsexception: 16 at tab.main(tab.java:10) C:\langage\java\pres> Parcours de tableaux: int[] T = new int[16]; for (int i=0; i<t.length; i++) T[i] = i; //... for (int i=0; i<32; i++) System.out.println("T["+i+"]="+T[i]); System.out.println("Fin du programme");

Les exceptions Objectif: prendre en compte les cas «anormaux» dans l'exécution d'un programme Dans la plupart des cas, Java rend obligatoire de prévoir ce qu'il faut faire si tout ne se passe pas comme prévu (ex: ERR d'e/s sur un fichier) Exemple de cas qui échappe à la règle: dépassement d'index dans un tableau (voir l'exemple précédent)

Traitement d'une exception Avec les instructions try catch int[] T = new int[16]; for (int i=0; i<t.length; i++) T[i] = i; //... try { for (int i=0; i<32; i++) System.out.println("T["+i+"]="+T[i]); catch(exception e){ System.out.println("<<ERREUR>>"); System.out.println("Fin du programme"); Si le code du try se passe mal, un objet de type Exception est créé. Le catch capture l'exception

Exceptions Classes pour les exceptions

Exceptions Traitement du plus précis au plus général: try { // code à surveiller catch (RuntimeException r) {... catch (IOException o) {... catch (Exception e) {... catch (Throwable t) {... // traitement de tout ce qui n'a // pas été capturé

Exceptions import java.io.*; class Except { FileReader fr; void fonct() { try { fr = new FileReader(new File("fichier.txt")); catch (IOException e){ System.out.println("Erreur d'ouverture du fichier " + e.getmessage()); public Except(){ fonct(); public static void main(string[] args){ new Except(); Traitement normal

Exceptions: throws import java.io.*; class Except { FileReader fr; void fonct() throws IOException { fr = new FileReader(new File("fichier.txt")); public Except(){ try { fonct(); catch (IOException ioe) { System.out.println(ioe.getMessage()); public static void main(string[] args){ new Except(); L'exception est reportée vers la fonction appelante.

Exceptions: throws import java.io.*; class Except { FileReader fr; void fonct() throws IOException { fr = new FileReader(new File("fichier.txt")); public Except() throws IOException { fonct(); public static void main(string[] args){ try { new Except(); catch (IOException ioe) { System.out.println(ioe.getMessage()); L'exception est reportée vers la fonction appelante.

Exceptions: throws import java.io.*; class Except { FileReader fr; Personne n'en veut... void fonct() throws IOException { fr = new FileReader(new File("fichier.txt")); public Except() throws IOException { fonct(); public static void main(string[] args) throws IOException { new Except(); C:\langage\java\source>java Except Exception in thread "main" java.io.filenotfoundexception: fichier.txt (Le fichie r spécifié est introuvable) at java.io.fileinputstream.open(native Method) at java.io.fileinputstream.<init>(unknown Source) at java.io.filereader.<init>(unknown Source) at Except.fonct(Except.java:6) at Except.<init>(Except.java:9) at Except.main(Except.java:12) C:\langage\java\source> Erreur avec arrêt du programme

Interface L'interface donne un ou plusieurs prototypes de fonctions qui devront être codées dans les classes qui implémentent l'interface import java.awt.*; interface Dessinable { public void dessiner(graphics g); Un objet 'Dessinable' est un objet qui dispose d'une méthode dessiner()

Interface import java.awt.*; class Rond implements Dessinable { int X,Y,R; public Rond(int x, int y, int r){ X=x; Y=y; R=r; public void dessiner(graphics g){ g.setcolor(color.blue); g.filloval(x-r,y-r,2*r,2*r); Si dessiner() n'est pas codé, on obtient le message: % javac Rond.java Rond.java:3: Rond is not abstract and does not override abstract method dessiner(java.awt.graphics) in Dessinable class Rond implements Dessinable { ^ 1 error % _

Interface Dessinable[] TD = new Dessinable[1024];... // remplissage du tableau avec Rond et Rect mélangés TD[k] = new Rect(12,56,6,8);... TD[j] = new Rond(0,0,78);... public void paint(graphics g){ for (int i=0; i<1024; i++) TD[i].dessiner(g); On instancie des Rond et des Rect, mais lorsqu'on les utilise avec les propriétés décrites par l'interface, on peut les assimiler à des entités du type de cette interface.