Каждый Java-программист знает, что для исключения вероятности возникновения конфликтов между именами применяются имена пакетов. Например, в стандартной библиотеке Java есть два класса с именем Date, но полностью их имена, конечно же, выглядят как java.util.Date и java.sql.Date.
Короткие имена существуют для удобства программиста и требуют включения соответствующих операторов import. В выполняющейся программе же все имена классов обязательно содержат имена своих пакетов.
Как ни странно, но в рамках одной и той же виртуальной машины могут существовать два разных класса, имеющих одинаковое имя класса и пакета. Дело в том, что класс определяется по его полному имени u загрузчику класса. Такая технология для каждой Web-страницы используются отдельные экземпляры загрузчика классов апплетов.Это позволяет виртуальной машине различать классы разных Web-страниц независимо от их имен. На рисунке 1 показан пример. Предположим, Web-страница содержит два апплета, предоставляемых двумя разными рекламодателями, и у каждого из этих апплетов имеется класс с именем Banner. Поскольку каждый апплет загружается отдельным загрузчиком классов, эти классы являются совершенно отдельными и не конфликтуют друг с другом.
Существуют и другие способы использования данной технологии, например, «горячее развертывание» сервлетов и компонентов Enterprise JavaBeans. Более подробную информацию по этой теме можно найти по адресу: http://java.sun.com/developer/TechTips/2000/tt1027.html.
Рисунок 1. Два загрузчика классов загружают разные классы с одинаковыми именами
Интернет магазин «VIP Телефон» Продажа VIP телефонов в Украине и России. На сайте http://viptelefon.com.ua/ вы можете выбрать любой VIP телефон. Доставка одна из самых быстрых на рынке!