EnvironnementClient/Serveur
Cours5
RappelsJava
Java8
Sérialisation
http://www.lri.fr/~kn
2/23
Plan
1 Rappels sur les systèmes d'exploitations / Communication par mémoire
partagée
2Réseauxgénéralités,IP,UDP
3TCP,RappelssurleMulti-threadenjava.
4BroadcastUDPetétudedecas
5RappelsJava/Java8/Sérialisation
5.1RappelsJava
5.2Java8
5.3Sérialisationd'objets
3/23
final
uneclasse:
uneméthode:
unattribut:
unevariablelocaleouunparamètre:
Quesignifielemotclé sur?
Onnepeutpasdériverlaclasse(ex: )
On ne peut pas redéfinir (
override
) la méthode. Que signifie
redéfinir?
écrire une méthode avecexactement le même prototype dans
uneclassedérivée.
L'attributpeutêtreinitialiséauplustarddansleconstructeur:
sisontypeestprimitif( , , ,…)alorsl'attributest
uneconstante
si l'attribut est un objet, alors c'est une référence constante
verscetobjet!(l'étatinternedecetobjetpeuttoujoursêtremodifié,
cf.lestableaux)
on ne peut pas modifier la valeur de la
variableaprèsinitialisation
4/23
Utilité
Contrôle du code utilisateur. Ex: beaucoup de composants de Java (y de
sécurité)utilisentlaclasse .Sionpouvaitdériverlaclasseetchangerses
méthodes (par exemple ) le code utilisant  n'aurait plus aucune
garantie(pourlesclassesetlesméthodes )
Sûreté et documentation : un attribut ou une variable déclarés  ne
peuventêtremodifiés.Leprogrammeurdéclarequecesontdesconstantes
Efficacité:unattribut étantconstant,l'optimiseurdelaJVMconnaîtresa
valeuretfairedesoptimisations.Uneclasseouuneméthode  nepouvant
pas être dérivée/redéfinie, l'optimiseur peut déterminer son code de manière
certaine
5/23
finally
(malgrélasimilitudedenom,çan'arienàvoiravec
.
Opération courante : on souhaite écrire dans un fichier, puis le refermer.
Cependant,ilfautaussitraiterlecasdesexceptionscorrectement:
Lecodede estdupliqué.Silecodeétaitplusimportant,ceneserait
pasmaintenable.
6/23
finally
Onpeututiliserlaclause dansun pourécrireducodequisera
exécutéobligatoirement:
àlafindubloc,siaucuneexceptionn'estlevée
aprèslecodedu siuneexceptionestrattrapée
avantdequitterlebloc(oulaméthode)sil'exceptionn'estpasrattrapée
Onutilisecetteconstructionlorsquel'onsouhaitelibéreruneressource(fichier,
connexion réseau ou à une base de donnée, …) avant de poursuivre le
programme, quelle que soit la manière dont il se poursuit (normalement,
exceptionrattrapée,exceptionpropagée).
7/23
Plan
1 Rappels sur les systèmes d'exploitations / Communication par mémoire
partagée
2Réseauxgénéralités,IP,UDP
3TCP,RappelssurleMulti-threadenjava.
4BroadcastUDPetétudedecas
5RappelsJava/Java8/Sérialisation
5.1RappelsJava
5.2Java8
5.3Sérialisationd'objets
8/23
Javaestenfinunlangagefonctionnel
Lesinterfacesfonctionnelles:
Leslambdas-abstraction:
La
StreamAPI
:
Java8apportedestraitsfonctionnelsaulangage.Intérêtdelaprogrammation
fonctionnelle:
Codesouventpluscompact
Meilleureréutilisationducode
Codepluspotentiellementplusefficace
Codesouventpluslisible(sionenal'habitude)
Troisingrédients:
Unemanièrededéclarerletypedefonctions
Unemanièrededéfinirdespetitesfonctionsàlavolée
Une bibliothèque d'itérateurs efficaces qui vient s'ajouter aux
9/23
Interfacesfonctionnelles
Une interface fonctionnelle est simplement une  contenant une
méthodeabstraite.Cetteutilisationpermetdedéfinirdestypesde«fonctions».
représenteletyped'unefonctionde vers
représente le type d'une fonction de  vers
représente le type d'une fonction de  vers
10/23
Exemple
11/23
StreamAPI
NouvelleAPIdeJava8.Permetdedéfinirdemanièredéclarativedesitérateurs
sur des flux. Étant donné un objet qui implémente l'(ancienne) interface
(parexemple , , ):
Quegagnet'on?
On va pouvoir définir des itérateurspersistants sur les flux, paresseux et
parallélisable
12/23
Méthodesdel'interfaceStream<T>
renvoielenombred'élémentsdansleflux
renvoieunfluxoù élémentsontétésautés
renvoieunfluxavecuniquementles premierséléments
renvoieunfluxoùlesdoublons(ausensde sont
retirés
renvoieunfluxoùleséléments(quidoiventimplémenter )
sontriés
QuelledifférenceaveclesopérateurssurlesCollections?
Lescollectionssous-jacentesnesontpasdétruites!
13/23
Méthodesdel'interfaceStream<T>(suite)
renvoie le flux de tous les éléments pour
lesquelsleprédicat renvoievrai( peutêtredéfinisurunsuper-typede
T)
renvoievraisitouslesélémentssatisfont
leprédicat
renvoie vrai si un élément satisfait le
prédicat
renvoielefluxd'élémentsdetype
obtenuparapplicationde surtouslesélémentsdufluxdedépart.
applique  tour à tour à tous les éléments
duflux.
transforme le flux en Collection. On peut utiliser
, ,…
14/23
Exemple
Supposonsquel'onaunvecteurd'  .Onsouhaite,touslesincrémenter,
lestrier,puisafficherceuxquisontimpairs:
Exercice,fairelamêmechosesanspasserparlesflux
15/23
λ-abstraction
Il est malcommode de définir les opérations à passer aux itérateurs dans des
classes ( , …, dans l'exemple précédent). Java 8 fournit une syntaxe
commodepourdéfinirdesfonctions:
Lasyntaxegénéraleest:
Lecorpspeutêtresoituneexpressionsimplesoitunbloc:
16/23
λ-abstraction(suite)
Avantagedesλ-abstractions?
Syntaxecompactemaislisible
Localitédeladéfinition(onn'estpasobligédemettrelecodedansuneclasse
ailleurs)
Accèsàl'environnementlocal(àl'inversedesclassesanonymes)
17/23
Quegagnet'onàutiliserlaStreamAPI?
Persistance : les collections sous-jacentes ne sont pas détruites/modifiées,
pasbesoindefairedescopies
Paresse:lesopérationsnesontfaitesquesic'estnécessaire:
Les opérations peuvent se faire le plus possible en parallèle, si on utilise
aulieude pourrécupérerleflux
implémentelemêmeparadigmequeMap/Reduce
18/23
Plan
1 Rappels sur les systèmes d'exploitations / Communication par mémoire
partagée
2Réseauxgénéralités,IP,UDP
3TCP,RappelssurleMulti-threadenjava.
4BroadcastUDPetétudedecas
5RappelsJava/Java8/Sérialisation
5.1RappelsJava
5.2Java8
5.3Sérialisationd'objets
19/23
Pourquoi?
Uneopération couranteen informatiqueest la sérialisation (et désérialisation)
des données, c'est à dire passer d'une représentation «en mémoire» à une
représentation « fichier » (par exemple pour enregistrer dans un fichier ou
envoyersurleréseau). Pourquoi est-cenécessaire ? entre autre, à cause des
pointeurs!
20/23
SérialisationenJava
Java propose un mécanisme de sérialisation des objets. Chaque objet que l'on
veutsauvegarderdoitimplémenterl'interface:
C'estuneinterfacevide,traitéespécialementparlecompilateurJava.Toutobjet
qui implémente cette interface peut être sauvegardée dans un flux (fichier,
réseau,…)etrechargéensuite.Lesattributsainsiquelecodeestsauvegardé.
Beaucoupdeclassesdelabibliothèquestandard implémentent cette interface
(touslestypesdebases, , ,…,ainsiquelescollectionstellesque
,…).
1 / 6 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !