| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java: Общие вопросы > Компиляция в Java-байт код "на лету"?! Tools? |
| Автор: Killer_13 23.2.2012, 21:29 |
| Вопрос очевиден из названия теммы. Нужна утилита(технология), не знаю как правильно назвать, которая компилирует Java-код в Java-байт-код "НА ЛЕТУ". Нашел менее более подходяший инструмент http://docs.codehaus.org/display/JANINO/Home Еще похожую фишку предлагает javax.tools но tools.jar оч большой по размеру и там сидит много фишек которые используются оч редко Сейчас данную задачу делает "Bean Shell"! Как сказало начальство - он медленный - ищи альтернативу. Кто сталкивался с похожей задачей? Подскажите альтернативы, ресурсы где можно почитать на эту тему... Даже не знаю как правильно подать запрос в гугле на эту тему. Буду рад любым соображениям, предложениям, замечаниям, мыслям на эту тему! Спасибо! |
| Автор: dobrolub 23.2.2012, 23:33 |
| Class.forName("com.sun.tools.javac.Main", false, classloader); потом вызывай функцию main(String []args) через рефлекцию. |
| Автор: Killer_13 24.2.2012, 01:08 | ||
|
| Автор: dobrolub 24.2.2012, 02:12 | ||
Есть ещё java-assist (now a jboss project), eclipse compiler. Эти альтернативы, на мой взгляд, проигрывают использованию родного компилятора из JDK. Он в tools.jar , но другие компиляторы тоже в jarиках. А этот уже на машине, и, возможно уже загружен другими библиотеками. Добавлено через 39 секунд Другая возможность, это генерация байткода. Это не так сложно как это звучит. |
| Автор: Killer_13 24.2.2012, 11:04 |
| dobrolub - спасибо большое. На счет tools.jar я писал что мне начальство сказало - большой в мегабайтах... Добавлено через 19 секунд Остальные посмотрю.. |
| Автор: LSD 24.2.2012, 14:47 |
| В JDK 6 появился стандартный класс http://docs.oracle.com/javase/6/docs/api/javax/tools/JavaCompiler.html для доступа к компилятору. Плюс посмотри http://java-source.net/open-source/bytecode-libraries. |
| Автор: Killer_13 24.2.2012, 15:37 | ||||||||
dobrolub
LSD
|
| Автор: Killer_13 24.2.2012, 15:58 | ||
только что поговорил с начальником, понимание для чего это нужно обретает четкий характер. Значит нужен инструмент для компиляции "на лету" классов у которых есть зависимости в .class-файлах зупещенного приложения! НЕ для компиляции кусочков кода, НЕ для зависимости компилируемых "на-лету" классов из какой то другой библиотеки. Буду копать в сторону Javassist потом Janino потом tools.jar(как самый последний вариант). Скажите пож Javassist может компилировать калссы "на лету"? спасибо! |
| Автор: Killer_13 24.2.2012, 18:36 | ||||||
| Тааакссс. пытаюсь состряпать рабочий пример для Javassist, и что-то себе слабо представляю как это слепить. может, кто работал - подскажет? Значит для начала все елементарно. Есть
Потом есть еще 2 класа, Хочу сделать следующее. Клас "One" грузится JVM.
Клас "Two" грузится Javassist. При этом по ходу должен тянуть клас "One" из скомпилированных файлов .class
Я правильно понимаю сию арифметику? Как слепить не знаю.. Читал офф туториал, пока глухо, нужно наверное еще пару раз перечитать.. Буду благодарен за подсказки.. |