Сериализация
Опубликовано: 05.09.2018
Презентация «Сериализация» . Размер 113 КБ. Автор: Geo .
содержание презентации «Сериализация.ppt»
№ | Слайд | Текст |
1 |
Сериализация и RMIСериализация и RMI. Java Advanced. |
|
2 |
СодержаниеСодержание. Сериализация Концепции RMI Применение RMI Заключение. Java Advanced / Сериализация и RMI. Видео курс C# Professional. Урок 8. Сериализация |
|
3 |
СериализацияСериализация. Часть 1. |
|
4 |
Сериализация и десериализацияСериализация и десериализация. Сериализация – запись объекта в байтовый поток Десериализация – чтение объекта из байтового потока Пакет java.io При сериализации и десериализация используется все данные, которые достижимы из объекта. Java Advanced / Сериализация и RMI. |
|
5 |
Десериализация объектовДесериализация объектов. Чтение объектов Интерфейс ObjectInput extends DataInput Класс ObjectInputStream Метод readObject() Исключение ClassNotFoundException InvalidClassException. Java Advanced / Сериализация и RMI. |
|
6 |
Сериализация объектовСериализация объектов. Запись объектов Интерфейс ObjectOutput extends DataOutput Класс ObjectOutputStream Метод writeObject(object) Исключение NotSerializableException. Java Advanced / Сериализация и RMI. |
|
7 |
Что можно сериализоватьЧто можно сериализовать. Автоматически сериализуемые классы Маркерный интерфейс Serializable Классы, сериализуемые в ручную Интерфейс Externalizable. Java Advanced / Сериализация и RMI. |
|
8 |
Автоматическая сериализацияАвтоматическая сериализация. Процесс записи Записывается предок Записываются значения всех полей, не имеющих модификатора transient Процесс чтения Выделяется память под объект Считывается предок Считываются значения всех полей , не имеющих модификатора transient. Java Advanced / Сериализация и RMI. |
|
9 |
Сериализация в ручнуюСериализация в ручную. Интерфейс Externalizable Методы readExternal(ObjectInput in) – должен прочесть состояние из потока writeExternal(ObjectOutput out) – должен записать состояние в поток Процесс чтения Создание конструктором по умолчанию Вызов метода readExternal. Java Advanced / Сериализация и RMI. |
|
10 |
Настраиваемая сериализацияНастраиваемая сериализация. Применяется для обеспечения совместимости Методы readObject(ObjectInputStream in) – должен прочесть состояние из потока writeObject(ObjectOutputStream out) – должен записать состояние в поток Процесс чтения Выделение памяти Чтение родителя Вызов метода readObject. Java Advanced / Сериализация и RMI. |
|
11 |
Запись и чтение дескрипторовЗапись и чтение дескрипторов. Применяется когда сам объект не должен сериализовываться Методы Object writeReplace() – какой объект записать вместо этого Object readResolve() – какой объект реально был записан Реализуются у разных классов. Java Advanced / Сериализация и RMI. |
|
12 |
Версии сериализованных классовВерсии сериализованных классов. Применяется для обеспечения совместимости когда версии сериализованного объекта меняются Поле private final static long serialVersionUID Инструмент serialver <имя класса> Java Advanced / Сериализация и RMI. |
|
13 |
Концепции RMIКонцепции RMI. Часть 2. |
|
14 |
Remote method invocationRemote Method Invocation. Механизм, позволяющий объектом из одной Java-машины вызывать методы другой Java-машины RMI работает по сети Пакет java.rmi. Java Advanced / Сериализация и RMI. |
|
15 |
Схема взаимодействияСхема взаимодействия. Java Advanced / Сериализация и RMI. |
|
16 |
Удаленные интерфейсыУдаленные интерфейсы. Удаленный интерфейс – интерфейс, унаследованный от Remote Все методы удаленных интерфейсов должны бросать RemoteException. Java Advanced / Сериализация и RMI. |
|
17 |
Передача данныхПередача данных. Объекты, реализующие интерфейс Remote передаются по удаленным ссылкам Остальные объекты передаются по значению путем сериализации. Java Advanced / Сериализация и RMI. |
|
18 |
Stub и skeletonStub и skeleton. Stub и Skeleton генерируются по удаленному классу Stub служит для передачи данных по сети. Реализует все удаленные интерфейсы класса и только их Skeleton служит для приема данных по сети и вызов методов реальтного объекта. Java Advanced / Сериализация и RMI. |
|
19 |
Distributed garbage collectingDistributed Garbage Collecting. Удаление объектов, на которых больше не ссылок в распределенной среде Механизм лизинга Интерфейс Unreferenced Метод unreferenced(). Java Advanced / Сериализация и RMI. |
|
20 |
Поиск удаленных объектовПоиск удаленных объектов. Ссылки на удаленный объекты публикуются в RMI registry Удаленные объекты ищутся по URL вида rmi://<host>:<port>/<object>, где host:port – местоположение RMI registry object – зарегистрированное имя объекта. Java Advanced / Сериализация и RMI. |
|
21 |
Экспорт объектовЭкспорт объектов. Прежде чем быть переданными на другую машину объект должен быть экспортирован Метод UnicastRemoteObject.exportObject(object) Наследники UnicastRemoteObject экспортируются автоматически. Java Advanced / Сериализация и RMI. |
|
22 |
Применение RMIПрименение RMI. Часть 3. |
|
23 |
БанкПример: банк. Банк поддерживает счета, идентифицируемые строками По счету можно Узнать идентификатор Узнать сумму денег на счете Изменить сумму денег на счете. Java Advanced / Сериализация и RMI. |
|
24 |
Удаленный интерфейс банкаУдаленный интерфейс банка. public interface Bank extends Remote { // Создает счет public Account createAccount(String id) throws RemoteException; // Возвращает счет public Account getAccount(String id) throws RemoteException; }. Java Advanced / Сериализация и RMI. |
|
25 |
Удаленный интерфейс счетаУдаленный интерфейс счета. public interface Account extends Remote { // Узнать идентификатор public String getId() throws RemoteException; // Узнать количество денег public int getAmount() throws RemoteException; // Установить количество денег public void setAmount(int amount) throws RemoteException; }. Java Advanced / Сериализация и RMI. |
|
26 |
Реализация счетаРеализация счета. Класс AccountImpl implements Account public String getId() { return id; } public int getAmount() { return amount; } public void setAmount(int amount) { this.amount = amount; }. Java Advanced / Сериализация и RMI. |
|
27 |
Реализация банкаРеализация банка. Класс BankImpl implements Bank public Account createAccount(String id) { Account account = new AccountImpl(id); accounts.put(id, account); return account; } public Account getAccount(String id) { return accounts.get(id); }. Java Advanced / Сериализация и RMI. |
|
28 |
СерверСервер. Регистрация банка в RMI registry Bank bank = new BankImpl(); try { UnicastRemoteObject.exportObject(bank); Naming.rebind("rmi://localhost/bank", bank); } catch (RemoteException e) { System.out.println("Cannot export object: " + e.getMessage()); e.printStackTrace(); } catch (MalformedURLException e) { System.out.println("Malformed URL"); }. Java Advanced / Сериализация и RMI. |
|
29 |
КлиентКлиент (1). Получение ссылки на банк Bank bank; try { bank = (Bank) Naming.lookup("rmi://localhost/bank"); } catch (NotBoundException e) { System.out.println("Bank URL is invalid"); return; } catch (MalformedURLException e) { System.out.println("Bank is not bound"); return; }. Java Advanced / Сериализация и RMI. |
|
30 |
Создание счетаКлиент (2). Создание счета Account account = bank.getAccount("geo"); if (account == null) { System.out.println("Creating account"); account = bank.createAccount("geo"); } else { System.out.println("Account already exists"); }. Java Advanced / Сериализация и RMI. |
|
31 |
Операции со счетомКлиент (3). Операции со счетом System.out.println("Money: " + account.getAmount()); System.out.println("Adding money"); account.setAmount(account.getAmount() + 100); System.out.println("Money: " + account.getAmount()); Java Advanced / Сериализация и RMI. |
|
32 |
Создание stubЗапуск. Создание Stub для классов rmic AccountImpl BankImpl Запуск RMI Registry rmiregistry Запуск сервера Запуск клиента. Java Advanced / Сериализация и RMI. |
|
33 |
Дополнительные возможности RMIДополнительные возможности RMI. Использование callback процедур Activation – технология, позволяющая создавать удаленные объекты Загрузка .class файлов с HTTP сервера. Java Advanced / Сериализация и RMI. |
|
34 |
ЗаключениеЗаключение. Часть 4. |
|
35 |
Ссылки по сериализацииСсылки по сериализации. Java Object Serialization Specification // http://java.sun.com/j2se/1.5.0/docs/guide/serialization/spec/serialTOC.html Object Serialization (Guide) // http://java.sun.com/j2se/1.5.0/docs/guide/serialization/index.html Serialization (Tutorial) // http://java.sun.com/developer/onlineTraining/Programming/BasicJava2/serial.html Serialization FAQ // http://java.sun.com/products/jdk/serialization/faq/. Java Advanced / Сериализация и RMI. |
|
36 |
Ссылки по RMIСсылки по RMI. RMI (Guide & tutotials) http://java.sun.com/j2se/1.5.0/docs/guide/rmi/ Java RMI Specification // http://java.sun.com/j2se/1.5.0/docs/guide/rmi/spec/rmiTOC.html RMI Tutorial // http://java.sun.com/developer/onlineTraining/rmi/RMI.html. Java Advanced / Сериализация и RMI. |
|
37 |
ВопросыВопросы. Java Advanced / Сериализация и RMI. |
|
«Сериализация» |