Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
java1_2013_2014 / java26.pptx
Скачиваний:
134
Добавлен:
16.04.2015
Размер:
413.43 Кб
Скачать

JAVA-ТЕХНОЛОГИЯ

Сафонов Владимир Олегович

Профессор кафедры информатики, руководитель лаборатории Java- технологии (http://polyhimnie.math.spbu.ru/jtl)

Email: vosafonov@gmail.com

Лекция 26

Динамическая загрузка и верификация классов

Определение ClassLoader

Java class loader - компонента Java Runtime Environment, которая динамически загружает Java-классы в JVM

(С) Сафонов В.О. 2013

Виды загрузчиков

Bootstrap classloader

core.jar, server.jar (etc from $JAVA_HOME/lib)

Extensions class loader

extensions - $JAVA_HOME/lib/ext

System class loader

jars from $CLASSPATH

Пользовательский загрузчик

(С)Сафонов В.О. 2013

Применение

пользовательских загрузчиков

Загрузка классов из различных источников

java.net.URLClassLoader

java.security.SecureClassLoader

java.rmi.server.RMIClassLoader

sun.applet.AppletClassLoader

(С)Сафонов В.О. 2013

Динамическая загрузка классов

class Service {

private Object service;

public void updateService(String location){ MyClassLoader cl = new MyClassLoader(location); Class c = cl.loadClass(“Service”);

service = c.newInstance();

}

public void processRequest(...) { class c = service.getClass(); Method m = c.getMethod(“run”, ...); m.invoke(service, ...);

}

 

...

(С) Сафонов В.О. 2013

}

Применение пользовательских загрузчиков

Динамическая загрузка классов

Динамическая модификация классов

(С) Сафонов В.О. 2013

Динамическая модификация классов

Как можно изменить класс ?

добавить новые поля

изменить существующие методы

добавить новые или удалить существующие методы (возможно появление LinkError)

(С)Сафонов В.О. 2013

Динамическая модификация классов

Примеры использования

Profiling hooks (добавление информации о времени исполнения, количестве вызовов, ...)

Осуществление контроля за выделенными ресурсами

Параметризованные классы

(С)Сафонов В.О. 2013

class ClassLoader

Принцип делегирования – java 1.2

У каждого загрузчика есть загрузчик-родитель (по умолчанию System classloader)

При загрузке класса загрузчик делегирует загрузку своему родителю, перед тем как загрузить класс самому

(С)Сафонов В.О. 2013

Основные методы ClassLoader

protected Class findClass(String name)

ClassLoader getParent()

protected Class defineClass(String name, bytes[] array, int off, int len)

loadClass(String name, boolean resolve)

(С)Сафонов В.О. 2013

Соседние файлы в папке java1_2013_2014