Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Компиляция тела метода, взятого из файла 
:(
    Опции темы
Andrey1
Дата 21.11.2007, 11:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 621
Регистрация: 27.2.2004
Где: Moscow

Репутация: 1
Всего: 5



Есть большая алгебраическая функция, которая может редко меняться. 
Есть задача вставить эту функцию в java в тело метода и скомпилировать. 

Помнится в C это можно было сделать просто вставлением текста из файла через макрос...

Или может в java можно создать скомпилированный метод явно задав "шапку" и тело метода?


--------------------
Созерцание и мудрость - едины. Соцерцание - это основа мудрости, а мудрость - это функция (т.е. умение использовать) созерцания.
из сутры помоста шестого патриарха Хуэйнена
PM MAIL WWW ICQ   Вверх
Maksym
Дата 21.11.2007, 13:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


.
***


Профиль
Группа: Участник Клуба
Сообщений: 1456
Регистрация: 19.8.2005
Где: Odessa, Black Sea

Репутация: 14
Всего: 62



Andrey1
Есть возможность подгружать и выполнять ее как скрипт (java 1.6)
PM MAIL   Вверх
Andrey1
Дата 21.11.2007, 14:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 621
Регистрация: 27.2.2004
Где: Moscow

Репутация: 1
Всего: 5



Цитата(Maksym @  21.11.2007,  13:36 Найти цитируемый пост)
Есть возможность подгружать и выполнять ее как скрипт (java 1.6) 

А шапку с объявлением переменных, которые используются в функции (массив и скаляры), этот механизм позволяет задавать?

Думаю должен, если этот метод будет в последствии полноценным...


--------------------
Созерцание и мудрость - едины. Соцерцание - это основа мудрости, а мудрость - это функция (т.е. умение использовать) созерцания.
из сутры помоста шестого патриарха Хуэйнена
PM MAIL WWW ICQ   Вверх
alexadr
Дата 21.11.2007, 14:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 112
Регистрация: 25.9.2006

Репутация: 4
Всего: 4



будет поще своим классдоадером перезагружать некий класс в котором будет ментся работа того или иного метода
PM MAIL   Вверх
Maksym
Дата 21.11.2007, 15:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


.
***


Профиль
Группа: Участник Клуба
Сообщений: 1456
Регистрация: 19.8.2005
Где: Odessa, Black Sea

Репутация: 14
Всего: 62



Andrey1
Цитата(Andrey1 @  21.11.2007,  10:57 Найти цитируемый пост)
вставить эту функцию в java в тело метода и скомпилировать. 

Вообще эти методы (скрипт, подгрузка нужной реализации класса) -- для смены алгоритма рантайм, мы, кажется, с этим поторопились Тебе это нужно или приложение в любом случае будет пересобираться после изменения алгоритма?

PM MAIL   Вверх
Andrey1
Дата 22.11.2007, 12:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 621
Регистрация: 27.2.2004
Где: Moscow

Репутация: 1
Всего: 5



Цитата(Maksym @  21.11.2007,  15:15 Найти цитируемый пост)
Тебе это нужно или приложение в любом случае будет пересобираться после изменения алгоритма?

Да можно и так, и так. Вопрос в том, как скомпилировать эту функцию в java функцию...


--------------------
Созерцание и мудрость - едины. Соцерцание - это основа мудрости, а мудрость - это функция (т.е. умение использовать) созерцания.
из сутры помоста шестого патриарха Хуэйнена
PM MAIL WWW ICQ   Вверх
powerOn
Дата 22.11.2007, 14:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


software saboteur
****


Профиль
Группа: Участник
Сообщений: 4367
Регистрация: 7.10.2005

Репутация: 47
Всего: 159



Еще вот эту тему посмотри.


--------------------
user posted image нет времени думать - нужно писать КОД!

PM MAIL   Вверх
nornad
Дата 22.11.2007, 15:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1079
Регистрация: 16.2.2007
Где: в Караганде

Репутация: 16
Всего: 31



Цитата(Andrey1 @  22.11.2007,  15:57 Найти цитируемый пост)
Вопрос в том, как скомпилировать эту функцию в java функцию... 

Что-то я не понимаю. Если с компиляцией на С не было проблем, а на Java можно просто скомпилировать класс и подсунуть вместо старого, то в чём проблема? Просто описываешь класс своей алг.функции, компилируешь и всё.
Все переменные - поля класса. Задаются либо по отдельности сеттерами, либо через метод, принимающий массив (лучше второе, т.к. внешний код менять не придётся, если он не сам придумывает переменные и их число может варьироваться). Метод вычислений имеет стандартное имя (например, doWork), не принимает параметров и возвращает всегда BigDecimal (для мат расчётов оно лучше, но можно и дабл возвращать).
Вот и всё.


--------------------
Три достоинства программиста: Леность, Нетерпение и Гордость
Ларри Уолл
PM MAIL WWW ICQ Skype MSN   Вверх
Andrey1
Дата 26.11.2007, 18:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 621
Регистрация: 27.2.2004
Где: Moscow

Репутация: 1
Всего: 5



Цитата(powerOn @  22.11.2007,  14:33 Найти цитируемый пост)
Еще вот эту тему посмотри. 


Спасибо. 

Да, идея заюзать Beanshell нова и интересна.


--------------------
Созерцание и мудрость - едины. Соцерцание - это основа мудрости, а мудрость - это функция (т.е. умение использовать) созерцания.
из сутры помоста шестого патриарха Хуэйнена
PM MAIL WWW ICQ   Вверх
Dims
Дата 28.11.2007, 19:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1016
Регистрация: 21.11.2006

Репутация: 4
Всего: 11



Цитата(Andrey1 @  21.11.2007,  11:57 Найти цитируемый пост)
Есть большая алгебраическая функция, которая может редко меняться. 
Есть задача вставить эту функцию в java в тело метода и скомпилировать. 

Выглядит, как классическая задача для наследования.

Создаёте класс, в котором описываете всё, что нужно, а Вашу функцию делаете абстрактной. После чего определяете сколько угодно классов-наследников, в которых эта функция реализуется по-разному.

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0512 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.