| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java: Общие вопросы > Можно ли на Jave выполнить вот такой трюк... |
| Автор: Delphist 18.1.2008, 11:27 |
| Как известно среда Java порождена от Smalltalk + Pascal + C++. По адресу http://up.spbland.ru/files/08011833/ лежит видеоролик ~3МБ в котором показываются супер трюки (например, выполнение изменненого кода на ходу, т.е. работает прога я что-нибудь подправил и тут же происходят изменения и т.п.) работы в среде SmallTalk. Интересно можно ли такое же выполнить в Jave, например с использование Eclipse или JBuilder'a 2007. Если да, то как это делается |
| Автор: Kangaroo 18.1.2008, 11:37 |
хм.. не знал. имхо, нельзя. Только перекомпиляция и перезапуск. |
| Автор: Delphist 18.1.2008, 11:42 |
Плохо, конечно |
| Автор: nornad 18.1.2008, 12:23 |
Можно, как и в других языках. Не уверен насчёт эклипса и билдера, но ежели рисовать свою среду, то осуществить в принципе можно. Правда, выгоды нет от этого. "Как" - нужно лишь самому заменить JVM |
| Автор: Fedrus 18.1.2008, 12:34 |
| А можно написать такую прогу чтоб она выполнялась потом писала такуюже прогу но с изменениями потом запускала компилятор и передавала управление новой проге которая в свою очередь удаляет старую??? |
| Автор: Prol 18.1.2008, 12:35 | ||
Можно. Вы можете заменять любые сервлеты на лету. То есть для приложения, которое выполняют функцию сервера, используя в работе сервлеты, вы можете менять сервлеты на лету. JavaServer Pages (JSR) по моему называется эта технология.... |
| Автор: ivg 18.1.2008, 12:39 |
| Kangaroo, можно, в режиме отладки. http://wiki.eclipse.org/FAQ_What_is_hot_code_replace%3F |
| Автор: Prol 18.1.2008, 12:48 | ||
Сервер точно так динамически перезагрузит изменённый сервлет, не останавливая свою работу и работу других сервлетов :о) |
| Автор: Fedrus 18.1.2008, 12:48 |
| Воо точьно можно в вебе Знаю точьно что есть хот замена кода в MyEclipse Например я написал форму написал бин задиплоил проект... работает )) делаю изменения на форме (кстати здесь можно любые) или делаю изменения в бинах сохраняю и все обновляю страницу и у меня уже новая страница !! только есть исключения когда она не работает но это уже сам можеш узнать))) |
| Автор: Kangaroo 18.1.2008, 12:50 |
Хм. Точно. Самое главное сам это использовал, но как то не считал это Hot Code'ом. Спасибо, будем знать! |
| Автор: Shaggie 18.1.2008, 13:08 | ||
У меня изменения в бинах не апдейтятся, приходится перезапускать... у тебя какой сервер приложений? |
| Автор: Kangaroo 18.1.2008, 13:13 | ||
Тогда у меня вопрос. Деплой/редеплой приложения - это же не Hot Code Replace? Я думал при изменении кода сервлета приложение редеплоится или как? |
| Автор: Prol 18.1.2008, 13:26 | ||
Приложение не редеплоится. Сервлет редеплоится :о) |
| Автор: LSD 18.1.2008, 14:24 | ||
Он передеплоит весь веб модуль, и все сервлеты в этом же модуле. Т.е. фактически приложение останавливается, выгружается и загружается заново. Если есть реальная необходимость (а не теоретический интерес) менять некое поведение приложения во время работы, то используй скриптинг. |
| Автор: Fedrus 18.1.2008, 14:29 |
| Shaggie мы используем Jboss 4 я знаю что эту возможность должен поддерживать апп сервер но в простосм еклипсе нет этого, ток в MyEclipse |
| Автор: Shaggie 18.1.2008, 14:39 |
| Fedrus, спасибо, потестим. |
| Автор: Prol 24.1.2008, 01:31 |
| http://java.sun.com/j2se/1.4.2/docs/guide/jpda/enhancements.html#hotswap Отладочный интерфейс Java HotSwap, добавленный в версии 1.4, позволяет перегружать измененные классы на лету без перезапуска Web-приложения или потери сеанса пользователя. Cервлет-контейнер Caucho Resin 3.0 (http://www.caucho.com/) даже может автоматически распознавать изменения в классах в каталоге WEB-INF/classes и проворно менять их на лету. |