JVM и компилятор

susinmn

Well-known member
16.10.2007
529
3
#1
Хочу написать агента, который будет работать на сервере domino 8.02 только domino/java. Подскажите, куда кинуть драйвера, и что сделать, что бы это заработало)

Сделал тестовый агент:
Java:
Session session = getSession();
AgentContext agentContext = session.getAgentContext();
 
Database db = agentContext.getCurrentDatabase();
Document memo = db.createDocument();
memo.appendItemValue("Form", "Memo");
memo.appendItemValue("Subject", System.getProperty("java.home"));
memo.send(false, "Мой LN");
что бы получить java.home и на строке System.getProperty("java.home") получаю:
- Notes error: JVM: Java Virtual Machine failed to start
- JVM: Correct version of Java not installed. Refer to the Release Notes software requirement and install the correct Java options.
на сервере стоит OS400

на винде все нормально)
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 600
277
#2
jar д.б. "версии" не выше JVM домины:
http://www-01.ibm.com/support/docview.wss?...uid=swg21188789

внимательно прочитайте в манифесте драйвера
можно класть в lib/ext

значит как она и написала...
установите для вашего сервера JVM
на винде она идет в поставке домино сервера
для мэнфреймов - всё неск. иначе, деталей не подскажу ибо никогда с ними не работал...
но гугл рулед:
http://www-01.ibm.com/support/docview.wss?uid=swg21203339
 

VladSh

начинающий
Lotus team
11.12.2009
1 276
6
#4
В 8.5.3 при использовании Java из LS2J в трее появляется иконка Java, неужели теперь используется оракловая JVM?

Добавлено: кстати да, один из процессов Лотуса связан с заинсталенной отдельно JVM.
 

VladSh

начинающий
Lotus team
11.12.2009
1 276
6
#5
Предлагаю делиться здесь инфой, что касается сабжа (плюсы/минусы последних версий и т.п.).

Изменял версию компилятора на 1.6 в свойствах проекта в библиотеках, оно при пересохранении говорит, что да, версия меняется на 1.6, но потом в свойствах проекта почему-то стоит 1.5, хотя синтаксис соответствует 1.6.
Задолбало менять в каждой библе, зашёл в настройки Дизайнера Java -> Compiler, поменял так, но и там такая же ситуация.
Это проблема или просто глюк Дизайнера?
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 600
277
#6
LS не сторонняя разработка прикрученная к лотусу, а часть ядра системы в целом(возможно не правильно выразился, я еще сплю). Java же прикручена и обрабатывается jvm, да еще и с ограничениями версии билдов.
На машине стоит JRE 7(1.7), а лотус юзает JRE 6 (1.6). :)
Нет не сторонняя - это полностью ИБМ адаптированная жвм (уж луче б ванильную брали)
отличие от LS VM - в более современном ЯП и меньшей истории имплементации в LDN
Если б она была настолько неустойчива - её б ИБМ в продакшн не рекомендовал...
А вот из-за реализации - патчи к дырам и ошибкам выходят гораздо реже чем в ванильном варианте (хотя и там, с покупкой Ораклом, стало хуже)
Коренное отличие в работе ВМ - распределение памяти и работа GC. В приведённых ссылка есть даже рекомендации по возможному отключению GC дл нек. классов. ЖВМ-у не выделяется (изначально) много памяти, а LS доступно 2Гб (ограничение 32 бит).

И все же java быстрее LS в части задач и возможностей все же больше.
Можно конечно использовать LS2J, но стабильно это работает только при вызове из агентов, если код повесить в hot-spot на форме или в кнопку на вьюхе, то падение будет точно. Что-то с лоадером или контекстом вызова. Видел обсуждение на этом же форуме, но найти не смог.
На "родных" классах (для жре) падения минимизированы, для прочих - надо обращать внимание на жизненный цикл (см. исходный код)...
Не все классы "готовы" к выгрузке из памяти без доп. процедур, или не рассчитаны множественную загрузку (по дизайну). ИБМ жвм - плевать хотела на особенности - отсюда и возможные падения
Вызов из агентов "эмулирует" некий старт и завершение жвм (конечно очень условно и со своими особенностями).
 

Kee_Keekkenen

Well-known member
05.09.2006
639
4
#7
Прикольная ситуация с жинериками в лотусе..
например, написал во внешней среде код под 1.6, а потом заюзал джар в агенте и агент сохранится в (не помню как оно называется) в общем в версии 1.5 той, что дженерики не поддерживает, интересно как код будет отрабатывать при том, что в джаре джинерики используются везде и всюду ? кто-нибудь замечал что в работе ?
 

Кирилл Шваб

Well-known member
30.06.2006
145
4
#8
Если агент сохранился без ошибок, то подозреваю что на 8.5.x будет работать, т.к. там JVM 1.6 используется.
 

VladSh

начинающий
Lotus team
11.12.2009
1 276
6
#9
Когда-то читал где-то на Хабре, что байт-код генерируемый новыми JVM такой же или близкий к тому, что генерируют старые. Т.е. дженерики и прочие новые фичи, - лишь синтаксический сахар, за что и критикуют сильно Jaву. Но это и её достоинство в плане обратной совместимости.
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 600
277
#10
http://www.ibm.com/developerworks/java/lib...1255/index.html
ощем-то - да
но надо понимать, что любое хранение типов в рантайме будет приводить к "накладным расходам"
как абстрактный пример - код на Си и С++ - эффективность последнего ниже именно из-за накладных расходов на всякие "удобства" в рантайме
 

VladSh

начинающий
Lotus team
11.12.2009
1 276
6
#11
И в нашей Википедии:
В отличие от шаблонов C#, шаблоны Java не поддерживаются средой исполнения — компилятор просто создаёт байт-код, в котором никаких шаблонов уже нет.

Реализация шаблонов в Java принципиально отличается от реализации аналогичных механизмов в C++: компилятор не порождает для каждого случая использования шаблона отдельный вариант класса или метода-шаблона, а просто создаёт одну реализацию байт-кода, содержащую необходимые проверки и преобразования типов. Это приводит к ряду ограничений использования шаблонов в программах на Java.