Войти в систему

Home
    - Создать дневник
    - Написать в дневник
       - Подробный режим

LJ.Rossia.org
    - Новости сайта
    - Общие настройки
    - Sitemap
    - Оплата
    - ljr-fif

Редактировать...
    - Настройки
    - Список друзей
    - Дневник
    - Картинки
    - Пароль
    - Вид дневника

Сообщества

Настроить S2

Помощь
    - Забыли пароль?
    - FAQ
    - Тех. поддержка



Пишет ringill ([info]ringill)
@ 2008-06-06 23:09:00


Previous Entry  Add to memories!  Tell a Friend!  Next Entry
Smalltalk + Java
Если очень хочется, можно вызывать Java-классы из Smalltalk. В нашем случае это был VisualWorks Smalltalk.

Идея проста: в виртуальную машину Smalltalk загружается jni.dll (или libjni.so), запускается виртуальная машина Java (JVM), и для каждого объекта или класса Java автоматически создаётся обёртка на Smalltalk, которая передаёт вызовы в JVM по JNI.

Имеется две реализации: JavaConnect и JNIPort for VisualWorks. Они разрабатываются параллельно, при этом обе — довольно вяло.

JavaConnect не заработал. Авторы вместо документации дают ссылку на свой проект, с которого всё началось. Это связка Smalltalk-Eclipse под названием Penumbra, к ней документации тоже нет, видимо нужно скачать и посмотреть изнутри.

Короче говоря, выбор пал на JNIPort, который по задумке менее удобен. Документация к нему есть, в минимально необходимом объёме.
Несмотря на некоторые нюансы, типа невозможности перезапуска JVM, JNIPort пока что стабильно у нас работает, и под Windows и под Linux.

Обратные вызовы (callbacks) из Java в Smalltalk реализовать непросто, из-за тредов. В JavaConnect обратные вызовы не поддерживаются, а в JNIPort поддерживаются, но не документированы! Нам эта роскошь не пригодилась.


(Читать комментарии) - (Добавить комментарий)


[info]yosefk@lj
2008-06-06 18:56 (ссылка)
А чего это вы такое на смолтоке делаете?

(Ответить) (Ветвь дискуссии)


[info]ringill@lj
2008-06-07 03:34 (ссылка)
Небольшой интерфейс к Oracle, который демонстрирует функциональность нашего большого продукта -- картриджа для Oracle. Картриджами в Oracle называются плагины, реализующие какой-то особый тип поиска, не поддерживаемый самой БД.

Назначением нашего картриджа является поиск молекул по разным химическим критериям. Чтобы рисовать эти молекулы на клиенте, мы взяли MarvinBeans (http://www.chemaxon.com/marvin/index.html) на Java. (В начале разработки, в 2006 году, мы это делали другой программой, через COM.)


(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]yosefk@lj
2008-06-07 06:51 (ссылка)
Круто!

(Ответить) (Уровень выше)


(Читать комментарии) -