Serialització i persistència

Slides:



Advertisements
Presentaciones similares
ELS BLOCS I LA SEVA APLICACIÓ A L’AULA Recull de propostes sobre els usos didàctics dels blocs Material del Curs de l’Escola d’Estiu Virtual d’Espiral.
Advertisements

INTRODUCCIÓ A L’ELECTRÒNICA PRÀCTIQUES D’ELECTRÒNICA BÀSICA. I.E.S. ENRIC VALOR PEGO.
EL NOU CATÀLEG DE LA BIBLIOTECA de l’escola
Gestor Integrat de Referències
2. L' idealisme transcendental:la síntesi kantiana 2. 3
Sistema de gestió APPCC
Alejandro Arangua Rovira Kenneth Alonso Muñoz
Impress 3... Posa-hi un fons!
Campus Virtual.
Campus Virtual.
L’ordinador i els Sistemes Operatius(S.O)
Tema 4: L’inici del cicle comptable
TNR. Metodologia del Focus Group Carles Roca
L’ENTRENAMENT ESPORTIU
El qualificador i les qualificacions al Campus Virtual de la UB
INTERNET i Correu Electrònic
El portafoli d'aprenentatge de l’estudiantat
Disseny de la interfície d’un smartwatch i l’aplicació mòbil
José Luis Molina Materiales proporcionados por Javier Ávila Molero
Ciències per al món contemporani
AVALUAR-QUALIFICAR PER COMPETÈNCIES
AVALUACIÓ DE L’ASSIGNATURA DIDÀCTICA DE LES CIÈNCIES EXPERIMENTALS, 1
APRENENTATGE MULTINIVELL
2c. Les pàgines web i l’hipertext. Les bases de dades a la xarxa
Generacions de llocs web
Presentació de la base de dades
3 Ara proposeu el portafoli a la vostra assignatura (2,5 h) presencials (4 h de treball fora de l’aula (presentació de resultats a l’Atenea 6 de març.
PROJECTES: UN LLARG CAMÍ…
Un exemple de Màquina Virtual: el programa VMware
Les qualitats psicomotrius
TERMOREGULACIÓ HORÀRIA INDIVIDUAL DELS ESPAIS DEL CENTRE
PETITS REPORTERS Títol.
Library and Information Science Abstract
Creació d’un mapa personalitzat
Presentació de la base de dades
El nou pla docent de la UB: Adequació al sistema ECTS
Estudi de components ASP per al tractament ‘off line’ d’imatges
LA CIÈNCIA A L’ESCOLA PRIMÀRIA
PERIFÈRICS ... Descobreix el que envolta l’ordinador!
Gestió de continguts digitals: una experiència
Les Restriccions d’accés
Mediació IES s'Agulla (Blanes) Què és la mediació? Conflictes que
Tutorials Campus Virtual Càrrega automàtica d’alumnes
Eines d’internet per al professorat d’EOI.
NUTRICIÓ I PREVENCIÓ DEL CÀNCER DE MAMA
Disseny de la persistència Serialització
Gestió electrònica del Dipòsit Legal
1 La identificació com a usuari periodista es realitza la primera vegada introduint en el camp Usuario, la lletra E seguida dels vuit dígits del DNI.
Jonathan Ceballos Rodriguez ( ) Zenón Perisé Alía ( )
El portafoli d'aprenentatge de l’estudiantat
Disseny de la persistència Introducció i mapping objecte/relacional
Disseny de la persistència Serialització
millora de la qualitat de l’ensenyament.
LES XARXES LOCALS i els seus components.
Projecte Gestió de precintes de vehicles
TREBALL D’INVESTIGACIÓ sobre la teoria de l’evolució actualment
ERIC Manual d’ús.
Proves de competències bàsiques als 14 anys
Al vostre gust amb el 8 Amb so ¯
Threads en Java David Gañán Jiménez.
INFORMÀTICA BÀSICA 1r ESO curs
Projecte Fi de Carrera - J2EE Alumne: Daniel Clemente Marcè
La literatura i les matemàtiques van de la mà.
APPLICATION SERVERS Seminari de CASO Q Josep Sanjuàs Cuxart
Sistema de descàrrega d’aplicacions per a mòbils intel·ligents
MESURA DEL RADI DE LA TERRA (seguint Eratóstenes)
Màster d’Aplicacions Multimèdia
Grup de Treball en el Portafoli de l’Estudiant
Gestió del coneixement
Estils i Plantilles Ms Word.
Transcripción de la presentación:

Serialització i persistència Java ME Serialització i persistència Presentació: Nom. Index de les tres parts de la prova? OBJECTIU: comprovació de l'aptitud pedagògica de l'aspirant i el seu domini de les tècniques necessàries per a l'exercici docent CONCLUSIÓ: Degut a que el temps per aquesta prova es limitat, em centraré en les parts de la programació que són competència directa del professor i només esmentaré de forma ràpida les qüestions que venen fixades de forma normativa per alguns dels ents reguladors dels Cfs. El meu objectiu és intentar demostrar en aquest temps límitat la meva capacitat com a docent, que puc ser bon comunicador, amb iniciativa i creativitat, sensible amb la diversitat a l'aula i als conflictes i/o problemes que poden sortir i que obviament predisposat a la innovació i adaptació a les circumstàncies

Serialització i persistència Conversió d'un objecte en un seqüència de bytes Permet enviar dades i rebre objectes a través de fluxes d'E/S Persistència És el procés de guardar la informació en memòria volàtil dels objectes a memòria persistent El procés es realitza serialitzant l'objecte cap a la memòria persistent (fitxer, base de dades, etc...)

Reflection Avantatges Facilita la extensibilitat Aplicacions externes poden fer ús de classes amb reflection Navegadors de classes i IDE Exposar les característiques de les classes permet navegar per elles i implementar les ajudes de codi dels IDE Depuradors i eines de Test Els depuradors poden accedir als membres privats de les classes. Les eines de test poden fer un ús intensiu de reflection per implementar els test.

Reflection Inconvenients Costos de rendiment S'han de resoldre tipus de dades de forma dinàmica. Al no saber a priori el tipus no es poden aplicar certes optimitzacions Cal evitar l'ús abusiu de reflection sobretot en aplicacions sensibles al rendiment. Restriccions de seguretat Requereix de certs permisos en temps d'execució que poden no estar disponibles sota un Security Manager (p.ex. Applets) Exposició de mètodes privats Pot tenir repercussions i efectes secundaris inesperats. Pot destruir la portabilitat de l'aplicació

Reflection java.lang.Class Les implementacions de Java ME i Java SE són diferents. Java ME suporta reflection de forma limitada Class a Java ME Class a Java SE No existeix el paquet java.lang.reflect a Java ME L'operador instanceof forma part de reflection JUnit no es pot aplicar a Java ME per falta de suport de reflectionhttp://java.sun.com/docs/books/tutorial/refl ect/class/index.html

Serialització manual CLDC no suporta serialització d'objectes Suport limitat per a reflection Necessitem serialitzar objectes per enviar-los a través de la xarxa Serialització manual Definirem mètodes serialize() i deserialize() en els objectes que vulguem fer persistents Utilitzarem els fluxos DataOutputStream i DataInputStream per a codificar i decodificar les dades

Serialització i persistència Java SE Al paquet java.io existeixen Interfície Serializable Els objectes ObjectOutputStream/ObjectInputStream i ObjectOutput i ObjectInput. Hi han mètodes per escriure el objecte en un stream persistent: ObjectOutputStream.writeObject() ObjectInputstream.readObject() En Java ME no disposem d'aquests objectes i per tant la persistència s'ha de fer manualment.

Serialització manual Creem la interfície Persistent /** * Un interfície simple per a la creació d'objectes persistents */ public interface Persistent { * Implementació de la persistència de l'objecte byte[] serialize() throws IOException; * Recuperació d'un objecte persistent void deserialize( byte[] data ) throws IOException; }

Serialització manual Serialitzar i deserialitzar un objecte Professor profe = new Professor(); try { byte[] persistedProfe = profe.serialize(); } catch( java.io.IOException e ){ // Control d'errors byte[] persistedProfe = ....; // Codi per obtenir l'objecte Professor profe = new Professor(); try { profe.deserialize( persistedProfe ); } catch( java.io.IOException e ){ // Control d'errors

Persistència d'objectes complexos Exemple Vector. Objecte dinàmic Cal guardar totes les dades necessàries, en aquest cas el nombre d'elements del vector public static byte[] serialize(Vector v) throws IOException { ByteArrayOutputStream bout = new ByteArrayOutputStream(); DataOutputStream dout = new DataOutputStream(bout); int n = v.size(); dout.writeInt(n); for (int i = 0; i < n; ++i) { Object o = v.elementAt(i); if (o instanceof String) { dout.writeUTF((String) o); }else { throw new IOException( "No es pot persistir l'objecte de tipus” + o.getClass().getName()); } dout.flush(); return bout.toByteArray();

Persistència d'objectes complexos Objectes amb referències a altres objectes La cosa és complica... Cal implementar tota la cadena de persistència (implementar la persistència de l'objecte i dels objectes als quals fa referencia) Cal vigilar les referències creuades i fer un exhaustiu control d'errors Es recomana que els objectes a persistir siguin autocontinguts.

Persistència d'objectes complexos Problemes de rendiment Com hem vist, els mètodes de reflection i l'operador instanceof són lents en Java ME Millor guardar el tipus de classe al serialitzar Nom complet de la classe més paquet! En comptes de: Professor --> edu.upc.ice.gestioAules.Professor String cname = din.readUTF(); Object profe; if( cname.equals( "edu.upc.ice.gestioAules.Professor" ) ){ profe = new Professor(); } else { throw new UnknownClassException(); } ((Persistent) profe).deserialize( tmp );

Persistència d'objectes complexos Persistència d'objectes en cadena public static byte[] serialize( Vector v ) throws IOException { ... if( o instanceof Persistent ){ dout.writeUTF(o.getClass().getName() ); byte[] data = ((Persistent) o).serialize(); dout.writeInt( data.length ); if( data.length > 0 ){ dout.write( data ); }

http://creativecommons.org/licenses/by/3.0/deed.ca