Présentation Sur Java Serhani Mohamed Adel Septembre 2001.

Slides:



Advertisements
Présentations similaires
La programmation orientée objet avec Java L3-MIAGE Plan
Advertisements

Premier programme en C :
A RECUPERER EN ENTRANT Le polycopié de Caml Partie 1
Rappels C.
Formation universitaire à .NET: Introduction à C#
SI3 MAM3 Hydro Nathan Cohen Igor Litovsky Christophe Papazian
La classe String Attention ce n’est pas un type de base. Il s'agit d'une classe défini dans l’API Java (Dans le package java.lang) String s="aaa"; // s.
Approfondissement du langage
(Classes prédéfinies – API Java)
Cours n°2M2. IST-IE (S. Sidhom) UE 303 Promo. M2 IST-IE 2005/06 Conception dun système d'information multimédia Architecture trois-tiers : PHP/MySQL &
Introduction à Java - les paquetages -
C.
Programmer en JAVA par Tama
LICENCE MIAGE Introduction Programmation Orientée Objet JAVA philippe
JAV - TD 6 Structures de données JAVA
Présentation de Java Stéphane Frénot INSA lyon
TD 1 IJA Introduction Objet, méthode, attribut Classe, instance
IJA - TD 2 Bases du langage
Algorithme et programmation
Principes de programmation (suite)
Programmation orientée objet
JavaBeans Réalise par: EL KHADRAOUY TARIK AOUTIL SAFOWAN.
Les méthodes en java Une méthode est un regroupement d’instructions ayant pour but de faire un traitement bien précis. Une méthode pour être utilisée.
Les exceptions. Quest ce quune exception ? Une erreur dans le programme Due à un bug ou un cas « anormal » Gestion complète en java : JVM Dans dautre.
33 Types de données et opérateurs. 3-2 Objectifs A la fin de ce cours, vous serez capables de : Décrire les types de données primitives Déclarer et initialiser.
Laboratoire d'Informatique de l’Université de Franche-Comté
Principes de programmation (suite)
Introduction au paradigme objet Concepts importants surcharge (overload) redéfinition (override) Définition d’une classe Définition des attributs.
© 2007 P. Van Roy. All rights reserved. FSAB1402: Informatique 2 Le Langage Java et les Exceptions Peter Van Roy Département dIngénierie Informatique,
Introduction à la programmation (Java)
Langage Oriente Objet Cours 2.
Les pointeurs Modes d’adressage de variables. Définition d’un pointeur. Opérateurs de base. Opérations élémentaires. Pointeurs et tableaux. Pointeurs et.
Le langage JAVA Année scolaire
Principes de programmation
IFT 6800 Atelier en Technologies d’information
1 IFT 6800 Atelier en Technologies dinformation Le langage de programmation Java chapitre 1 : Introduction.
1 IFT 6800 Atelier en Technologies dinformation Le langage de programmation Java chapitre 3 : Classes et Objects.
LIFI-Java 2004 Séance du Jeudi 9 sept. Cours 1. La notion de langage Décrire une tâche à effectuer –programme Écrire à un haut niveau –facile pour lutilisateur.
COURS DE PROGRAMMATION ORIENTEE OBJET :
Document élaboré à Centrale Paris par Pascal Morenton LES TECHNOLOGIES DU WEB 1. LES PHASES D UN DEPLOIEMENT DE RESEAUX 2. LE LANGAGE HTML 3. LE LANGAGE.
Les Opérateurs Ils régissent toutes les opérations ou transformations sur les valeurs des variables. Opérateur d'affectation Opérateurs arithmétiques Opérateurs.
L’essentiel du langage C
La notion de type revisitée en POO
Introduction à la programmation objet avec java
Java : Exceptions H Batatia. 5/03/2004Java12: H.Batatia2 Exemple 1 public class Bonjour { public static void main(String[] args) { System.out.println("Bonjour.
Premiers pas dans le langage Java 2012/ Premiers pas dans le langage Java TI3.4 Responsable : M lle Sana Ezzedine
Master 1 SIGLIS Java Lecteur Stéphane Tallard Chapitre 6 – Exceptions.
Master 1 SIGLIS Java Lecteur Stéphane Tallard Les erreurs communes en Java.
© 2005 P. Van Roy. All rights reserved. FSAB1402: Informatique 2 Le Langage Java Peter Van Roy Département d’Ingénierie Informatique, UCL
Tutorat en bio-informatique
12/04/ Les exceptions Cours 11 Cours 11.
Les classes et les objets Les données finales class A { … private final int n = 20 ; // la valeur de n est définie dans sa déclaration … } class A { public.
C# de plus près.  Ce sont globalement les mêmes que Java : ◦ Int(int16, int32), float, double, bool,…  Les classe « communes » sont également les mêmes.
IUT du Limousin L.U.P Michel Vergnaud Programmation Objet - Java.
Introduction au langage JAVA
Cours 4 (14 octobre) Héritage. Chapitre III Héritage.
6ième Classe (Mercredi, 17 novembre) CSI2572
02/06/2015© Robert Godin. Tous droits réservés.1 5 Interface entre SQL et un programme n SQL incomplet n Défaut d'impédance (impedance mismatch) – modèle.
PRO-1027 Programmation Scientifique en C
22 Concepts de base du langage Java. 2-2 Objectifs A la fin de ce cours, vous serez capables de : Identifier les éléments essentiels de Java Identifier.
Programme de baccalauréat en informatique Structures de données IFT Abder Alikacem TP4 Département d’informatique et de génie logiciel Édition septembre.
pour les programmeurs en C++ Java 2 Part 1 3 Histoire de Java Projet de connexion des machines: 1991 Le nom Java a été introduit dans un café Développé.
Exception Handling "Unfortunately, it's almost accepted practice to ignore error conditions, as if we're in a state of denial about errors." Bruce Eckel.
Philippe Gandy – 10 novembre 2015 Basé sur les notes de cours de Daniel Morin et Roch Leclerc.
Introduction au langage C
BlueJ_III 1 Java, les objets : tout de suite ! Interaction entre objets Notes de cours associées au chapitre 3 tutorial BlueJ
LES CLASSES ET LES OBJETS
C++ BY AURÉLIEN MODULO MARION. PLAN DES TROIS PRÉSENTATIONS C++ avancé C++ orienté objet Bases de C++
Java Réalisé par: Mouna POKORA. PLAN: Définition : Historique: Caractéristiques: un langage orienté objet: un langage interprété : un langage portable:
Transcription de la présentation:

Présentation Sur Java Serhani Mohamed Adel Septembre 2001

Plan Définition Caractéristiques du langage Java Les outils de développement Java Un premier programme en Java Structure d'un fichier Java Structure du langage - Type de données - Les Opérateurs - Les tableaux - Structures de contrôle et expressions - Les exceptions - Unités de compilation - Les packages API Standard Références

Qu'est-ce que Java ? Un langage de programmation orienté objets Une architecture de Machine Virtuelle Un ensemble d'API variées Un ensemble d'outils (le JDK)

Bref historique 1993 : projet Oak (langage pour l'électronique grand public) 1995 : Java / HotJava à WWW3 Mai 95 : Netscape prend la licence Sept. 95 : JDK 1.0 b1 Déc. 95 : Microsoft se dit intéressé Janv. 96 : JDK Eté 96 : Java Study Group ISO/IEC JTC 1/SC22 Fin 96 : RMI, JDBC, JavaBeans,... Fév. 97 : JDK 1.1

Les caractéristiques du langage Java Orienté objets Interprété Portable Simple Robuste Sécurisé Multi-threads Distribué

Java est un langage orienté objets Tout est classe (pas de fonctions) sauf les types primitifs ( int, float, double,...) et les tableaux Toutes les classes dérivent de java.lang.Object Héritage simple pour les classes Héritage multiple pour les interfaces Les objets se manipulent via des références Une API objet standard est fournie La syntaxe est proche de celle de C

Java est portable Le compilateur Java génère du byte code. La Java Virtual Machine (JVM) est présente sur Unix, Win32, Mac, OS/2, Netscape, IE,... Le langage a une sémantique très précise. La taille des types primitifs est indépendante de la plate-forme. Java supporte un code source écrit en Unicode. Java est accompagné d'une librairie standard.

Java est robuste A l’origine, c'est un langage pour les applications embarquées. Gestion de la mémoire par un garbage collector. Pas d’accès direct à la mémoire. Mécanisme d'exception. Accès à une référence null exception. compilateur contraignant (erreur si exception non gérée, si utilisation d’une variable non affectée,...). Tableaux = objets (taille connue, débordement  exception). Seules les conversions sûres sont automatiques. Contrôle des cast à l'execution.

Java est sécurisé Indispensable avec le code mobile. Pris en charge dans l'interpréteur. Trois couches de sécurité : Verifier : vérifie le byte code. Class Loader : responsable du chargement des classes. Security Manager : accès aux ressources. Code certifié par une clé.

Java est multi-thread Intégrés au langage et aux API : synchronized garbage collector dans un thread de basse priorité java.lang.Thread, java.lang.Runnable Accès concurrents à objet gérés par un monitor. Implémentation propre à chaque JVM. Difficultés pour la mise au point et le portage.

Java est distribué API réseau (java.net.Socket, java.net.URL,...). Chargement / génération de code dynamique. Applet. Servlet. Protocole / Content handler. Remote Method Invocation. JavaIDL (CORBA).

Les performances Actuellement le byte code est interprété. Plusieurs types de génération de code machine : Conversion statique en C (j2c, Tabo,...) Conversion statique en code natif. Compilation en code machine à la volée (JIT).

Les outils (1) Environnements de développement : Sun JDK 1.1.x (compilateur, interpréteur, appletviewer,...) java-mode emacs IDE : Visual Age, Café, CodeWarrior, Java WorkShop, Jbuilder, Visual J++,... Browsers : Sun HotJava 1.1 Netscape Navigator 4 Internet Explorer 4

Les outils (2) JVM : Kaffe, Cacao, Harissa,... Convertisseur : c2j, j2c, Tabo... Décompilateur/ 'obscurcisseur' : Mocha / Crema Générateur de parseurs : JavaCC, JavaCUP Profiler : Hyperprofiler, ProfileViewer

Les outils (3) Java Development Kit javac : compilateur de sources java java : interpréteur de byte code appletviewer : interpréteur d'applet javadoc : générateur de documentation (HTML, MIF) javah : générateur de header pour l'appel de méthodes natives javap : désassembleur de byte code jdb : debugger javakey : générateur de clés pour la signature de code rmic : compilateur de stubs RMI rmiregistry : "Object Request Broker" RMI

Premier programme: "Factorielle.java" /* Mon premier programme Java */ public class Factorielle { public static double factorielle(int x) { if (x < 0) return 0.0; double fact = 1.0; while (x > 1) { fact = fact * x; x = x - 1; } return fact; } public static void main(String[] args) { int entree = Integer.parseInt(args[0]); double resultat = factorielle(entree); System.out.println(resultat); }

Un premier programme (2) Pour compiler le programme précédent, il faut taper: phobos% javac Factorielle.java La compilation d'un fichier ".java" produit un fichier ".class" dans le même répertoire. Pour exécuter le programme précédent, il faut taper: phobos% java Factorielle

Structure d'un fichier Java Chaque fichier Java doit contenir la définition d'une classe, portant le même nom que celui du fichier (attention aux minuscules/majuscules). C'est pourquoi on ne distinguera pas la classe du fichier qui contient sa définition. Pour pouvoir être exécutée de cette façon, une classe doit contenir une méthode statique appelée "main".

Type de données Java offre les types élémentaires suivants: boolean true/false char Caractère Unicode (sur 16 bits) byte Octet signé short Entier 16-bits signé int Entier 32-bits signé long Entier 64-bits signé float Nombre à point flottant (sur 32-bits) double Nombre à point flottant (sur 64 bits) De plus, Java offre le type String pour manipuler les chaînes de caractères. Donc, ne pas utiliser un tableau de caractères...

Type de données (2) Tableaux d'éléments de même type byte[] tableauByte; int[] fibonacci = { 1, 1, 2, 3, 5, 8, 13, 21 }; String[] listeAdresses = new String[4]; La taille d'un tableau se définit soit par le nombre d'éléments qui l'initialisent, soit à l'allocation. L'accès aux éléments d'un tableau se fait comment en C. x = x + fibonacci[3]; listeAdresses[i] = "1, place du Café, JavaTown" Le nombre d'éléments d'un tableau s'obtient par l'attribut length (en lecture seulement). for (i = 0; i < tableauByte.length; i++)

Opérateurs La plupart ressemblent à ceux qu'on retrouve en C: Arithmétiques: * / % Logiques: ! || && Bits: ~ | & ^ > Relationnels: = > Conditionnels: ?: Assignation: = *= /= %= += -= >= &= ^= |= Quelques nouveaux venus: Concaténation de chaînes: + Décalage de bits vers la droite, sans extension de signe: >>>...et son correspondant avec assignation: >>>= Les opérateurs & et | peuvent aussi s'appliquer sur des booléens. Dans ce cas, les 2 opérandes seront toujours évaluées.

Énoncés Les énoncés Java ressemblent aussi beaucoup à ceux qu'on retrouve en C: Expression Étiquette Déclaration de variables Conditions: if, select/case Boucles: while, do, for Altérations de l'exécution: break, continue, return Quelques particularités Les déclarations peuvent se faire n'importe où dans une méthode. Les énoncés break et continue peuvent accepter une étiquette comme paramètre, précisant la boucle qu'ils affectent.

1. Structure du langage

Structure du langage Les types primitifs boolean(true/false), byte (1 octet), char (2 octets), short (2 octets), int (4 octets), long (8 octets), float (4 octets), double (8 octets). Les variables peuvent être déclarées n'importe où dans un bloc. Les affectations non implicites doivent être castées (sinon erreur à la compilation). int i = 258; long l = i; // ok byte b = i; // error: Explicit cast needed to convert int to byte byte b = 258; // error: Explicit cast needed to convert int to byte byte b = (byte)i; // ok mais b = 2

Structure du langage Les structures de contrôle et expressions Essentiellement les mêmes qu'en C if, switch, for, while, do while ++, +=, &&, &, <<, ?: Plus les blocs labelisés UN: while(...) { DEUX: for(...) { TROIS: while(...) { f (...) continue UN; // Reprend sur la première boucle while if (...) break DEUX; // Quitte la boucle for continue; // Reprend sur la deuxieme boucle while }

Structure du langage Les tableaux Déclaration int[] array_of_int; // équivalent à : int array_of_int[]; Color rgb_cube[][][]; Création et initialisation array_of_int = new int[42]; rgb_cube = new Color[256][256][256]; int[] primes = {1, 2, 3, 5, 7, 7+4}; array_of_int[0] = 3 Utilisation int l = array_of_int.length; // l = 42 int e = array_of_int[50]; // Lève une ArrayIndexOutOfBoundsException

Exceptions(1) Lorsqu'une méthode Java rencontre une situation qu'elle ne peut traiter, elle lance une exception grâce à l'énoncé throw. if (index < 0) throw new ArrayOutOfBoundsException(); Une exception est un objet, une instance d'une sous-classe de java.lang.Exception. Une méthode en amont peut attraper l'exception, permettant une gestion des erreurs plus souple qu'en C, grâce aux énoncés try et catch.

Exceptions(2) Exemple: try {...code susceptible de générer une exception } catch (ArrayOutOfBoundsException e) {...actions à faire pour cette exception } catch (IOException e) {...regroupe toutes les exceptions d'entrée/sortie } catch (Exception e) {...toutes les autres exceptions }

Structure du langage Les exceptions (3) Elles permettent de séparer un bloc d'instructions de la gestion des erreurs pouvant survenir dans ce bloc. try { // Code pouvant lever des IOException ou des SecurityException } catch (IOException e) { // Gestion des IOException et des sous-classes de IOException } catch (Exception e){ // Gestion de toutes les autres exceptions

Structure du langage Les exceptions (4) Ce sont des instances de classes dérivant de java.lang.Exception La levée d'une exception provoque une remontée dans l'appel des méthodes jusqu'à ce qu'un bloc catch acceptant cette exception soit trouvé. Si aucun bloc catch n'est trouvé, l'exception est capturée par l'interpréteur et le programme s'arrête. L'appel à une méthode pouvant lever une exception doit : soit être contenu dans un bloc try/catch soit être situé dans une méthode propageant ( throws ) cette classe d'exception Un bloc (optionnel) finally peut-être posé à la suite des catch. Son contenu est exécuté après un catch ou après un break, un continue ou un return dans le bloc try

Structure du langage Les unités de compilation Le code source d'une classe est appelé unité de compilation. Il est recommandé (mais pas imposé) de ne mettre qu'une classe par unité de compilation. L'unité de compilation (le fichier) doit avoir le même nom que la classe qu'elle contient.

Structure du langage Les packages (1) Un package regroupe un ensemble de classes sous un même espace de 'nomage'. Les noms des packages suivent le schéma : name.subname... Une classe Watch appartenant au package time.clock doit se trouver dans le fichier time/clock/Watch.class Les packages permettent au compilateur et à la JVM de localiser les fichier contenant les classes à charger. L'instruction package indique à quel package appartient la ou les classe(s) de l'unité de compilation (le fichier).

Structure du langage Les packages (2) Les répertoires contenant les packages doivent être présents dans la variable d'environnement CLASSPATH En dehors du package, les noms des classes sont : packageName.className L'instruction import packageName permet d'utiliser des classes sans les préfixer par leur nom de package. Les API sont organisées en package ( java.lang, java.io,... )

API standard Les classes de l'API standard se regroupent en "packages". Parmi les plus utilisés, on retrouve: java.applet Création et communication avec une applet java.awt.* Interface graphique java.io Entrée/sortie java.lang.* Éléments du langage java.math Arithmétique sur grands entiers java.net Télécommunications via socket java.security.* Gestion de clés et de certificat java.text Formats de message java.util.* Utilitaires javax.swing.* Nouvelle interface graphique

API standard (2) Pour utiliser une classe de l'API à l'intérieur d'une de nos classes, on a 3 possibilités: On peut utiliser le nom complet de la classe. java.io.FileInputStream fis; On peut importer la classe. Tous les symboles exportés par la classe deviennent accessibles sans avoir à les préfixer par le nom du "package". import java.net.Socket; On peut importer d'un seul coup toutes les classes d'un "package". import java.math.*; Le "package" java.lang est importé par défaut. Si 2 classes de 2 "packages" différents portent le même nom, il faudra quand même utiliser leur nom complet pour les différencier.

Références Thinking in JavaB. Eckel : Site officiel Java (JDK et doc.) : Info sur Java http// : applications, applets, packages,... : idem : Java pour linux