Hotswap та альтернативи?


15

З перших днів мого життя в коледжі я використовую Java, і найбільша проблема, яку ми маємо, - це менш продуктивна, ніж інші інтерпретовані мови. Усі люди впевнені, що java - одна з найкращих скомпільованих мов.

Однак ні Sun, ні Oracle не доклали достатньо зусиль для вирішення цієї проблеми. Однією з проблем є, звичайно, перезавантаження класів.

Останні спроби громади вирішити цю проблему - це проект DaVinci Hotswap , JRebel , PlayFramework . Однак на момент написання цього твору вони ще не були зрілими (imo) та рідними. Деякі з них не готові до підприємств, деякі з них не сумісні з усіма ІДЕ, деякі з них є незрілими проектами університету. Дорожня карта і навіть Java для розробників готові, але спільнота Java все ще не має рішення для перезавантаження класу fly.

Чи так важко Oracle докласти зусиль для вирішення цієї проблеми? Чому перезавантаження класів ще не було реалізовано на початковому рівні?


2
Насправді JRebel повністю готовий до бізнесу та має досить гарну підтримку IDE, хоча і не безкоштовну.
CarlosZ

@CarlosZ Дійсно? Я використовував IntelliJ IDEA з JRebel від першої бета-версії до серії 3.x. Замість "цього" ви повинні використовувати "те". На форумі кожного випуску ви побачите багато питань щодо плагіна IntelliJ. Але найгіршим досвідом було налагодження питань. Відладчик міг підключитися дуже пізно. І у нас були величезні проблеми. Як користувач intellJ, у мене є конкретний досвід щодо JRebel в IDEA. І звичайно платити гроші - це теж інше питання.

@CarlosZ Це справді питання, мені цікаво дізнатись, чому важко реалізувати перезавантаження класу в Java на самому собі.

Відповіді:


4

Що щодо JEE / J2EE? Це було вперше випущено 12 років тому. Це підтримується безпосередньо Sun / Oracle та багатьма іншими постачальниками.

А як щодо OSGi? Його перший випуск відбувся майже 11 років тому. На ньому побудовано Eclipse (IDE), Скляні рибки від Sun / Oracle та Apache Felix широко використовують його. Ви можете використовувати його з Spring-OSGi.

Він не підтримувався в Java SE, оскільки корпоративні додатки навмисно підтримувались серверами прикладних програм як окремі продукти.


@ Peter Lawrey 1) Lawrey Що стосується J2EE, чи є конкретне рішення? Я не міг бачити вашу думку? 2) Для того, щоб перезавантажити клас, чи вважаєте ви, що OSGI слід використовувати? Що з головоломкою? Навіть на рівні JCR досі немає консенсусу :). OSGI займається зовсім іншою областю, ніж перезавантаження класів. 3) Я не міг зрозуміти частину JavaSE, чи можете ви пояснити трохи більше? І зверніть увагу, що проект DaVinci HotSwap спонсорується Oracle. Це означає, що принаймні для мене вони також прагнуть такого рішення.

Це залежить від того, що ви очікуєте зробити гарячим свопом. Якщо ви хочете отримати гарячу заміну для налагодження, ви можете це зробити протягом деякого часу. Однак для надійних корпоративних рішень гаряча заміна такого характеру не підходить, і є лише контрольовані випуски. У цьому випадку JEE та OSGi дозволяють оновлювати запущені програми, що має таку саму перевагу, але з керуванням, якого ви очікували від виробничого середовища. Наприклад, у своєму контейнері OSGi я можу видалити класи та замінити їх новішими версіями, не зупиняючи додаток. Що вам потрібно, що OSGi не робить?
Пітер Лоурі

1) Реалізація довідок JEE / J2EE може бути місцем для початку, але є багато більш популярних, простіших у використанні JEE. Моя думка, ви можете замінити код у працюючій системі. Що ще потрібно у виробничому / контрольованому середовищі.
Пітер Лоурі

1
2) Перезавантаження класів - це єдине, для чого я використовую OSGi. Що ви бачите як основне використання OSGi?
Пітер Лоурі

3) Вся суть JEE - це простір для підтримки корпоративних програм. JSE є базовою платформою, яка може використовуватися для JEE або інших програм.
Пітер Лоурі

2

Спробуйте це: http://www.zeroturnaround.com/blog/reloading_java_classes_401_hotswap_jrebel/

Існує кілька складних питань. Я насправді не знаю жодних рішень там (для Java чи ні), які б вносили структурні зміни в стаціонарні сутності. Динамічні мови, такі як Ruby або PHP, насправді цього не роблять, я не впевнений у Erlang, але думаю, що він також втратить державну.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.