ringill's Journal
 
[Most Recent Entries] [Calendar View] [Friends View]

Friday, June 6th, 2008

    Time Event
    11:09p
    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 поддерживаются, но не документированы! Нам эта роскошь не пригодилась.

    << Previous Day 2008/06/06
    [Calendar]
    Next Day >>

About LJ.Rossia.org