1 | Just-JNI (call into Java from Perl only)
|
---|
2 | ----------------------------------------
|
---|
3 |
|
---|
4 | This has been tested with:
|
---|
5 |
|
---|
6 | Debian GNU/Linux 2.2 i386, perl 5.6.0, Kaffe (CVS, 2000-12-05 or later)
|
---|
7 | RedHat 6.1, perl-5.00503-6 (RedHat RPM), IBM JDK 1.1.8
|
---|
8 | Debian 2.1 SPARC, Perl 5.005_60, JDK 1.2 beta (crashes with AWT, though)
|
---|
9 | Windows NT 4.0 SP4, ActivePerl 519, JDK 1.1.8, Visual C++
|
---|
10 | Solaris 7, Perl 5.005_03, JDK 1.1.6, GCC 2.8.1
|
---|
11 |
|
---|
12 | Solaris 7 Note (this probably applies to all native thread situations):
|
---|
13 |
|
---|
14 | Native threads were tricky. I had to build my own Perl, configured with:
|
---|
15 |
|
---|
16 | sh Configure -Dprefix=/opt/perl5.005 -Duseshrplib -Doptimize=-g \
|
---|
17 | -Uusemymalloc -D cc=gcc -Dusethreads -d
|
---|
18 |
|
---|
19 | When Configure let me edit config.sh, I changed libs to:
|
---|
20 |
|
---|
21 | libs='-lthread -lsocket -lnsl -ldl -lm -lposix4 -lpthread -lc -lcrypt'
|
---|
22 |
|
---|
23 | The leading -lthread is the only thing I had to add.
|
---|
24 |
|
---|
25 | Kaffe Note:
|
---|
26 |
|
---|
27 | I believe that Kaffe with JIT enabled will likely be problematic. I had a
|
---|
28 | lot of trouble with it, that simply went away with interpreter-based Kaffe.
|
---|
29 | FWIW, here's how I configured Kaffe:
|
---|
30 |
|
---|
31 | env AM_CPPFLAGS=-DDEBUG CFLAGS="-O0 -ggdb" ./configure --disable-gcj \
|
---|
32 | --with-engine=intrp
|
---|
33 |
|
---|
34 | Likely you don't need all that debugging stuff.
|
---|
35 |
|
---|
36 | Also, when I build perl, I do this, to be on the safe side. I was worried
|
---|
37 | about thread interaction, but realized there was no need to build threaded
|
---|
38 | perl, but I thought that the perl code should probably be reentrant, so, I
|
---|
39 | did this:
|
---|
40 |
|
---|
41 | sh ./Configure -Dcc=gcc -Doptimize='-D_REENTRANT -DDEBUGGING -ggdb' \
|
---|
42 | -Dlibperl='libperl.so' -Duseshrplib='true'
|
---|
43 |
|
---|
44 | Again, you likely don't need the debugging flags.
|
---|
45 |
|
---|
46 |
|
---|
47 | How do I do this crazy thing?
|
---|
48 | -----------------------------
|
---|
49 |
|
---|
50 | 1) Cd into the JPL directory. Type the following:
|
---|
51 |
|
---|
52 | perl Makefile.PL
|
---|
53 | make
|
---|
54 | make install
|
---|
55 |
|
---|
56 | Under windows, that's:
|
---|
57 |
|
---|
58 | perl Makefile.PL
|
---|
59 | nmake
|
---|
60 | nmake install
|
---|
61 |
|
---|
62 | 3) cd into the JNI directory (cd ../JNI or cd ..\JNI)
|
---|
63 |
|
---|
64 | 4) We now need to compile and make the Closer.class available to your
|
---|
65 | JPL program. Closer is a WindowListener that closes the Frame we
|
---|
66 | make in the test program.
|
---|
67 |
|
---|
68 | It seems that we've managed to fix the problem with CLASSPATH not
|
---|
69 | getting propagated to the JVM, so if '.' is in your CLASSPATH, you
|
---|
70 | should be able to compile Closer.java and leave it in the current
|
---|
71 | directory:
|
---|
72 |
|
---|
73 | javac Closer.java
|
---|
74 |
|
---|
75 | or perhaps
|
---|
76 |
|
---|
77 | jikes Closer.java
|
---|
78 |
|
---|
79 | 5) Make the demo:
|
---|
80 |
|
---|
81 | a) type the following:
|
---|
82 |
|
---|
83 | for SUN's proprietary software Java:
|
---|
84 |
|
---|
85 | env JAVA_HOME=/path/to/java perl Makefile.PL
|
---|
86 | # setting the JAVA_HOME enviornment variable might not be needed
|
---|
87 | # if Java is in installed in a canonical location
|
---|
88 | make
|
---|
89 | make test
|
---|
90 |
|
---|
91 | for Kaffe:
|
---|
92 |
|
---|
93 | env KAFFE_PREFIX=/kaffe/installation/prefix perl Makefile.PL
|
---|
94 | # setting the KAFFE_PREFIX enviornment variable might not be needed
|
---|
95 | # if Kaffe is in a canonical location
|
---|
96 | make
|
---|
97 | make test
|
---|
98 |
|
---|
99 | Under Windows:
|
---|
100 |
|
---|
101 | perl Makefile.PL
|
---|
102 | nmake
|
---|
103 | nmake test
|
---|
104 |
|
---|
105 |
|
---|
106 | b) if all went well, type:
|
---|
107 |
|
---|
108 | make install
|
---|
109 |
|
---|
110 | or, under Windows:
|
---|
111 |
|
---|
112 | nmake install
|
---|
113 |
|
---|