Главная Новости

Сериализация


Опубликовано: 05.09.2018

видео Сериализация

Вопрос - ответ #2 - Что такое сериализация? Зачем она?

Презентация «Сериализация» . Размер 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 invocation

Remote 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 и skeleton

Stub и skeleton. Stub и Skeleton генерируются по удаленному классу Stub служит для передачи данных по сети. Реализует все удаленные интерфейсы класса и только их Skeleton служит для приема данных по сети и вызов методов реальтного объекта. Java Advanced / Сериализация и RMI.

19

Distributed garbage collecting

Distributed 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.

«Сериализация»
rss