• Aucun résultat trouvé

•Août 91 : Gosling développe Oak•Août 92 : --------------duke----------> •Printemps 91 : Microprocesseur grand public. •Printemps 90 : Naughton, Gosling et Sheridan : Java ?

N/A
N/A
Protected

Academic year: 2022

Partager "•Août 91 : Gosling développe Oak•Août 92 : --------------duke----------> •Printemps 91 : Microprocesseur grand public. •Printemps 90 : Naughton, Gosling et Sheridan : Java ?"

Copied!
29
0
0

Texte intégral

(1)

Java ?

• Printemps 90 : Naughton, Gosling et Sheridan :

– "Le consommateur est le centre du projet, il faut construire un environnement de petite taille avec une petite équipe et intégrer cet environnement dans une nouvelle génération de machines : des ordinateurs simples pour des gens normaux."

• Printemps 91 : Microprocesseur grand public.

– La "Green Team" prototype une machine de pilotage de l'électroménager

• Août 91 : Gosling développe Oak

• Août 92 : ---duke--->

(2)

Java ?

• Eté 1993 : Sté. "First Person" est en train de couler

– Eric Schmidt ( Sun) demande une adaptation au Net

• Gosling : travaille sur le code

• Naughton : cherche une application stratégique

• Janvier 1995

– Oak ==> Java – HotJava

• Août 1995

– Première licence sur Netscape

(3)

Java : Principes

• Simple : C++ sans les couteaux ni les révolvers

• Orienté Objet

• Orienté réseau : Classes de gestion des protocoles

• Robuste : Typage fort compilation et exécution

• Sûr et sécurisé

• Indépendant du matériel : byte-code

• Portable : spécification précise (int=int)

• Haute performances

• Multithread

• Dynamique

(4)

Plateforme Java : architecture

JDK 1.1

JAVA Beans

Serveurs

API de

Sécurité RMI JDBC JNI Internationa

lisation

Java Core Reflection JNDI

Server API Java IDL

Machine Viruelle Java OS + Embedded API +

Personal API

PCs NC PDA Puces Java

Horizontale

Couche système

Plate-formes cibles Media

API

Commerce

API Management API Transaction

Services Autres API Verticale

JDK 1.0

Java Client/Serveur : Nicolas, Avare, Najman - Eyrolles

(5)

Machine Virtuelle : Emulateur

• Byte-Code/P-Code/J-Code

– opcode : 1 octet pour l'instruction – 0,n opérandes

• MicroProcesseur logiciel

– Jeu d'instructions

– Registres (pc, optop, frame, vars) – Pile, Heap

– Ramasse-miettes

– Espace de stockage des méthodes – Tas de constantes

• ==> Compilé ou Interprété

Compilateur javac Byte-Code .class MV Interpréteur

SE Matériel

Source .java

(6)

Un langage de programmation

(7)

Bases du langage

• Types

– byte : 1 octet – short : 2 octets – int : 4 octets – long : 8 octets – float : 4 octets – double : 8 octets – boolean : true false

– char : 2 octets (Unicode)

• Instructions

– if– while, do while, for – selection (switch)

Opérateurs

– Arithmétique : =+-*/%

– Relationnels : <><= >= == !=

– Logiques : ! && ||

– Incréments : ++ --

– Bit Wise : & | ^ ~ >> << >>>

– Affectation : = += -= *= /= %=

(8)

Abstraction

Héritage

extends

– héritage simple

• super : Accède à la méthode parente

• this : Accède à l'objet lui-même

Classes abstraites

(9)

Interface

– Toutes les méthodes sont abstraites et publiques – Tous les attributs sont final public static

• Spécification formelle de classe

– Indique les services rendus par la classe qui implante l'interface

• Une classe peut implanter plusieurs interfaces

• public interface Translatable { ...

abstract public void translater(); ...}

• public class Cercle extends FigureGeometrique

implements Modifiable, Translatable {

public void translater(){ ... }

public void modifier(){...} }

(10)

Encapsulation

• Portée des données

– private, (vide), protected, public

• Paquetage

– Ensemble de classes – Permet de :

• regrouper les classes d'un point de vue conceptuel

• Définir une protection sur les attributs partagés

– Répertoire physique

(11)

Une librairie standard

(12)

API du JDK (Paquetages)

java.lang : classes de bases (+reflect) java.io : entrées/sorties

java.util : utilitaires (structures, dates, events) (+zip) java.net : réseau

java.applet : gestion des applets

java.awt : interface graphique (image, +datatransfert, +event) java.beans : définition de composants réutilisables

java.math : entier de taille variable

java.rmi : invocation distante (+dgc, +registry, +server) java.security : (+acl, +interfaces)

java.sql : jdbc ...

java.text : traduction, chaine=f(langue)

(13)

Des concepts de programmation

(14)

Mécanisme d'exception

class PileSale { ...

assiette depiler() throws Exception {

if (pileVide()) throw new Exception("trop tard ! f(depiler)");

return (elementsuivant()); } class MachineALaver{

void laver() throws Exception { ...

assiettessales.depiler();

}

class Bonnes_Resolutions { void bonneresolution1 () {

try {mamachinealaver.laver();} catch {Exception e) { e.printStackTrace(); }

(15)

Threads

• Execution de tâches en //

• Mémoire, Code et Ressources partagés

• Economie de ressources

• Un thread ~= méthode qui rend immédiatement la main

• Exemple événements (IHM, Réseau)

• + priorités

• + synchronisation

– (moniteur, synchronized)

Nouveau-

Blockée

Runnable

Morte

Running new()

stop()

resume()

yield()

stop() stop()

start() notify()

suspend() sleep()

wait()

(16)

Gestion de l'interface utilisateur

(17)

Paquetage Awt

• Abstract Window Toolkit

• Composants

– simple et conteneur

• A chaque conteneur est associé une mise en page assurée par l'interface LayoutManager

– flowlayout – borderlayout – cardlayout – gridlayout

– gridbaglayout

(18)

Java Awt : Container

Conteneurs de composants, héritent de la classe abstraite Container

– Panel, // Container dans un autre container : exApplet – ScrolPane, //Ajoute les barres de défilement

– Window //Fenêtre sans bordure ni menu, borderLayout par default

• Frame // windows + Titre

• Dialog //Saisie de données (setModal, isModal)

– FileDialog //Fonction du SE

instanciate, setLayout, add, remove, getComponents

class HelloWeb {

public static void main( String[] args) { Frame uneFrame=new Frame("Le Titre");

uneFrame.add("Center", new Label("Bonjour", Label.CENTER));

uneFrame.pack();

uneFrame.show();

} }

(19)

Layout Managers

FlowLayout

:

standard, gauche à droite, mais centré

• setLayout(new GridLayout(3,2)); //ligne, colonne (2,0)

BorderLayout :

North, South, East, West, Center

– p.add(new Button("Ouest"));

CardLayout

: Pile de cartes :

– first( ), last( ), next( ) et previous()

GridBagLayout

:

– Position relative entre les composants en utilisant des contraintes – Composants sont organisés sur une grille logique

– Complexe

(20)

La gestion des événements

Evénements = objets dérivés de EventObject Source dérive d'un composant graphique

Le délégué implante des interfaces spécifiques dérivant de EventListener

public <TypeEvt>Listener add<TypeEvt>Listener(<TypeEvt>Listener leDelegue) Source de

l'événement

Evénement

Délégué java.util.EventObject

java.util.EventListener

(21)

Adaptation au Web

(22)

Deux formes de Java

• Exemple d'application

public class MonApplication {

public static void main (String args[]) { System.out.println("Salut !");

} }

• Application=classe

• main()

• Nom classe = nom de fichier

• Exemple d'applet

import java.awt.*;

import java.applet.Applet;

public class MonApplet extends Applet { public void paint (Graphics g) {

g.drawString("Mon Applet",5,15);

} }

• applet=classe

• hérite d'Applet

• executé par une page html

• nom classe = nom fichier

(23)

Cycle de vie

• Une applet hérite de la classe Applet elle est pilotée par le browser Web

constructeur appelé en premier

init() Une seule fois à la création de l'applet start() Appelée après init() et chaque

fois qu'elle a été stoppée

stop() Appelée chaque fois que l'applet doit être interrompue

destroy() Appelée lorsque le client quitte la page HTML

paint() Appelée chaque fois que l'Applet doit se redessiner

Objet Composant

Container Panel Applet

(24)

Composants logiciels : Beans

(25)

Java Beans

• Composant logiciel

– Commercialisable – Communiquant

– Indépendant (Environnement d'intégration) – Intégrable

– != application

– interface parfaitement définie

• méthodes, événements, propriétés

(26)

Modèle d'écriture du code

• Modèles d'écriture du code

– propriétés (normales, indexées, liées et contraintes)

• public integer getAge( );

• public void setAge(integer a);

• public boolean isHomme();

• void setNom(int index, String nom);

• String getNom(int index);

– void setNom(String values[]);

– String[ ] getNom();

– événements

• public void add<TypeEventListener>(<TypeEventListener> a)

• public void remove<TypeEventListener>(<TypeEventListener> a)

– Méthodes

• publiques

– PropertyChangeListener / PropertyChangeSupport

(27)

JavaBeans : Marché du composant

• Développement de Bean

• Infrastructure d'intégration

• Infrastructure de fonctionnement

• Applications spécialisées

(28)

Composants distribués...

(29)

Java : Conclusion

• Augmente la productivité

– moins coûteux pour les décideurs

– plus intéressant pour les développeurs (comparer)

• Langage d'avenir pour :

– les applications distribuées (portable, sécurisé) – le développement OO

• simple, puissant, outillé, bibliothèques

– les applications embarquées

• Introduit tous les mécanismes des langages de programmation modernes

• Langage universel

Références

Documents relatifs

DÉCOUVRIR L’ ÉCRIT Identification de formes écrites.. Discriminer un groupe mot parmi d’autres

Discriminer un groupe mots parmi d’autres écritures voisines.. DECOUVRIR L’ ECRIT Identification de

Avant le tirage, combien de billes noires faut-il ajouter pour cela dans le sac d’Aline..

Avant le tirage, combien de billes noires faut-il ajouter pour cela dans le sac d’Aline..

Ils font la synthèse entre le libéralisme économique et politique : Ils restent fidèles au parlementarisme, aux libertés fondamentales, au respect de la

Vérifier que les hypothèses du théorème de convergence de la méthode de la sécante sont bien vérifiées.. Vérifier que les hypothèses du théorème de convergence de la méthode

stelt de Commissie eenparig voor de beslissing van 23 december 1991 met betrekking tot de vervolgin- gen lastens de heer Van Rossem te bevestigen met dien verstande dat in casu de

À l’aide du tableur et en utilisant uniquement les valeurs de la ligne 3 et de la cellule G5, calcule la valeur des angles pour la représentation de ces données sous forme