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 | |
---|