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