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