|
|
|
Зачем нужна иерархичность загузчиков классов?
|
|||
|---|---|---|---|
|
#18+
В java классы загружают в память класслоадеры. Этих класслоадеров по умолчанию 3. Можно добавлять и свои. Я не очень понял а зачем это всё нужно то? почему не сделать просто один лоадер, который всё грузит, все классы всегда видны, никаких проблем, солнышко светит, небо голубое. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2017, 19:10 |
|
||
|
Зачем нужна иерархичность загузчиков классов?
|
|||
|---|---|---|---|
|
#18+
questioner, Это нужно для изоляции, приоритета и безопасности. Да, на десктопном приложении это не так очевидно. Но вот для апплетов и JEE - очень важно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2017, 19:19 |
|
||
|
Зачем нужна иерархичность загузчиков классов?
|
|||
|---|---|---|---|
|
#18+
Хотя даже для десктопа - bootstrap загрузчик особенный. Там доступны всяческие оптимизации, такие как CDS ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2017, 19:22 |
|
||
|
Зачем нужна иерархичность загузчиков классов?
|
|||
|---|---|---|---|
|
#18+
Blazkowiczquestioner, Это нужно для изоляции, приоритета и безопасности. Да, на десктопном приложении это не так очевидно. Но вот для апплетов и JEE - очень важно. изоляция понятно - на одном сервере надо запускать много приложений, которые используют разные версии библиотек. а Безопасноcть и приоритеты ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2017, 19:33 |
|
||
|
Зачем нужна иерархичность загузчиков классов?
|
|||
|---|---|---|---|
|
#18+
questionerBlazkowiczquestioner, Это нужно для изоляции, приоритета и безопасности. Да, на десктопном приложении это не так очевидно. Но вот для апплетов и JEE - очень важно. изоляция понятно - на одном сервере надо запускать много приложений, которые используют разные версии библиотек. а Безопасноcть и приоритеты ? Кажется с безопасностью частично понятно. делаем класс в пакете java.lang и можем иметь доступ как минимум к package visible членам класса. Что видимо не предполагалось создателями джавы но почему тогда сделать не 2, а 3 именно? для расширений отдельный лоадер зачем? ну и приоритеты ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2017, 19:47 |
|
||
|
Зачем нужна иерархичность загузчиков классов?
|
|||
|---|---|---|---|
|
#18+
questionerдля расширений отдельный лоадер зачем? А как тогда? Это же барахолка, а не обязательные классы. questionerну и приоритеты Класслоадеры по-умолчанию делегируют загрузку родителям. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2017, 19:59 |
|
||
|
Зачем нужна иерархичность загузчиков классов?
|
|||
|---|---|---|---|
|
#18+
BlazkowiczКласслоадеры по-умолчанию делегируют загрузку родителям. Нет, это очень сильно зависит от целей, которые пытается достичь создатель класслоадера, тут вообще не применимо никакое умолчание, как напишешь так и будет. Есть лишь общие рекомендации еще со времён SUN писать класслоадеры в описанной Вами манере, но цели натаптывания собственного класслоадера могут и расходится с рекомендациями как например в spring-jar-helsing или OSGI. Да даже в банальных JEE/WAR большинсво в адекватных сервлет-контейнерах в имплементациях загрузчика классов для веб приложения сначала пытаются резолвить классы из WEB-IN/classes, WEB-INF/lib и только в случае неудачи делигировать загрузку класслоадеру сервлет контейнера, чтобы случайно не подраться с сервером в случае когда серверу и приложению нужны разные версии одной и той же библиотеки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2017, 00:13 |
|
||
|
Зачем нужна иерархичность загузчиков классов?
|
|||
|---|---|---|---|
|
#18+
vimba, Термин "по-умолчанию" вам не знаком? Объяснить что он обозначает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2017, 06:32 |
|
||
|
Зачем нужна иерархичность загузчиков классов?
|
|||
|---|---|---|---|
|
#18+
BlazkowiczКласслоадеры по-умолчанию делегируют загрузку родителям. А почему именно такая концепция? это side effect решения проблемы изоляции и безопасности? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2017, 09:32 |
|
||
|
Зачем нужна иерархичность загузчиков классов?
|
|||
|---|---|---|---|
|
#18+
questioner А почему именно такая концепция? Ну, приоритет загрузки же. Мы же хотим Java классы грузить из bootstrap загрузчика, а не загрузчика приложения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2017, 09:35 |
|
||
|
Зачем нужна иерархичность загузчиков классов?
|
|||
|---|---|---|---|
|
#18+
vimbaНет, это очень сильно зависит от целей, которые пытается достичь создатель класслоадера, тут вообще не применимо никакое умолчание, как напишешь так и будет. Бред сивой кобылы. Есть базовая реализация java.lang.ClassLoader - в которой это поведение уже реализовано. Чтобы его переопределить нужно приложит дополнительные усилия. vimbaЕсть лишь общие рекомендации еще со времён SUN писать класслоадеры в описанной Вами манере Что наводит нас на мысль что исходый код java.lang.ClassLoader вы отродясь не видели. vimba, но цели натаптывания собственного класслоадера могут и расходится с рекомендациями как например в spring-jar-helsing Какая-то поделка на гитхабе, это, конечно, весомый аргумент. vimbaили OSGI. А в OSGi (а не OSGI, как некоторым могло показаться) вообще всё через >|<опу. Особенно весело когда там из-за этой фишки перестаёт работать половина библиотек, использующих, Class.forName(). vimbaДа даже в банальных JEE/WAR большинсво в адекватных сервлет-контейнерах в имплементациях загрузчика классов для веб приложения сначала пытаются резолвить классы из WEB-IN/classes, WEB-INF/lib и только в случае неудачи делигировать загрузку класслоадеру сервлет контейнера, чтобы случайно не подраться с сервером в случае когда серверу и приложению нужны разные версии одной и той же библиотеки. Мне можно не рассказывать. Я ещё в JBoss 3.x с вопросом разобрался досконально, когда мне пришлось там дружить десяток проектов написанных разными командами. Так вот, в те годы, как вы выражаетесь "адекватных сервлет-контейнеров" не было в принципе. На этот косяк наступили вообще все. Это раз. JBoss даже добавили флаг, который отключал делегирование родителям, но лучше от этого не становилось, это два. Ну, и три, что контейнеру всего лишь нужно было держать свои классы в отдельной ветке иерархии, а не в общей для всех модулей. Делегирование поиска родителям никуда не делось. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2017, 09:49 |
|
||
|
Зачем нужна иерархичность загузчиков классов?
|
|||
|---|---|---|---|
|
#18+
буквально сегодня спросили зачем фреимворки используют разные класслоадеры. Вот например spring. Судя по написанному выше - для изоляции. а что от чего изолировать нужно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2017, 17:49 |
|
||
|
Зачем нужна иерархичность загузчиков классов?
|
|||
|---|---|---|---|
|
#18+
questionerбуквально сегодня спросили зачем фреимворки используют разные класслоадеры Это вопрос с подвохом. Фреймверки не используют разные класслоадеры. Контейнеры используют. JEE контейнеры, OSGi контейнеры, самописные контейнеры плагинов. "фреймверки" - это вообще про другое. Почитайте определение и проихождение этого термина. questionerВот например spring Spring Framework не использует класслоадеры. Разве что их реализация OSGi. Только в данном случае Spring Framework это не "какой-то фреймверк", а нарицательное имя для семейства проектов. questionerСудя по написанному выше - для изоляции. а что от чего изолировать нужно? Модули нужно изолировать друг от друга, потому что модули могут использовать разные версии одинаковых библиотек. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2017, 18:36 |
|
||
|
Зачем нужна иерархичность загузчиков классов?
|
|||
|---|---|---|---|
|
#18+
[quot Blazkowicz]questionerбуквально сегодня спросили зачем фреимворки используют разные класслоадеры Это вопрос с подвохом. Фреймверки не используют разные класслоадеры. Контейнеры используют. JEE контейнеры, OSGi контейнеры, самописные контейнеры плагинов. "фреймверки" - это вообще про другое. Почитайте определение и проихождение этого термина. Вопрос звучал так: Берешь ты context.getBean("myBean") и пытаешься скачтить к MyClass. вываливается ClassCastException. При это берешь у этого myBean .getClass и видно, что он возвращает MyClass. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2017, 11:52 |
|
||
|
Зачем нужна иерархичность загузчиков классов?
|
|||
|---|---|---|---|
|
#18+
questionerВопрос звучал так: Одно и то же, да. Как буд-то без getBean() не обойтись. Ну, и причина ClassCastException и "зачем фреимворки используют разные класслоадеры", совсем чуточку разные вещи. Жаль что только про ClassCastException спросили. Там их ещё несколько более экзотических есть, по точно такой же причине. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2017, 12:20 |
|
||
|
Зачем нужна иерархичность загузчиков классов?
|
|||
|---|---|---|---|
|
#18+
BlazkowiczquestionerВопрос звучал так: Одно и то же, да. Как буд-то без getBean() не обойтись. Ну, и причина ClassCastException и "зачем фреимворки используют разные класслоадеры", совсем чуточку разные вещи. Жаль что только про ClassCastException спросили. Там их ещё несколько более экзотических есть, по точно такой же причине. Ну единственное, что я смог сказать. что классы по всеё видимости разными класслоадерами загружены, если мы видимо такое поведение. Проясните, пожалуйста. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2017, 12:58 |
|
||
|
Зачем нужна иерархичность загузчиков классов?
|
|||
|---|---|---|---|
|
#18+
questionerПроясните, пожалуйста. Прояснить что? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2017, 13:00 |
|
||
|
Зачем нужна иерархичность загузчиков классов?
|
|||
|---|---|---|---|
|
#18+
BlazkowiczПрояснить что? BlazkowiczНу, и причина ClassCastException и "зачем фреимворки используют разные класслоадеры", совсем чуточку разные вещи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2017, 13:43 |
|
||
|
Зачем нужна иерархичность загузчиков классов?
|
|||
|---|---|---|---|
|
#18+
questioner, Так на много понятнее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2017, 14:17 |
|
||
|
Зачем нужна иерархичность загузчиков классов?
|
|||
|---|---|---|---|
|
#18+
Blazkowicz Ну, и причина ClassCastException и "зачем фреимворки используют разные класслоадеры", совсем чуточку разные вещи. Какие это конкретно причины? Почему для загрузки бина из контекста может использоваться другой класслоадер в spring? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2017, 16:11 |
|
||
|
Зачем нужна иерархичность загузчиков классов?
|
|||
|---|---|---|---|
|
#18+
questionerКакие это конкретно причины? Вопрос. Причина ClassCast. Ответ. Разные класслоадеры. Где тут про фреймверки? questionerПочему для загрузки бина из контекста может использоваться другой класслоадер в spring? getBean() это не "загрузка бина из контекста", а получение ссылки на него. А как он туда попал это уже дело десятое. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2017, 16:23 |
|
||
|
Зачем нужна иерархичность загузчиков классов?
|
|||
|---|---|---|---|
|
#18+
questionerПочему для загрузки бина из контекста может использоваться другой класслоадер в spring? getBean() это не "загрузка бина из контекста", а получение ссылки на него. А как он туда попал это уже дело десятое.[/quot] А как он мог туда попасть загруженный другим класслоадером? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2017, 16:27 |
|
||
|
Зачем нужна иерархичность загузчиков классов?
|
|||
|---|---|---|---|
|
#18+
questionerА как он мог туда попасть загруженный другим класслоадером? Ну, например, из другого JEE модуля. Например у вас два модуля обмениваются данными. И вот вы нашли что этот обмен, достаточно узкое место. Как его ускорить? Поместить модули на один сервер. А можно быстрее? Конечно! Убрать сериализацию и заменить прямыми вызовами. Ну, либо ранее упомянутый OSGi. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2017, 16:35 |
|
||
|
Зачем нужна иерархичность загузчиков классов?
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, Я наверное не очень понимаю, что такое модуль. С JBOSS-ами работать не приходилось. Только деплоил варники в Tomcat/Jetty. Бывало, что для реализации продукта нужно было больше одного варники, но по сути это были разные приложения, общающиеся через rest или просто сидящие на одной базе ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2017, 16:56 |
|
||
|
Зачем нужна иерархичность загузчиков классов?
|
|||
|---|---|---|---|
|
#18+
questionerобщающиеся через rest или просто сидящие на одной базе Ну, это как два разрабочика, которые сидят за соседними столами, но общаются исключительно по email. Если они пересекаются раз в месяц - это нормально. А если плотно работают над общей задачей и общим кодом, то наверное такое общение может стать и узким местом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2017, 17:08 |
|
||
|
Зачем нужна иерархичность загузчиков классов?
|
|||
|---|---|---|---|
|
#18+
Blazkowiczquestionerобщающиеся через rest или просто сидящие на одной базе Ну, это как два разрабочика, которые сидят за соседними столами, но общаются исключительно по email. Если они пересекаются раз в месяц - это нормально. А если плотно работают над общей задачей и общим кодом, то наверное такое общение может стать и узким местом. Тогда мы можем этих двух программистов посадить за один стол (задеплоить в один Tomcat), но что нам это даст? Как два варника, живушие в одном контейнере смогут делать прямые вызовы друг друга? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2017, 17:46 |
|
||
|
Зачем нужна иерархичность загузчиков классов?
|
|||
|---|---|---|---|
|
#18+
questionerКак два варника, живушие в одном контейнере смогут делать прямые вызовы друг друга? Как из одного метода можно вызвать другой метод внутри одной JVM? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2017, 18:24 |
|
||
|
Зачем нужна иерархичность загузчиков классов?
|
|||
|---|---|---|---|
|
#18+
BlazkowiczquestionerКак два варника, живушие в одном контейнере смогут делать прямые вызовы друг друга? Как из одного метода можно вызвать другой метод внутри одной JVM? Да, но из разных приложений ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2017, 20:32 |
|
||
|
Зачем нужна иерархичность загузчиков классов?
|
|||
|---|---|---|---|
|
#18+
Присоединяюсь к вопросу questioner. Было нужно, но я не разобрался, как нормальным образом получить ссылку на объект в другом приложение (Tomcat). Методы которые нашел, в одних версиях появлялись, в других исчезали.... В общем, кривость сплошная ((( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2017, 21:18 |
|
||
|
Зачем нужна иерархичность загузчиков классов?
|
|||
|---|---|---|---|
|
#18+
questioner, - https://ru.wikipedia.org/wiki/Разделяемая_память - https://ru.wikipedia.org/wiki/New_I/O ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2017, 05:14 |
|
||
|
Зачем нужна иерархичность загузчиков классов?
|
|||
|---|---|---|---|
|
#18+
Leonid KudryavtsevБыло нужно, но я не разобрался, как нормальным образом получить ссылку на объект в другом приложение (Tomcat). Методы которые нашел, в одних версиях появлялись, в других исчезали.... В общем, кривость сплошная ((( Так как ClassCastException не является "нормальной" ситуацией, то чего мы вдруг в этой теме озадачились "нормальным" способом передачи ссылки? В EJB есть локальные интерфейсы, которые являются то о чем я писал выше - оптимизацией вызовов между модулями. Через JNDI, я подозреваю, тоже можно получить ссылку на элементы другого модуля при особом желании. На сервлетах - не скажу. А вот EJB сплошь и рядом себя публикуют в JNDI. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2017, 09:07 |
|
||
|
Зачем нужна иерархичность загузчиков классов?
|
|||
|---|---|---|---|
|
#18+
Leonid KudryavtsevПрисоединяюсь к вопросу questioner. Было нужно, но я не разобрался, как нормальным образом получить ссылку на объект в другом приложение (Tomcat). Методы которые нашел, в одних версиях появлялись, в других исчезали.... В общем, кривость сплошная ((( Как-то так: получаем другой контекст и у него из атрибутов берем объект. В Томкате надо в настройках контекста сказать crossContext="true", иначе ServletContext.getContext() будет всегда возвращать null. Код: java 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2017, 09:32 |
|
||
|
Зачем нужна иерархичность загузчиков классов?
|
|||
|---|---|---|---|
|
#18+
questionerДа, но из разных приложений Для операционки одно - jvm. А вот внутри нее класслоадеры разные. Собственно и создается впечатление, что это разные приложения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2017, 09:56 |
|
||
|
Зачем нужна иерархичность загузчиков классов?
|
|||
|---|---|---|---|
|
#18+
questionerВ java классы загружают в память класслоадеры. Этих класслоадеров по умолчанию 3. Можно добавлять и свои. Я не очень понял а зачем это всё нужно то? почему не сделать просто один лоадер, который всё грузит, все классы всегда видны, никаких проблем, солнышко светит, небо голубое. Я думаю что так и было когда-то. Сама по себе необходимость вводить новый уровень абстракции над packages появилась тогда, когда в браузер нужно было грузить апплеты. У которых априори не было никаких конвенций по именам. Вот здесь CL стал единственным и верным выходом. А иерархия? Ну .. она обычно возникает там где есть необходимость управления по цепочке. От верхнего к нижнему. Безопасность там. Политики и все такое. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2017, 18:47 |
|
||
|
Зачем нужна иерархичность загузчиков классов?
|
|||
|---|---|---|---|
|
#18+
А, вообще, IMHO вопрос из разряда зачем топору обух. Одни ответят, чтоб на топорище держался, другие чтоб гвоздь забить можно было при случае. И все правы. В Java все пытаются сделать через классы. В том числе сделали и класслоадер. Класслоадер должен загружать любой класс. Так получилось, что и другой класслоадер. Вот и получилось. С одной стороны конструкция такая, с другой стороны можно и использовать. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2017, 10:45 |
|
||
|
Зачем нужна иерархичность загузчиков классов?
|
|||
|---|---|---|---|
|
#18+
Попробую сам объяснить) Свои класслоадеры нужны для: - загрузки классов из нестандартных источников: динамический classpath, сеть, шифрованные джарники и т.п. - горячей рекомпиляции классов - когда интерфейс и оригинальный класс находятся в базовом класслоадере, а новый экземпляр класса - в новом - изоляции библиотек и приложений - если нужно загрузить в одну JVM две версии одной и той же библиотеки, без разных класслоадеров не обойтись - выгрузки загруженных классов - т.к. класслоадер держит ссылку на экземпляр класса, класс можно выгрузить только вместе с его класслоадером ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2017, 13:31 |
|
||
|
Зачем нужна иерархичность загузчиков классов?
|
|||
|---|---|---|---|
|
#18+
scf- загрузки классов из нестандартных источников: динамический classpath, сеть, шифрованные джарники и т.п. Да, но при этом можно эту проблему решить через URLClassLoader и свой провайдер для URL через SPI для своего протокола. scf- горячей рекомпиляции классов - когда интерфейс и оригинальный класс находятся в базовом класслоадере, а новый экземпляр класса - в новом Ну, во-первых не "в базовом". Чтобы не было казусов, нужно чтобы старый и новый загрузчики жили в разных ветках иерархии. Во-вторых это не "рекомпиляция", а замена на лету. В-третьих если этот процесс нужен в разработке, то JRebel-у нет равных. А если в продакшне, то ещё попробуй напиши такой код, чтобы утечек в Metaspace не было. scf- изоляции библиотек и приложений - если нужно загрузить в одну JVM две версии одной и той же библиотеки, без разных класслоадеров не обойтись Вот это верно. scf- выгрузки загруженных классов - т.к. класслоадер держит ссылку на экземпляр класса, класс можно выгрузить только вместе с его класслоадером А это сложно назвать причиной для которой "свои класслоадеры нужны". Это просто уже нюанс в реализации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2017, 13:45 |
|
||
|
Зачем нужна иерархичность загузчиков классов?
|
|||
|---|---|---|---|
|
#18+
scf, scf- горячей рекомпиляции классов - когда интерфейс и оригинальный класс находятся в базовом класслоадере, а новый экземпляр класса - в новом Этот пункт не понятен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2017, 13:48 |
|
||
|
Зачем нужна иерархичность загузчиков классов?
|
|||
|---|---|---|---|
|
#18+
questionerscf- горячей рекомпиляции классов - когда интерфейс и оригинальный класс находятся в базовом класслоадере, а новый экземпляр класса - в новом Этот пункт не понятен. Смотри Tomcat Parallel Deployment Тебе нужно обновить приложение. Но у тебя куча клиентов пользуются единственным сервером и выкидывать ты их не хочешь. Ты деплоишь новую версию war модуля в Tomcat. Она работает в отдельном ClassLoader-е. Все новые сессии Томкат создаёт на новом модуле. Ждешь пока старые сессии заэкспайрятся или разлогинятся, и можешь смело удалять старую версию. В результате ты на горячую заменил своё приложение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2017, 13:56 |
|
||
|
Зачем нужна иерархичность загузчиков классов?
|
|||
|---|---|---|---|
|
#18+
questionerscf, scf- горячей рекомпиляции классов - когда интерфейс и оригинальный класс находятся в базовом класслоадере, а новый экземпляр класса - в новом Этот пункт не понятен. Ну типа приходит к тебе json, на основании которого ты генеришь новый класс. Но не хочешь, чтоб этот новый класс случайно подменил что-то в том, что у тебя и так есть, исли в запросе предложат то же имя, что у тебя итак есть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2017, 13:59 |
|
||
|
Зачем нужна иерархичность загузчиков классов?
|
|||
|---|---|---|---|
|
#18+
BlazkowiczВо-вторых это не "рекомпиляция", а замена на лету.+1 Hot Swap ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2017, 14:06 |
|
||
|
Зачем нужна иерархичность загузчиков классов?
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, да, "горячая замена" лучше подходит. Самодельная реализация бывает нужна, когда нужно отправлять приложению уведомления о том, что загружена новая версия. К примеру, автоматически обновлять страницу веб-приложения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2017, 14:12 |
|
||
|
|

start [/forum/topic.php?all=1&fid=59&tid=2123252]: |
0ms |
get settings: |
6ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
101ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
| others: | 197ms |
| total: | 373ms |

| 0 / 0 |
