SlideShare a Scribd company logo
1 of 51
ObjectOutputStream для этого потока
public class SerializationObject implements Serializable {
private String name; // name = Zoe
private int age; // age = 31
…
}
SerializationObject object = new SerializationObject("Zoe", 31);
FileOutputStream fileOut = new FileOutputStream("test.bin");
ObjectOutputStream out = new ObjectOutputStream(fileOut);
out.writeObject(object);
out.close();
private static final long serialVersionUID = -3895203507200457730L;
―
―
―
static Class<T> forName(String className)
String getCanonicalName()
Field getField(String name)
Class[] getInterfaces()
Method[] getMethods()
Constructor[] getConstructors()
getInterfaces()
Bootstrap class loader <JAVA_HOME>/jre/lib
Extensions class loader <JAVA_HOME>/jre/lib/ext
System class loader CLASSPATH
public static Object createIntance(String className){
try {
return Class.forName(className).newInstance();
} catch (…){}
}
public static void setFieldValue(Object object, String fieldName, String value){
try {
Field field = object.getClass().getDeclaredField(fieldName);
field.setAccessible(true);
if(field.getType().equals(String.class)){
field.set(object, value);
} else if ( field.getType().equals(int.class)){
field.set(object, Integer.decode(value));
}
field.setAccessible(false);
} catch(…){}
}
public class ObjectFactory {
public static Object readObject(String path) {
try {
FileInputStream fileOut = new FileInputStream(path);
ObjectInputStream in = new ObjectInputStream(fileOut);
Object object = in.readObject();
in.close();
return object;
} catch(IOException i) {
i.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
return null;
}
}
―
―
―
―
org.xml.sax.helpers.DefaultHandler
startDocument()
startElement(…)
characters(…)
endElement(…)
endDocument()
<class type=“main.SerializationObject”>
<name>Zully</name>
<age>23</age>
</class>
public class SaxEmptyHandler extends DefaultHandler {
private static String CLASSNAME = "class";
private boolean inElement = false;
public void startElement(String uri, String localName, String qName, Attributes attributes) {
System.out.println("Start element: " + qName);
if(qName != CLASSNAME)
inElement = true;
else
System.out.println("Class name: " + attributes.getValue(0));
}
public void endElement(String uri, String localName, String qName) {
System.out.println("End element: " + qName);
inElement = false;
}
public void characters(char ch[], int start, int length) {
if(inElement)
System.out.println("Process : " + new String(ch, start, length));
}
}
public void startElement(String uri, String localName, String qName, Attributes attributes) {
if(qName != CLASSNAME){
element = qName;
}
else{
String className = attributes.getValue(0);
System.out.println("Class name: " + className);
object = ReflectionHelper.createIntance(className);
}
}
public void endElement(String uri, String localName, String qName) {
element = null;
}
public void characters(char ch[], int start, int length) {
if(element != null){
String value = new String(ch, start, length);
System.out.println(element + " = " + value);
ReflectionHelper.setFieldValue(object, element, value);
}
}
javax.xml.parsers.DocumentBuilderFactory
javax.xml.parsers.DocumentBuilder
org.w3c.dom.Document
File fXmlFile = new File(“test.xml”);
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(fXmlFile);





―
Вынести все параметры в XML файлы
Создать class ResourceFactory (singleton)
GameSessionResource resource =
(GameSessionResource) ResourceFactory.instance().get(“./GameResource.xml”)
Создать interface Resource и class GameSessionResource
31. Сериализация/десериализация. Interface Serializable.
32. Ключевое слово transient. Причины использования transient.
33. Reflection. Роль reflection в сериализации.
34. Шаблон проектирования Factory method.
35. SAX парсер.
36. DOM парсер.
37. Ресурсная система сервера.
Java весна 2013 лекция 7
Java весна 2013 лекция 7

More Related Content

What's hot

JUG.ua 20170225 - Java bytecode instrumentation
JUG.ua 20170225 - Java bytecode instrumentationJUG.ua 20170225 - Java bytecode instrumentation
JUG.ua 20170225 - Java bytecode instrumentationAnton Arhipov
 
Programming Java - Lection 03 - Classes - Lavrentyev Fedor
Programming Java - Lection 03 - Classes - Lavrentyev FedorProgramming Java - Lection 03 - Classes - Lavrentyev Fedor
Programming Java - Lection 03 - Classes - Lavrentyev FedorFedor Lavrentyev
 
Import java
Import javaImport java
Import javawildled
 
Binari searc
Binari searcBinari searc
Binari searcayi_ayi
 
Sobrecarga e Sobrescrita - Preparatório Certificação - OCAJP7 - Aula 2 - F
Sobrecarga e Sobrescrita - Preparatório Certificação - OCAJP7 - Aula 2 - FSobrecarga e Sobrescrita - Preparatório Certificação - OCAJP7 - Aula 2 - F
Sobrecarga e Sobrescrita - Preparatório Certificação - OCAJP7 - Aula 2 - FPaulo Henrique Lerbach Rodrigues
 
EJEMPLOS DESARROLLADOS
EJEMPLOS DESARROLLADOSEJEMPLOS DESARROLLADOS
EJEMPLOS DESARROLLADOSDarwin Durand
 
JS programowanie obiektowe
JS  programowanie obiektoweJS  programowanie obiektowe
JS programowanie obiektowePiotr Czajkowski
 
Java AWT Calculadora
Java AWT CalculadoraJava AWT Calculadora
Java AWT Calculadorajubacalo
 
Form Pemesanan Tiket dengan Java NetBeans
Form Pemesanan Tiket dengan Java NetBeansForm Pemesanan Tiket dengan Java NetBeans
Form Pemesanan Tiket dengan Java NetBeansAldila Putri
 
Laporan ai modul 3-if b 2014-14102055-deprilana ego prakasa
Laporan ai modul 3-if b 2014-14102055-deprilana ego prakasaLaporan ai modul 3-if b 2014-14102055-deprilana ego prakasa
Laporan ai modul 3-if b 2014-14102055-deprilana ego prakasaDeprilana Ego Prakasa
 
Java Script - Object-Oriented Programming
Java Script - Object-Oriented ProgrammingJava Script - Object-Oriented Programming
Java Script - Object-Oriented Programmingintive
 
Java Thread Cronometro
Java Thread CronometroJava Thread Cronometro
Java Thread Cronometrojubacalo
 
Java & le pattern matching
Java & le pattern matchingJava & le pattern matching
Java & le pattern matchingDidier Plaindoux
 

What's hot (20)

JUG.ua 20170225 - Java bytecode instrumentation
JUG.ua 20170225 - Java bytecode instrumentationJUG.ua 20170225 - Java bytecode instrumentation
JUG.ua 20170225 - Java bytecode instrumentation
 
Programming Java - Lection 03 - Classes - Lavrentyev Fedor
Programming Java - Lection 03 - Classes - Lavrentyev FedorProgramming Java - Lection 03 - Classes - Lavrentyev Fedor
Programming Java - Lection 03 - Classes - Lavrentyev Fedor
 
Import java
Import javaImport java
Import java
 
Linked list proj
Linked list projLinked list proj
Linked list proj
 
Dapan
DapanDapan
Dapan
 
Binari searc
Binari searcBinari searc
Binari searc
 
Sobrecarga e Sobrescrita - Preparatório Certificação - OCAJP7 - Aula 2 - F
Sobrecarga e Sobrescrita - Preparatório Certificação - OCAJP7 - Aula 2 - FSobrecarga e Sobrescrita - Preparatório Certificação - OCAJP7 - Aula 2 - F
Sobrecarga e Sobrescrita - Preparatório Certificação - OCAJP7 - Aula 2 - F
 
EJEMPLOS DESARROLLADOS
EJEMPLOS DESARROLLADOSEJEMPLOS DESARROLLADOS
EJEMPLOS DESARROLLADOS
 
Text Editor1
Text Editor1Text Editor1
Text Editor1
 
JQuery
JQueryJQuery
JQuery
 
JS programowanie obiektowe
JS  programowanie obiektoweJS  programowanie obiektowe
JS programowanie obiektowe
 
Java AWT Calculadora
Java AWT CalculadoraJava AWT Calculadora
Java AWT Calculadora
 
Form Pemesanan Tiket dengan Java NetBeans
Form Pemesanan Tiket dengan Java NetBeansForm Pemesanan Tiket dengan Java NetBeans
Form Pemesanan Tiket dengan Java NetBeans
 
Laporan ai modul 3-if b 2014-14102055-deprilana ego prakasa
Laporan ai modul 3-if b 2014-14102055-deprilana ego prakasaLaporan ai modul 3-if b 2014-14102055-deprilana ego prakasa
Laporan ai modul 3-if b 2014-14102055-deprilana ego prakasa
 
Taller de string(java)
Taller de string(java)Taller de string(java)
Taller de string(java)
 
All set1
All set1All set1
All set1
 
Java Script - Object-Oriented Programming
Java Script - Object-Oriented ProgrammingJava Script - Object-Oriented Programming
Java Script - Object-Oriented Programming
 
Tugas praktek modul isbd
Tugas praktek modul isbdTugas praktek modul isbd
Tugas praktek modul isbd
 
Java Thread Cronometro
Java Thread CronometroJava Thread Cronometro
Java Thread Cronometro
 
Java & le pattern matching
Java & le pattern matchingJava & le pattern matching
Java & le pattern matching
 

Viewers also liked

C++ осень 2012 лекция 8
C++ осень 2012 лекция 8C++ осень 2012 лекция 8
C++ осень 2012 лекция 8Technopark
 
Java осень 2012 лекция 3
Java осень 2012 лекция 3Java осень 2012 лекция 3
Java осень 2012 лекция 3Technopark
 
Java осень 2012 лекция 4
Java осень 2012 лекция 4Java осень 2012 лекция 4
Java осень 2012 лекция 4Technopark
 
Бизнес и системный анализ весна 2013 лекция 1
Бизнес и системный анализ весна 2013 лекция 1Бизнес и системный анализ весна 2013 лекция 1
Бизнес и системный анализ весна 2013 лекция 1Technopark
 
Java весна 2013 лекция 8
Java весна 2013 лекция 8Java весна 2013 лекция 8
Java весна 2013 лекция 8Technopark
 
Web весна 2012 лекция 7
Web весна 2012 лекция 7Web весна 2012 лекция 7
Web весна 2012 лекция 7Technopark
 

Viewers also liked (6)

C++ осень 2012 лекция 8
C++ осень 2012 лекция 8C++ осень 2012 лекция 8
C++ осень 2012 лекция 8
 
Java осень 2012 лекция 3
Java осень 2012 лекция 3Java осень 2012 лекция 3
Java осень 2012 лекция 3
 
Java осень 2012 лекция 4
Java осень 2012 лекция 4Java осень 2012 лекция 4
Java осень 2012 лекция 4
 
Бизнес и системный анализ весна 2013 лекция 1
Бизнес и системный анализ весна 2013 лекция 1Бизнес и системный анализ весна 2013 лекция 1
Бизнес и системный анализ весна 2013 лекция 1
 
Java весна 2013 лекция 8
Java весна 2013 лекция 8Java весна 2013 лекция 8
Java весна 2013 лекция 8
 
Web весна 2012 лекция 7
Web весна 2012 лекция 7Web весна 2012 лекция 7
Web весна 2012 лекция 7
 

More from Technopark

Лекция 11. Вычислительная модель Pregel
Лекция 11. Вычислительная модель PregelЛекция 11. Вычислительная модель Pregel
Лекция 11. Вычислительная модель PregelTechnopark
 
Лекция 14. Hadoop в Поиске Mail.Ru
Лекция 14. Hadoop в Поиске Mail.RuЛекция 14. Hadoop в Поиске Mail.Ru
Лекция 14. Hadoop в Поиске Mail.RuTechnopark
 
Лекция 13. YARN
Лекция 13. YARNЛекция 13. YARN
Лекция 13. YARNTechnopark
 
Лекция 12. Spark
Лекция 12. SparkЛекция 12. Spark
Лекция 12. SparkTechnopark
 
Лекция 10. Apache Mahout
Лекция 10. Apache MahoutЛекция 10. Apache Mahout
Лекция 10. Apache MahoutTechnopark
 
Лекция 9. ZooKeeper
Лекция 9. ZooKeeperЛекция 9. ZooKeeper
Лекция 9. ZooKeeperTechnopark
 
Лекция 7. Введение в Pig и Hive
Лекция 7. Введение в Pig и HiveЛекция 7. Введение в Pig и Hive
Лекция 7. Введение в Pig и HiveTechnopark
 
Лекция 6. MapReduce в Hadoop (графы)
Лекция 6. MapReduce в Hadoop (графы)Лекция 6. MapReduce в Hadoop (графы)
Лекция 6. MapReduce в Hadoop (графы)Technopark
 
Лекция 5. MapReduce в Hadoop (алгоритмы)
Лекция 5. MapReduce в Hadoop (алгоритмы)Лекция 5. MapReduce в Hadoop (алгоритмы)
Лекция 5. MapReduce в Hadoop (алгоритмы)Technopark
 
Лекция 4. MapReduce в Hadoop (введение)
Лекция 4. MapReduce в Hadoop (введение)Лекция 4. MapReduce в Hadoop (введение)
Лекция 4. MapReduce в Hadoop (введение)Technopark
 
Лекция 3. Распределённая файловая система HDFS
Лекция 3. Распределённая файловая система HDFSЛекция 3. Распределённая файловая система HDFS
Лекция 3. Распределённая файловая система HDFSTechnopark
 
Лекция 2. Основы Hadoop
Лекция 2. Основы HadoopЛекция 2. Основы Hadoop
Лекция 2. Основы HadoopTechnopark
 
Лекция 1. Введение в Big Data и MapReduce
Лекция 1. Введение в Big Data и MapReduceЛекция 1. Введение в Big Data и MapReduce
Лекция 1. Введение в Big Data и MapReduceTechnopark
 
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"Technopark
 
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...Technopark
 
СУБД 2013 Лекция №9 "Безопасность баз данных"
СУБД 2013 Лекция №9 "Безопасность баз данных"СУБД 2013 Лекция №9 "Безопасность баз данных"
СУБД 2013 Лекция №9 "Безопасность баз данных"Technopark
 
СУБД 2013 Лекция №8 "Конфигурирование базы данных"
СУБД 2013 Лекция №8 "Конфигурирование базы данных"СУБД 2013 Лекция №8 "Конфигурирование базы данных"
СУБД 2013 Лекция №8 "Конфигурирование базы данных"Technopark
 
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"Technopark
 
СУБД 2013 Лекция №5 "Определение узких мест"
СУБД 2013 Лекция №5 "Определение узких мест"СУБД 2013 Лекция №5 "Определение узких мест"
СУБД 2013 Лекция №5 "Определение узких мест"Technopark
 
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...Technopark
 

More from Technopark (20)

Лекция 11. Вычислительная модель Pregel
Лекция 11. Вычислительная модель PregelЛекция 11. Вычислительная модель Pregel
Лекция 11. Вычислительная модель Pregel
 
Лекция 14. Hadoop в Поиске Mail.Ru
Лекция 14. Hadoop в Поиске Mail.RuЛекция 14. Hadoop в Поиске Mail.Ru
Лекция 14. Hadoop в Поиске Mail.Ru
 
Лекция 13. YARN
Лекция 13. YARNЛекция 13. YARN
Лекция 13. YARN
 
Лекция 12. Spark
Лекция 12. SparkЛекция 12. Spark
Лекция 12. Spark
 
Лекция 10. Apache Mahout
Лекция 10. Apache MahoutЛекция 10. Apache Mahout
Лекция 10. Apache Mahout
 
Лекция 9. ZooKeeper
Лекция 9. ZooKeeperЛекция 9. ZooKeeper
Лекция 9. ZooKeeper
 
Лекция 7. Введение в Pig и Hive
Лекция 7. Введение в Pig и HiveЛекция 7. Введение в Pig и Hive
Лекция 7. Введение в Pig и Hive
 
Лекция 6. MapReduce в Hadoop (графы)
Лекция 6. MapReduce в Hadoop (графы)Лекция 6. MapReduce в Hadoop (графы)
Лекция 6. MapReduce в Hadoop (графы)
 
Лекция 5. MapReduce в Hadoop (алгоритмы)
Лекция 5. MapReduce в Hadoop (алгоритмы)Лекция 5. MapReduce в Hadoop (алгоритмы)
Лекция 5. MapReduce в Hadoop (алгоритмы)
 
Лекция 4. MapReduce в Hadoop (введение)
Лекция 4. MapReduce в Hadoop (введение)Лекция 4. MapReduce в Hadoop (введение)
Лекция 4. MapReduce в Hadoop (введение)
 
Лекция 3. Распределённая файловая система HDFS
Лекция 3. Распределённая файловая система HDFSЛекция 3. Распределённая файловая система HDFS
Лекция 3. Распределённая файловая система HDFS
 
Лекция 2. Основы Hadoop
Лекция 2. Основы HadoopЛекция 2. Основы Hadoop
Лекция 2. Основы Hadoop
 
Лекция 1. Введение в Big Data и MapReduce
Лекция 1. Введение в Big Data и MapReduceЛекция 1. Введение в Big Data и MapReduce
Лекция 1. Введение в Big Data и MapReduce
 
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
 
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...
 
СУБД 2013 Лекция №9 "Безопасность баз данных"
СУБД 2013 Лекция №9 "Безопасность баз данных"СУБД 2013 Лекция №9 "Безопасность баз данных"
СУБД 2013 Лекция №9 "Безопасность баз данных"
 
СУБД 2013 Лекция №8 "Конфигурирование базы данных"
СУБД 2013 Лекция №8 "Конфигурирование базы данных"СУБД 2013 Лекция №8 "Конфигурирование базы данных"
СУБД 2013 Лекция №8 "Конфигурирование базы данных"
 
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
 
СУБД 2013 Лекция №5 "Определение узких мест"
СУБД 2013 Лекция №5 "Определение узких мест"СУБД 2013 Лекция №5 "Определение узких мест"
СУБД 2013 Лекция №5 "Определение узких мест"
 
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...
 

Java весна 2013 лекция 7

  • 1.
  • 2.
  • 3.
  • 4.
  • 6.
  • 7.
  • 8.
  • 9. public class SerializationObject implements Serializable { private String name; // name = Zoe private int age; // age = 31 … }
  • 10. SerializationObject object = new SerializationObject("Zoe", 31); FileOutputStream fileOut = new FileOutputStream("test.bin"); ObjectOutputStream out = new ObjectOutputStream(fileOut); out.writeObject(object); out.close();
  • 11. private static final long serialVersionUID = -3895203507200457730L;
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21. ― static Class<T> forName(String className) String getCanonicalName() Field getField(String name) Class[] getInterfaces() Method[] getMethods() Constructor[] getConstructors()
  • 23.
  • 24. Bootstrap class loader <JAVA_HOME>/jre/lib Extensions class loader <JAVA_HOME>/jre/lib/ext System class loader CLASSPATH
  • 25. public static Object createIntance(String className){ try { return Class.forName(className).newInstance(); } catch (…){} }
  • 26. public static void setFieldValue(Object object, String fieldName, String value){ try { Field field = object.getClass().getDeclaredField(fieldName); field.setAccessible(true); if(field.getType().equals(String.class)){ field.set(object, value); } else if ( field.getType().equals(int.class)){ field.set(object, Integer.decode(value)); } field.setAccessible(false); } catch(…){} }
  • 27.
  • 28.
  • 29. public class ObjectFactory { public static Object readObject(String path) { try { FileInputStream fileOut = new FileInputStream(path); ObjectInputStream in = new ObjectInputStream(fileOut); Object object = in.readObject(); in.close(); return object; } catch(IOException i) { i.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } return null; } }
  • 30.
  • 32.
  • 33.
  • 34.
  • 36.
  • 38. public class SaxEmptyHandler extends DefaultHandler { private static String CLASSNAME = "class"; private boolean inElement = false; public void startElement(String uri, String localName, String qName, Attributes attributes) { System.out.println("Start element: " + qName); if(qName != CLASSNAME) inElement = true; else System.out.println("Class name: " + attributes.getValue(0)); } public void endElement(String uri, String localName, String qName) { System.out.println("End element: " + qName); inElement = false; } public void characters(char ch[], int start, int length) { if(inElement) System.out.println("Process : " + new String(ch, start, length)); } }
  • 39. public void startElement(String uri, String localName, String qName, Attributes attributes) { if(qName != CLASSNAME){ element = qName; } else{ String className = attributes.getValue(0); System.out.println("Class name: " + className); object = ReflectionHelper.createIntance(className); } } public void endElement(String uri, String localName, String qName) { element = null; } public void characters(char ch[], int start, int length) { if(element != null){ String value = new String(ch, start, length); System.out.println(element + " = " + value); ReflectionHelper.setFieldValue(object, element, value); } }
  • 40. javax.xml.parsers.DocumentBuilderFactory javax.xml.parsers.DocumentBuilder org.w3c.dom.Document File fXmlFile = new File(“test.xml”); DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder dBuilder = dbFactory.newDocumentBuilder(); Document doc = dBuilder.parse(fXmlFile);
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47. Вынести все параметры в XML файлы Создать class ResourceFactory (singleton) GameSessionResource resource = (GameSessionResource) ResourceFactory.instance().get(“./GameResource.xml”) Создать interface Resource и class GameSessionResource
  • 48.
  • 49. 31. Сериализация/десериализация. Interface Serializable. 32. Ключевое слово transient. Причины использования transient. 33. Reflection. Роль reflection в сериализации. 34. Шаблон проектирования Factory method. 35. SAX парсер. 36. DOM парсер. 37. Ресурсная система сервера.