Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > 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,  10:27 Найти цитируемый пост)
Как известно среда Java порождена от Smalltalk +  Pascal + C++

хм.. не знал.


Цитата(Delphist @  18.1.2008,  10:27 Найти цитируемый пост)
например с использование Eclipse

имхо, нельзя. Только перекомпиляция и перезапуск.

Автор: Delphist 18.1.2008, 11:42
Цитата(Kangaroo @  18.1.2008,  12:37 Найти цитируемый пост)
имхо, нельзя. Только перекомпиляция и перезапуск. 

Плохо, конечно

Автор: nornad 18.1.2008, 12:23
Цитата(Delphist @  18.1.2008,  14:27 Найти цитируемый пост)
Если да, то как это делается

Можно, как и в других языках. Не уверен насчёт эклипса и билдера, но ежели рисовать свою среду, то осуществить в принципе можно. Правда, выгоды нет от этого. smile
"Как" - нужно лишь самому заменить JVM smile

Автор: Fedrus 18.1.2008, 12:34
А можно написать такую прогу чтоб она выполнялась потом писала такуюже прогу но с изменениями потом запускала компилятор и передавала управление новой проге которая в свою очередь удаляет старую???

Автор: Prol 18.1.2008, 12:35
Цитата(Delphist @ 18.1.2008,  11:27)
(например, выполнение изменненого кода на ходу, т.е. работает прога я что-нибудь подправил и тут же происходят изменения и т.п.) работы в среде SmallTalk. Интересно можно ли такое же выполнить в Jave, например с использование Eclipse или JBuilder'a 2007. Если да, то как это делается

Можно. Вы можете заменять любые сервлеты на лету.

То есть для приложения, которое выполняют функцию сервера, используя в работе сервлеты, вы можете менять сервлеты на лету. JavaServer Pages (JSR) по моему называется эта технология.... 

Автор: ivg 18.1.2008, 12:39
Kangaroo, можно, в режиме отладки. http://wiki.eclipse.org/FAQ_What_is_hot_code_replace%3F

Автор: Kangaroo 18.1.2008, 12:46
Цитата(Prol @  18.1.2008,  11:35 Найти цитируемый пост)
Можно. Вы можете заменять любые сервлеты на лету.

То есть для приложения, которое выполняют функцию сервера, используя в работе сервлеты, вы можете менять сервлеты на лету. JavaServer Pages (JSR) по моему называется эта технология.... 

Стоп стоп smile
Это совсем разные вещи. На ролике куски кода меняюся и программа без перезапуска их кушает. А сервлет заново компилируется,загружается и тогда только используется.
А JSP ту вообще ни при чем.

Автор: Prol 18.1.2008, 12:48
Цитата(Kangaroo @ 18.1.2008,  12:46)
Стоп стоп smile
Это совсем разные вещи. На ролике куски кода меняюся и программа без перезапуска их кушает. А сервлет заново компилируется,загружается и тогда только используется.
А JSP ту вообще ни при чем.

Сервер точно так динамически перезагрузит изменённый сервлет, не останавливая свою работу и работу других сервлетов :о)

Автор: Fedrus 18.1.2008, 12:48
Воо точьно можно в вебе
Знаю точьно что есть хот замена кода в MyEclipse
Например я написал форму написал бин задиплоил проект... работает ))
делаю изменения на форме (кстати здесь можно любые) или делаю изменения в бинах сохраняю и все обновляю страницу и у меня уже новая страница !!
только есть исключения когда она не работает но это уже сам можеш узнать)))

Автор: Kangaroo 18.1.2008, 12:50
Цитата(ivg @  18.1.2008,  11:39 Найти цитируемый пост)
Kangaroo, можно, в режиме отладки. Вот, для начала

Хм. Точно. Самое главное сам это использовал, но как то не считал это Hot Code'ом.
Спасибо, будем знать!

Автор: Shaggie 18.1.2008, 13:08
Цитата(Fedrus @  18.1.2008,  12:48 Найти цитируемый пост)
хот замена кода в MyEclipse
Например я написал форму написал бин задиплоил проект... работает ))
делаю изменения на форме (кстати здесь можно любые) или делаю изменения в бинах сохраняю и все обновляю страницу и у меня уже новая страница !!

У меня изменения в бинах не апдейтятся, приходится перезапускать... у тебя какой сервер приложений?

Автор: Kangaroo 18.1.2008, 13:13
Цитата(Prol @  18.1.2008,  11:48 Найти цитируемый пост)
Сервер точно так динамически перезагрузит изменённый сервлет, не останавливая свою работу и работу других сервлетов :о)

Тогда у меня вопрос.
Деплой/редеплой приложения - это же не Hot Code Replace? Я думал при изменении кода сервлета приложение редеплоится или как?

Автор: Prol 18.1.2008, 13:26
Цитата(Kangaroo @ 18.1.2008,  13:13)
Тогда у меня вопрос.
Деплой/редеплой приложения - это же не Hot Code Replace? Я думал при изменении кода сервлета приложение редеплоится или как?

Приложение не редеплоится. Сервлет редеплоится :о)

Автор: LSD 18.1.2008, 14:24
Цитата(Prol @  18.1.2008,  12:48 Найти цитируемый пост)
Сервер точно так динамически перезагрузит изменённый сервлет, не останавливая свою работу и работу других сервлетов :о) 

Он передеплоит весь веб модуль, и все сервлеты в этом же модуле. Т.е. фактически приложение останавливается, выгружается и загружается заново.

Если есть реальная необходимость (а не теоретический интерес) менять некое поведение приложения во время работы, то используй скриптинг.

Автор: 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 и проворно менять их на лету. 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)