Информация об изменениях

Сообщение Re[16]: JNI Attach от 06.11.2024 4:05

Изменено 06.11.2024 4:14 Pavel Dvorkin

Re[16]: JNI Attach
Здравствуйте, ·, Вы писали:

·>Здравствуйте, Pavel Dvorkin, Вы писали:


·>Потому что в java загружается не код, а класс (ClassLoader же!), а значит тут тебе и статические переменные, и сборка мусора. И проблема собственно не в загрузке, а в общем дизайне решения, архитектуре системы, когда загружается много чего и начинает друг с другом взаимодейстовать. Так что по честному надо не с DLL сравнивать, а хотя бы с COM.


Отчасти согласен. В DLL, конечно, нет уже фактически классов, только код и данные. И сборки мусора, конечно, тоже нет. Но там тоже всякого хватает. Статические переменные тоже есть, более того, есть shared данные , это один из механизмов IPC — через общую секцию в DLL. Да и DllMain вообще-то не подарок, со всеми правилами, что можно в ней делать, а что нет. Плюс еще загрузка всех import-DLL этой DLL и рекурсивно далее.
Но COM, да, больше подходит для сравнения.

·>Да и вообще, ничего усложнённого я не вижу, две строчки кода. Гораздо проще, чем загружать dll — по сути указали источники, взяли класс по имени и готово.


А почему действительно нет загрузки jar ? Он же по сути аналог DLL/COM тут — набор клаcсов. Почему нельзя его просто загрузить ? При статическом подключении (явно или через pom.xml) фактически он же загружается со всеми своими потрохами.
Re[16]: JNI Attach
Здравствуйте, ·, Вы писали:

·>Здравствуйте, Pavel Dvorkin, Вы писали:


·>Потому что в java загружается не код, а класс (ClassLoader же!), а значит тут тебе и статические переменные, и сборка мусора. И проблема собственно не в загрузке, а в общем дизайне решения, архитектуре системы, когда загружается много чего и начинает друг с другом взаимодейстовать. Так что по честному надо не с DLL сравнивать, а хотя бы с COM.


Отчасти согласен. В DLL, конечно, нет уже фактически классов, только код и данные. Впрочем, и это не совсем так. Экспортируемые классы есть, вот от внутренних действительно почти ничего не осталось. И сборки мусора, конечно, тоже нет. Но там тоже всякого хватает. Статические переменные тоже есть, более того, есть shared данные , это один из механизмов IPC — через общую секцию в DLL. Да и DllMain вообще-то не подарок, со всеми правилами, что можно в ней делать, а что нет. Плюс еще загрузка всех import-DLL этой DLL и рекурсивно далее.
Но COM, да, больше подходит для сравнения.

·>Да и вообще, ничего усложнённого я не вижу, две строчки кода. Гораздо проще, чем загружать dll — по сути указали источники, взяли класс по имени и готово.


А почему действительно нет загрузки jar ? Он же по сути аналог DLL/COM тут — набор клаcсов. Почему нельзя его просто загрузить ? При статическом подключении (явно или через pom.xml) фактически он же загружается со всеми своими потрохами.