[Pharo-users] [ANN] JNIPort for Pharo 3.0 alpha

Tudor Girba tudor at tudorgirba.com
Tue Mar 25 16:26:01 EDT 2014


Thanks a lot for this contribution!

I will give it a try soon.

Doru


On Tue, Mar 25, 2014 at 7:59 PM, Joachim Geidel <
joachim.geidel at onlinehome.de> wrote:

> Hi everybody,
>
> JNIPort for Pharo 3.0 alpha is now available at SmalltalkHub.
>
> JNIPort is a Smalltalk library which allows Java code to be invoked from
> Smalltalk. It acts as a bridge between the world of Smalltalk objects and a
> Java Virtual Machine (JVM) where Java code is executing.
>
> When I first ported JNIPort to Squeak and Pharo 1.x, I used Alien as the
> FFI
> library. As NativeBoost has superseded Alien, the interface to the Java
> Native Interface library had to be rewritten. There are still some
> undocumented and obscure parts in NativeBoost, so this has taken some time.
>
> If you want to try it, load it via the ConfigurationOfJNIPort. I hope this
> works. If it does not, load the packages individually in the order in which
> they appear in the ConfigurationOfJNIPort.
>         http://www.smalltalkhub.com/#!/~JNIPort/JNIPort
> The next step is to read the documentation at
>         http://jniport.wikispaces.com/
> Otherwise, you won't know what to do next. ;-)
> Download the extra files from the download page at Wikispaces, you will
> need
> two jar files from there.
>
> Start a Java VM attached to Pharo by adapting and executing the following
> code snippet:
>
> ----
> | jvmSettings |
>  "You can set the path to the Java VM library by editing the path as
> needed."
> JNIPortJNIInterface libraryFile:
>
> '/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Libraries/libclient.dylib'
> .
> "JNIPortJNIInterface libraryFile:
> 'C:\Programme\Java\jre7\bin\client\jvm.dll' ."
>
>  jvmSettings := JVMSettings new.
>  jvmSettings usesGhosts: true.
>  jvmSettings supportsCallbacks: true.
>  jvmSettings jniPortSettings  useJNIHelperLibrary: false.
> jvmSettings ghostClassSettings retainMethodSource: true.
>
>  "On Mac OS X and Linux, class path entries are separated by colons."
>  "On Windows, you have to use semicolons instead. Edit the following line
> as
> needed."
> jvmSettings runtimeSettings classpath:
> '.:/Users/myname/JNIPort.jar:/Users/myname/JNIPort-Tests.jar'.
> " jvmSettings runtimeSettings classpath:
> '.;.\JNIPort.jar;.\JNIPort-Tests.jar'."
>
>  "Uncomment the following if you want the Java VM to emit verbose messages.
>   How to access these messages depends on your platform.
>   On Mac OS X, they are visible in the Console application."
> "jvmSettings runtimeSettings addOption: '-verbose:jni'; addOption:
> '-verbose:gc'; addOption: '-verbose:class'."
> Cursor execute showWhile: [JVM newWithSettings: jvmSettings].
> ----
>
> Then the fun starts:
>
> ----
> | zfClass zipfile entries |
> zfClass := JVM current findClass: #'java.util.zip.ZipFile'.
> zipfile := zfClass new_String: 'JNIPort.jar'.
> zipfile size. "--> answers an Integer"
> entries := zipfile entries.
> entries asAnEnumeration do: [:each | Transcript cr; print: each].
> ----
>
> And now to the ugly little secret reason why I call it an alpha version:
>
> While everything seems to work, it is *much* slower than it used to be in
> Pharo 1.2 with Alien. And when I compare it with VisualWorks, I wonder if
> the Pharo version secretly does some additional work for SETI:
> - Starting the JVM:
>         VisualWorks 0.7 seconds
>         Pharo 7 to 8 seconds
> - A benchmark using some methods of java.io.BufferedReader and
> java.util.StringTokenizer:
>         VisualWorks 114 milliseconds
>         Pharo 12 to 13 seconds
>
> I have not yet found the reason. The TimeProfiler is not very helpful, as
> its 1 millisecond resolution is too coarse. It would be nice if it had
> microsecond resolution. From the TimeProfiler results, it seems that
> calling
> a JNI method with NativeBoost is extremely slow, but I don't trust those
> profiles too much.
>
> So, give it a try, and if you find something useful concerning the bad
> performance, please send me a message.
>
> Best regards,
> Joachim Geidel
>
>
>
>
> --
> View this message in context:
> http://forum.world.st/ANN-JNIPort-for-Pharo-3-0-alpha-tp4750750.html
> Sent from the Pharo Smalltalk Users mailing list archive at Nabble.com.
>
>


-- 
www.tudorgirba.com

"Every thing has its own flow"
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.pharo.org/pipermail/pharo-users_lists.pharo.org/attachments/20140325/45f3e6e6/attachment.html>


More information about the Pharo-users mailing list