Conception et Réalisation Java RIP : Partie...

Post on 27-Sep-2020

0 views 0 download

transcript

Concep'on et Réalisa'on JavaRIP : Par'e 2Ahcène Bounceur

Présenta)on

• Ahcène Bounceur• Maître de conférences – département informatique de l'UBO• Cours (Java, RIP, Android)• Recherche : IoT• Bureau : Lc208 (poste 62 17)• Email : Bounceur@univ-brest.fr• Page perso : www.bounceur.com• Cours : www.bounceur.com à Teaching à Java (Réseaux)

Le mot Java• Le langage Java :

– Patrick Naughton : créateur– James Gosling : concepteur– Équipe : John Gage, James Gosling, Joy Naughton, Wayne

Rosing et Eric Schmidt.– Premier nom Oak à il existe déjà (fabricant de cartes

vidéos)• Le nom Java fut inventé dans un pe2t bar fréquenté

par quelques membres de l'équipe.• James Gosling, Arthur Van Hoff et Andy Bechtolsheim• Just Another Vague Acronym• Java pour des cafeNères (systèmes embarqués)

Le Nombre Magique

• C'est un nombre encodé sur 4 octets• Il permet aux programmes traitant

l'information de distinguer le format de données utilisé.

• En Java : il permet à la machine virtuelle de reconnaître les fichiers .class

Lire un fichier d'octets en Javapublic static void main(String [] args) throws IOException {

FileInputStream fis = new FileInputStream("fichier.ppt");int x ;while((x=fis.read()) != -1) {System.out.print(x+" ");}fis.close();

}

Exécution :D0 CF 11 E0 …

Lire un fichier d'octets en Javapublic static void main(String [] args) throws IOException {

FileInputStream fis = new FileInputStream("fichier.class");int x ;while((x=fis.read()) != -1) {System.out.print(x+" ");}fis.close();

}

Exécution :CA FE BA BE …

Produit du bar fréquentéJ et V n'existe pas en Hexadécimal

Humour Unique

?

Séances• Présenta+on des séances (EDT-ENT)• Modifica+ons …• 5 CM• 5 TD• 4 TP + 1 séance d'évalua+on (démonstra+on)• 1 examen écrit• Note du projet : Rapport + démonstra+on + Code

+ Applica+on• Note finale : CC 2 TPs (coef 3/20 chaque), un projet

(coef 3/10) + Examen : écrit 2h (coef 2/5)

Plan du cours

1. Les Flots2. Les Sockets3. Synchronisa9on4. JavaFX5. JDBC, Client/Serveur Bluetooth, Sérialisa9on,

sécurité …Peut être l’IoT

Quelques applica,ons

• Clients/Serveur• Chat (sans fil) entre deux ordinateurs• Stockage à distance (client ftp)• Commande d'un robot, carte FPGA,

téléphone, …• Commande (sans fil) d'un ordinateur• Programmation d’une carte électronique• …

www.#obe.comà TIOBE index

2020

www.#obe.comà TIOBE index

2020

www.#obe.comà TIOBE index

2021

www.#obe.comà TIOBE index

2021

StringString s = new String("Bonjour tout le monde : 1:2:3:4");

s.charAt(3);s.contains("tout");byte [] bytes = s.getBytes();char [] ctab = new char[40];s.getChars(0, 6, ctab, 3);s.indexOf('o');s.indexOf("ou");s.lastIndexOf('o');s.lastIndexOf("ou");s.length();

StringString s = new String("Bonjour tout le monde : 1:2:3:4");

s.charAt(3)); à j s.contains("tout")); à truebyte [] bytes = s.getBytes(); à 66 111 110… s.getChars(0, 6, ctab, 3); à ---Boujou---…s.indexOf('o'));à 1s.indexOf("ou")); à 4s.lastIndexOf('o')); à 17s.lastIndexOf("ou")); à 9s.length()); à 31

StringString s = new String("Bonjour tout le monde : 1:2:3:4");

s.matches("Bonjour tout le monde : 1:2:3:4"));à trues.replace('o', '*')); à B*nj*ur t*o…String [] stab = s.split(":"); à Bonjour…

1234s.startsWith("Bon")); à trues.substring(3));à jour tout …s.toCharArray()); à tableaus.toLowerCase()); à bonjour tout…s.toUpperCase()); à BONJOUR TOUT…

StringString s1 = new String("abcd");String s2 = new String("abcd");String s3 = "abcd";String s4 = "abcd";

System.out.println(s1==s2); System.out.println(s3==s4);System.out.println(s1==s4);System.out.println(s4==s1);

StringString s1 = new String("abcd");String s2 = new String("abcd");String s3 = "abcd";String s4 = "abcd";

System.out.println(s1.equals(s2));System.out.println(s3.equals(s4));System.out.println(s1.equals(s4));System.out.println(s4.equals(s1));

Même principe

• Integer• Boolean• Byte• …

StringBuffer

• Les méthodes intéressantes

StringBufferStringBuffer s5 = new StringBuffer("abcd");StringBuffer s6 = new StringBuffer("abcd");

System.out.println(s5.equals(s6));System.out.println(s5.toString().equals(s6.t

oString()));

Classe : Run+me

• Déclara+on :Runtime runtime = Runtime.getRuntime();

Classe : Run+me

• Lancer une commande :– Exécuter une commande dans un processus externe :

public Process exec(String commande);

– Exécuter une commande dans un processus séparé• sans arguments

public Process exec(String[] cmdarray);

• avec argumentspublic Process exec(String[] cmdarray, String[] envp);

Classe : Run+me

• Lancer une commande :public Process exec(String[] cmdarray, String[] envp, File dir);

public Process exec(String command, String[] envp);

public Process exec(String command, String[] envp, File dir);

Classe : Process• Contrôler le processus (Runtime)• la méthode destroy() qui permet de tuer le processus de

l'application externe,• la méthode exitValue() qui permet de récupérer la valeur de retour

du processus de l'application externe,• la méthode getErrorStream() qui permet de récupérer le flux

d'erreur du processus de l'application externe,• la méthode getInputStream() qui permet de récupérer le flux de

sortie du processus de l'application externe,• la méthode getOutputStream() qui permet de récupérer le flux

d'entrée du processus de l'application externe,• la méthode waitFor() qui met le thread courant en attente que le

processus de l'application externe se termine.

Communica)on avec une applica)on

• Flux• la méthode getErrorStream() permet de

récupérer un InputStream représentant le flux d'erreur de l'applica)on externe.

• la méthode getInputStream() permet de récupérer un InputStream représentant le flux de sor)e de l'applica)on externe.

• la méthode getOutputStream() permet de récupérer un OutputStream représentant le flux d'entrée de l'applica)on externe.

Classe : Robotimport java.awt.AWTException;import java.awt.Robot;import java.awt.event.KeyEvent;

public class RobotExp {public static void main(String[] args) {try {

Robot robot = new Robot();robot.delay(5000);robot.keyPress(KeyEvent.VK_U);robot.keyPress(KeyEvent.VK_A);robot.keyPress(KeyEvent.VK_LEFT);robot.keyPress(KeyEvent.VK_DELETE);robot.keyPress(KeyEvent.VK_B);robot.keyPress(KeyEvent.VK_C);robot.keyPress(KeyEvent.VK_BACK_SPACE);robot.keyPress(KeyEvent.VK_O);

} catch (AWTException e) {}}

}

U|UA|U|AU|UB|UBC|UB|UBO|

Classe : Robot

• Penser à relâcher le bouton !

robot.keyPress(KeyEvent.VK_SHIFT);robot.keyRelease(KeyEvent.VK_SHIFT);

Projet (TPs)Programma'on d'un client FTP (type Filezilla)

• Intervenants : Alexandra Fronville, Fethi Ghazouani, Maxime Pistono

• Pourquoi ce projet ?• Projet se fait en binôme• DémonstraGon : semaine du 16 mars (dernier TP)

• A=en'on : dernier TP (possible semaine d’avant)• ApplicaGon finale + rapport à rendre le : ?? mars• Rendre UNE SEULE archive contenant : src+rapport (PDF)

– Nom de l’archive : projet_Op_nom1_nom2.zip• Le mail : objet sous forme

[PROJET-JAVA-FTP-2020] : Prénom1 Nom1, Prénom2 Nom2

Alors

• Bon voyage (ensemble) au pays de Java et du réseau …