Introduction au langage Java



Documents pareils
INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Programmer en JAVA. par Tama

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

PROGRAMMATION PAR OBJETS

as Architecture des Systèmes d Information

Une introduction à Java

Java Licence Professionnelle CISII,

INITIATION AU LANGAGE JAVA

Interfaces graphiques avec l API Swing

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

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

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

Langage Java. Classe de première SI

TP1 : Initiation à Java et Eclipse

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

ALGORITHMIQUE ET PROGRAMMATION ORIENTEE OBJET

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

Cours 1: Java et les objets

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

Apprendre Java en 154 minutes

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

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

Java Licence professionnelle CISII,

Java Licence Professionnelle CISII,

Sécurité Java 2. Première approche. Installation des exemples. Exemple d'une applet

Projet de programmation (IK3) : TP n 1 Correction

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

Auto-évaluation Programmation en Java

RMI le langage Java XII-1 JMF

SHERLOCK 7. Version du 01/09/09 JAVASCRIPT 1.5

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

Initiation à JAVA et à la programmation objet.

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

TD3: tableaux avancées, première classe et chaînes

Développement Logiciel

Threads. Threads. USTL routier 1

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

Le Modèle de Sécurité dans JAVA

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

Java - la plateforme

Programmation en Java IUT GEII (MC-II1) 1

Chapitre I Notions de base et outils de travail

Utilisation d objets : String et ArrayList

Corrigé des exercices sur les références

Prendre le marteau, le tableau, le mètre, le crayon, la ficelle, le clou, la pointe ;

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

Traitement de données

CPR Informatique. (poste 3159 ou 3164) Septembre 2002

Solutions du chapitre 4

INF 321 : mémento de la syntaxe de Java

TP3. Mail. Attention aux fausses manoeuvres lors de ce TP vous pouvez endommager votre mail sur ouindose.

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

Chapitre V. Les classes : Object, Vector, etc.

TP1. Outils Java Eléments de correction

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

Un ordonnanceur stupide

Remote Method Invocation (RMI)

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

Chapitre 10. Les interfaces Comparable et Comparator 1

Aide mémoire UML & Java 1ère partie : Introduction. marc.lemaire@u-cergy.fr

Licence Bio Informatique Année Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

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

Le langage JAVA G. Baulieu Institut de Physique Nucléaire de Lyon Septembre 2009

Java c est quoi? Java pourquoi?

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

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

La technologie Java Card TM

Programmeur Java 1.4 et 5.0

Desktop Intégration. Rémi Forax

Java DataBaseConnectivity

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

Package Java.util Classe générique

Applet pour visualiser les variables «automate» notifiées

TP Composants Java ME - Java EE. Le serveur GereCompteBancaireServlet

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

LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

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

Programme Compte bancaire (code)

Programmation Par Objets et Langage Java

Programmation Objet Java Correction

Introduction : les processus. Introduction : les threads. Plan

Programmation Orientée Objets Le Langage JAVA

Premiers Pas en Programmation Objet : les Classes et les Objets

1. Langage de programmation Java

Tp 1 correction. Structures de données (IF2)

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

Programmation Par Objets

COMPARAISONDESLANGAGESC, C++, JAVA ET

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

Java 7 Les fondamentaux du langage Java

Pour plus de détails concernant le protocole TCP conférez vous à la présentation des protocoles Internet enseignée pendant.

La carte à puce. Jean-Philippe Babau

JAVA 8. JAVA 8 - Les fondamentaux du langage. Les fondamentaux du langage Java. Avec exercices pratiques et corrigés JAVA 8 29,90.

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

Programmation par les Objets en Java

Derrière toi Une machine virtuelle!

Synchro et Threads Java TM

Remote Method Invocation Les classes implémentant Serializable

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

Transcription:

Introduction au langage Java 1 Introduction : Langage développé par Sun et purement orienté objet. N a pas de rapport direct avec Javascript développé par Netscape. Les applications java peuvent être des applications consoles ou graphiques ou encore des applets à exécuter depuis une page html. 1.1 Le principe d exécution d une applet : Java est langage qui doit être compilé et interprété : Dans une première phase, vous compilez un programme (un ou plusieurs fichiers source.java) en fichiers.class L'ensemble des fichiers.class est ensuite interprété par la Machine Virtuelle Java (Java Virtual Machine) pour exécuter le programme. Voici une illustration de ce principe : Applet1.html Applet1.java class Applet1 extends Applet... Applet1.class (micro_code java) <html> <body> <applet code="applet1.java"> </applet> </body> </html> CodeCouleur.java class CodeCouleur... Compilateur java javac CodeCouleur.class (micro_code java) machine virtuelle java testcodecouleur.java class testcodecouleur... testcodecouleur.class (micro_code java) console.bat %JDK%/bin/java CodeCouleur.testCodeC ouleur Pourquoi ne pas interpréter directement le programme Java? 1. Les fichiers.class contiennent du bytecode (code machine Java) qui sera exécuté beaucoup plus rapidement par l'interpréteur que si ce dernier devait travailler avec les fichiers sources.java. 2. Seuls les fichiers.class sont nécessaires à l'exécution d'un programme Java. Comme ils contiennent du code machine, ils ne peuvent être lus par des tiers, protégeant ainsi le code source. 3. Etant compilés, les fichiers.class sont de taille plus petite que le code source Java ; ceci est un argument important pour transférer les programmes sur Internet. 4. Chaque fichier.class décrivant une classe d'objet, une même classe peut être utilisé par différents programmes, sans que cette classe ne soit dupliquée dans chacun des programmes. Pourquoi ne pas compiler directement un exécutable? Un exécutable contient du code qui n'est exécutable que sur la machine pour lequel il est destiné et le seul moyen de rendre un langage multi-plateforme sans avoir à recompiler le source (comme en C/C++), c'est d'utiliser un interpréteur appelée machine virtuelle. L'autre avantage de l'interpréteur est qu'il peut être incorporé par exemple, à un navigateur ce qui lui permet d'exécuter des programmes Java à l'intérieur de pages HTML. JlPascal 1/1

1.2 La Composition du Java developpement kit: Les classes standard sous la forme classes.zip, javac, le compilateur, java, l'interpréteur, jar, l archiveur, appletviewer, l'interpréteur d'applets 1.3 La chaîne de production : MonApplet.java compilateur java MonApplet.class Archivage MonApplet.jar 1.4 L exécution : On utilise une balise <applet> où on indique la classe ou une archive la contenant. L exécution peut être locale (mode file) ou distante (http) : dans ce cas l applet est téléchargée depuis un serveur web puis exécutée sur la machine : nécessite que le navigateur prenne en charge les applets. 1.5 Les différentes versions : Où trouver le JDK : Il est disponible gratuitement sur le site Java de Sun http://www.javasoft.com/. La version 1.6 est désormais disponible (La dénomination Java 2 regroupe les JDK de version >= 1.2). 1.6 Notre outil de développement : Jbuilder de Borland : Les sources se développent avec n importe quel éditeur de texte ou avec Jbuilder (on bénéficie d un assistant). Pour la création des classes et des archives, on peut procéder de 2 manières : Utiliser l interface de Jbuilder si la version le permet. Utiliser le compilateur javac et l archiveur jar faisant partie du JDK de sun avec des fichiers de commandes (extension bat) : SET JDK=d:\JBuilder7\jdk1.3.1 %JDK%\bin\javac -d classes src\codecouleur\*.java %JDK%\bin\jar cvf CodeCouleur.jar -C classes 2 Exemple : code couleur des résistances : 2.1 Première partie : développement de la classe et test en mode console : Fichier de commande : SET JDK=d:\JBuilder7\jdk1.3.1 %JDK%\bin\java -classpath.\classes; CodeCouleur.testCodeCouleur ou %JDK%\bin\java -classpath CodeCouleur.jar CodeCouleur.testCodeCouleur Résultats : JlPascal 2/2

TestCodeCouleur.java package CodeCouleur; import java.io.*; class testcodecouleur public static void main(string[] args) //************************************ System.out.println("test classe CodeCouleur "); String chaine ; CodeCouleur macouleur = new CodeCouleur(); do System.out.print ("valeur de resistance "); chaine = saisir (); if (chaine.compareto("*")!= 0) int r = Integer.parseInt (chaine); macouleur.setvaleur(r); Color couleur1 = macouleur.getcolors(1); Color couleur2 = macouleur.getcolors(2); Color couleur3 = macouleur.getcolors(3); System.out.println ("couleurs = " + couleur1.tostring() + couleur2.tostring() +couleur3.tostring()); while (chaine.compareto("*")!=0); static String saisir () //*********************** DataInputStream reponse; reponse = new DataInputStream(System.in); String chaine = null; try chaine = reponse.readline(); catch (Exception e) ; return chaine; // fin saisir package CodeCouleur; class CodeCouleur CodeCouleur.java private int r; private Color table[] = Color.black, Color.black, Color.red, Color.orange, Color.yellow, Color.green,Color.blue, Color.magenta, Color.gray, Color.white ; public CodeCouleur() this.r = 0; this.table[1] = new Color (0x66,0x33,0) ; // brun public boolean setvaleur ( int valeur ) if (valeur > 0) this.r = valeur; return true; else return false; public Color getcolors ( int anneau) if (r == 0) return Color.pink; Color couleuranneau = Color.pink; double log10 = Math.log((double)this.r)/Math.log(10.0); int C3 = (int)log10-1 ; int C1 = (int)(this.r/math.pow (10.0, C3+1.0)); int C2n = this.r-c1*(int)math.pow (10.0, C3+1.0); int C2d = (int)math.pow (10.0, (double)c3); int C2 = C2n/C2d; switch (anneau) case 1: couleuranneau = table[c1]; case 2: couleuranneau = table[c2]; case 3: couleuranneau = table[c3]; return couleuranneau; break; break; break; JlPascal 3/3

2.2 Seconde partie : réutilisation de la classe dans une applet : Résultats avec l appletviewer intégré à Jbuilder : Utilisation d une page html et d un navigateur : Applet1.html <html><head><title>page de test HTML</title></head> <body> CodeCouleur.Applet1 apparaîtra ci-dessous dans un navigateur Java.<br/> <applet codebase = "." code = "CodeCouleur.Applet1.class" name = "AppletTest" width = "400" height = "300"></applet> </body></html> Utilisation d une archive : On ajoute l attribut archive = "CodeCouleur.jar" (voir fabrication précédemment) JlPascal 4/4

package CodeCouleur; Applet1.Java import java.awt.event.*; import java.applet.*; public class Applet1 extends Applet private Label label1 = new Label(); private Button button1 = new Button(); private TextField textfield1 = new TextField(); private..; public Applet1() public void init() try jbinit(); catch(exception e) e.printstacktrace(); private void jbinit() throws Exception label1.setfont(new java.awt.font("serif", 3, 20)); label1.settext("code Couleur des résistances"); label1.setbounds(new Rectangle(35, 18, 260, 17)); this.setlayout(null); button1.setlabel("calcul"); void button1_actionperformed(actionevent e) CodeCouleur macouleur = new CodeCouleur (); int r = Integer.parseInt (this.textfield1.gettext()); macouleur.setvaleur( r); this.textfield2.setbackground( macouleur.getcolors (1)); this.textfield3.setbackground( macouleur.getcolors (2)); this.textfield4.setbackground( macouleur.getcolors (3)); 2.3 Rendre une applet dynamique : Pour éviter de cliquer le bouton pour que le calcul se fasse, on ajouter un timer. C est particulièrement utile si l applet à développer doit surveiller par exemple les entrées d un automate. Les lignes à modifier sont les suivantes : public class Applet1 extends Applet implements Runnable.. private Thread m_timer; JlPascal 5/5

public void init() try jbinit(); catch(exception e) e.printstacktrace(); System.out.println("Creation du thread timer"); m_timer = new Thread (this); m_timer.start(); public void run() System.out.println("demarre du thread timer"); while (true) CodeCouleur macouleur = new CodeCouleur (); int r = Integer.parseInt (this.textfield1.gettext());.. this.textfield4.setbackground( couleur3); try m_timer.sleep(1000); catch (Exception e) ;.. 3 Eléments de programmation 3.1 La classe String (ou string) : Tout comme dans le langage javascript, on utilise la classe length ( ) : méthode d'instance qui retourne la longueur de la chaîne. charat ( ) : méthode d'instance qui retourne le char qui occupe dans la chaîne s la position précisée par l'argument. concat( ) : cette méthode d'instance concatène la chaîne passée comme argument à la chaîne utilisée comme préfixe. Pour concaténer deux chaînes il est plus simple d'utiliser le signe +. equals( ) : méthode booléenne d'instance qui compare la chaîne passée comme argument à la chaîne utilisée comme préfixe. indexof( ) : méthode d'instance qui retourne la position de la première occurrence du char passée comme argument dans la chaîne utilisée comme préfixe. La méthode retourne -1 si le caractère n'existe pas. lastindexof( ) qui retourne la position de la dernière occurrence de la partie cherchée. substring ( ) : cette méthode d'instance permet d'extraire une sous-chaîne de la chaîne utilisée comme préfixe. tolowercase( ) et touppercase( ) : méthodes d'instance qui modifient si nécessaire la casse de la chaîne utilisée comme préfixe. trim ( ) : méthode d'instance supprime les caractères "espace" placés en début et en fin de chaîne. valueof ( ) : méthodes de classe qui assurent la conversion de l'argument (booléen, char, int, double, float, double) en chaîne. 3.2 Les types primitifs, les classes enveloppes : byte 1 float 4 short 2 double 8 int 4 char 2 long 8 String str = "2.1728"; float f = Float.parseFloat(str); System.out.println ("Convertion string " + str + " en float " + f); double d = Double.parseDouble(str); System.out.println ("Convertion string " + str + " en double " + d); str = "-3"; int i = Integer.parseInt(str); System.out.println ("Convertion string " + str + " en integer " + i); JlPascal 6/6

short s = Short.parseShort(str); System.out.println ("Convertion string " + str + " en short " + s); byte b = Byte.parseByte(str); System.out.println ("Convertion string " + str + " en byte " + b); f = 3.14159f; str = String.valueOf(f); System.out.println ("Convertion float " + f + " en string " + str); d = 2.1828; str = String.valueOf(d); System.out.println ("Convertion double " + d + " en string " + str); i = 1664; str = String.valueOf(i); System.out.println ("Convertion integer " + i + " en string " + str); s = 256; str = String.valueOf(s); System.out.println ("Convertion short " + s + " en string " + str); b = 127; str = String.valueOf(b); System.out.println ("Convertion byte " + b + " en string " + str); f = 3.14159f; d = (double)f; System.out.println ("Convertion float " + f + " en double " + d); f = (float)d; System.out.println ("Convertion double " + d + " en float " + f); b = 65; char c = (char)b; System.out.println ("Convertion byte " + b + " en char " + c); 3.3 Les tableaux & les constantes : Allocation statique Allocation dynamique private Color table[] = Color.black, Color.black, final int NBCOULEURS = 10; Color.red, Color.orange, Color.yellow, Color table [] = new Color[NBCOULEURS] ; Color.green,Color.blue, Color.magenta, Color.gray, Color.white ; Le mot clé final fait office de constante : NBCOULEURS ne peut être modifié. 3.4 Passage de paramètres : Les passages de paramètres se font par valeur pour les types primitifs et par référence pour les objets et les tableaux. 3.5 Les exceptions : Une méthode qui est susceptible de déclencher une exception peut s'écrire ainsi : class Classe1 void methode1 () throws Exception // En cas d'erreur, déclenchement d'une exception throw new Exception (); Et elle peut être appelée ainsi par une autre classe de 2 façons différentes class Classe2 Classe1 objet1 = new Classe1 (); void methodex () try objet1.methode1 (); catch (Exception exception1) // Que faire en cas de problème? finally // Le bloc finally est optionnel // Que faire après? void methodey () throws Exception objet1.methode1 (); 3.6 Les calculs mathématiques : Tout comme dans le langage javascript, on utilise la classe Math et ses méthodes static (on ne créée pas d objets mais on appelle directement les méthodes de la classe). JlPascal 7/7

3.7 Différence de notation pour les objets avec le C++ : A la différence du C++ et tout comme le C#, les symboles -> et :: disparaissent au profit du point. Langage Java Langage C++ Création d objets CodeCouleur macouleur = new CodeCouleur(); CodeCouleur macouleur ; ou CodeCouleur *macouleur = new CodeCouleur(); Appels de méthodes macouleur.setvaleur(r); macouleur.setvaleur(r); ou macouleur->setvaleur(r); Appels de méthodes static CodeCouleur.getTolerance() CodeCouleur ::gettolerance() Utilisation des packages ou espaces de noms java.awt.color couleuranneau ; System::Drawing.Color couleuranneau ; ou ou import java.awt.* ; using namespace System::Drawing; Color couleuranneau ; Color couleuranneau ; 3.8 Faire du graphique : Au lieu d utiliser des objets textbox ou labels, on peut directement dessiner avec une applet. En effet, en plus des 4 méthodes héritées de la classe Applet, les méthodes paint & repaint() sont disponibles : import java.applet.*; public class Cercle extends Applet implements Runnable int pos=10; Thread m_timer; public void init() m_timer = new Thread (this); m_timer.start(); // fin init public void run() while (true) pos++; repaint(); try m_timer.sleep(1000); catch (Exception e) ; // fin run public void paint(graphics g) g.setcolor (Color.blue); g.drawoval(100, 100, pos, pos) ; // fin paint // fin classe JlPascal 8/8

4 Réutilisation de la classe dans une application graphique : package CodeCouleur; FCouleur.java import javax.swing.uimanager; public class FCouleur public FCouleur() CadreCouleur frame = new CadreCouleur(); frame.validate(); //Centrer la fenêtre Dimension screensize = Toolkit.getDefaultToolkit().getScreenSize(); Dimension framesize = frame.getsize(); if (framesize.height > screensize.height) framesize.height = screensize.height; if (framesize.width > screensize.width) framesize.width = screensize.width; frame.setlocation((screensize.width - framesize.width) / 2, (screensize.height - framesize.height) / 2); frame.setvisible(true); public static void main(string[] args) new FCouleur(); // fin main // fin class package CodeCouleur; CadreCouleur.java import java.awt.event.*; import javax.swing.*; public class CadreCouleur extends JFrame private JPanel contentpane; private BorderLayout borderlayout1 = new BorderLayout(); private TextField textfield1 = new TextField(); private TextField textfield2 = new TextField(); private TextField textfield3 = new TextField(); private TextField textfield4 = new TextField(); private Label label1 = new Label(); private Label label2 = new Label(); private TextField textfield5 = new TextField(); private Button button1 = new Button(); public CadreCouleur() try jbinit(); JlPascal 9/9

catch(exception e) e.printstacktrace(); private void jbinit() throws Exception enableevents(awtevent.window_event_mask); contentpane = (JPanel) this.getcontentpane(); contentpane.setlayout(borderlayout1); this.setsize(new Dimension(400, 300)); this.settitle("code couleur des résistances"); textfield1.setbounds(new Rectangle(151, 93, 82, 28)); this.getcontentpane().setlayout(null); textfield2.setbounds(new Rectangle(66, 154, 30, 84)); textfield3.setbounds(new Rectangle(105, 154, 30, 84)); textfield4.setbounds(new Rectangle(147, 154, 30, 84)); label1.setfont(new java.awt.font("dialog", 3, 18)); label1.settext("code couleur des résistances"); label1.setbounds(new Rectangle(62, 26, 293, 40)); label2.setfont(new java.awt.font("dialog", 1, 16)); label2.settext("valeur?"); label2.setbounds(new Rectangle(58, 99, 74, 17)); textfield5.setbackground(color.lightgray); textfield5.settext(" "); textfield5.setbounds(new Rectangle(193, 154, 33, 86)); button1.setfont(new java.awt.font("dialog", 1, 12)); button1.setlabel("calcul"); button1.setbounds(new Rectangle(268, 196, 75, 27)); button1.addactionlistener(new java.awt.event.actionlistener() public void actionperformed(actionevent e) button1_actionperformed(e); ); this.getcontentpane().add(label1, null); this.getcontentpane().add(label2, null); this.getcontentpane().add(button1, null); this.getcontentpane().add(textfield1, null); this.getcontentpane().add(textfield2, null); this.getcontentpane().add(textfield3, null); this.getcontentpane().add(textfield4, null); this.getcontentpane().add(textfield5, null); protected void processwindowevent(windowevent e) super.processwindowevent(e); if (e.getid() == WindowEvent.WINDOW_CLOSING) System.exit(0); void button1_actionperformed(actionevent e) CodeCouleur macouleur = new CodeCouleur(); int r = Integer.parseInt (this.textfield1.gettext()); macouleur.setvaleur( r); this.textfield2.setbackground( macouleur.getcolors (1)); this.textfield3.setbackground( macouleur.getcolors (2)); this.textfield4.setbackground( macouleur.getcolors (3)); JlPascal 10/10

Archive.bat SET JDK=d:\JBuilder7\jdk1.3.1 %JDK%\bin\jar cvf AppliCodeCouleur.jar -C classes. pause Appli.bat SET JDK=d:\JBuilder7\jdk1.3.1 %JDK%\bin\java -classpath.\applicodecouleur.jar; CodeCouleur.FCouleur pause JlPascal 11/11