| 1 | Copyright 1998, O'Reilly & Associates, Inc.
|
|---|
| 2 |
|
|---|
| 3 | This package may be copied under the same terms as Perl itself.
|
|---|
| 4 |
|
|---|
| 5 | Disclaimers
|
|---|
| 6 | -----------
|
|---|
| 7 | This is a work in progress, and relies on bleeding-edge technology
|
|---|
| 8 | from the network. Don't expect not to be surprised occasionally.
|
|---|
| 9 |
|
|---|
| 10 | Requirements
|
|---|
| 11 | ------------
|
|---|
| 12 | Under Solaris and GNU/Linux (and other Unix-like systems), Perl 5.005 (or
|
|---|
| 13 | later) must be compiled and installed as a shared library (libperl.so). I
|
|---|
| 14 | had to use the system's malloc. JPL was originally built and tested with
|
|---|
| 15 | 5.004_04 and early Java 1.1 development kits. This version has not been
|
|---|
| 16 | well tested under other versions, so you can expect some rough edges.
|
|---|
| 17 |
|
|---|
| 18 | You need JDK 1.1. On Solaris, 1.1.5 has been verified to work. GNU/Linux
|
|---|
| 19 | users can try the latest version (1.1.3 or later) available from (for
|
|---|
| 20 | example):
|
|---|
| 21 |
|
|---|
| 22 | ftp://ftp.blackdown.org/pub/Linux/JDK/1.1.3/updates/libjava-1.1.3v2-1.tar.gz
|
|---|
| 23 |
|
|---|
| 24 | (GNU/Linux users can also try Kaffe (see below).)
|
|---|
| 25 |
|
|---|
| 26 | The get_jdk directory contains a script that will download JDK (but not
|
|---|
| 27 | the patch file above) off of the net for you. (This presumes you've
|
|---|
| 28 | already installed the modules mentioned in ../README.)
|
|---|
| 29 |
|
|---|
| 30 | You may need to ensure that all files under the ../jpl directory are writable.
|
|---|
| 31 | install-jpl expects to be run with super-user privileges so that it can
|
|---|
| 32 | put things in the right places.
|
|---|
| 33 |
|
|---|
| 34 | Microsoft Windows
|
|---|
| 35 | -----------------
|
|---|
| 36 | Only a subset of JPL works under Microsoft Windows. This subset includes
|
|---|
| 37 | the JNI extension and the JPL module. This is enough for you to embed
|
|---|
| 38 | Java in Perl, but not Perl in Java.
|
|---|
| 39 |
|
|---|
| 40 | This has only been tested with the Sun JDK 1.1.8. I haven't tested it
|
|---|
| 41 | with JDK 1.2 (aka Java 2) or any Microsoft implementation of Java.
|
|---|
| 42 |
|
|---|
| 43 | Kaffe
|
|---|
| 44 | -----
|
|---|
| 45 | You might notice some mention of Kaffe (www.kaffe.org) in the source files.
|
|---|
| 46 | This is because support has been added for Kaffe for JNI:: and JPL::. In
|
|---|
| 47 | other words, you can now call to Java from Perl using Kaffe.
|
|---|
| 48 |
|
|---|
| 49 | You'll likely need the a checkout circa 2000-12-03 or later from Kaffe's
|
|---|
| 50 | CVS. It has been verified that Kaffe 1.0.5 definitely *will not work*.
|
|---|
| 51 | Kaffe 1.0.6 might work, but the CVS tree definitely works (as of
|
|---|
| 52 | 2000-12-06).
|
|---|
| 53 |
|
|---|
| 54 | You can get the CVS tree from:
|
|---|
| 55 |
|
|---|
| 56 | cvs -z3 -d ':pserver:readonly@cvs.kaffe.org:/cvs/kaffe' checkout kaffe
|
|---|
| 57 |
|
|---|
| 58 | (password is 'readonly')
|
|---|
| 59 |
|
|---|
| 60 | What the heck is JPL?
|
|---|
| 61 | ---------------------
|
|---|
| 62 | JPL is a hybrid (to use the polite term) language. It's basically Java
|
|---|
| 63 | in which the methods can optionally be implemented by Perl code. A
|
|---|
| 64 | preprocessor called "JPL::Compile" looks at your .jpl file and spits
|
|---|
| 65 | out the appropriate .java, .c, .h, .pl, and .so files to accomplish the
|
|---|
| 66 | desired task. Hopefully a lot of those files can go away in the future
|
|---|
| 67 | as jpl mutates into a Perl-to-Java compiler. The long-term goal is for
|
|---|
| 68 | jpl to be able to take a pure Perl file and spit out a java .class
|
|---|
| 69 | file. This initial version of JPL is an attempt to begin to mesh the
|
|---|
| 70 | semantics of Java and Perl. Some people may find it useful in its
|
|---|
| 71 | current form, but you should know right up front that we've still got a
|
|---|
| 72 | ways to go with it. A journey of a thousand miles continues with the
|
|---|
| 73 | second step...
|
|---|
| 74 |
|
|---|
| 75 | JPL Syntax
|
|---|
| 76 | ----------
|
|---|
| 77 | JPL syntax is trivial, given that you know Java and Perl. Pretend like
|
|---|
| 78 | you're writing a native Java method, but say "perl" instead of
|
|---|
| 79 | "native", and then instead of omitting the body of the method, put your
|
|---|
| 80 | Perl code in double curlies. (See Sample.jpl for an example.)
|
|---|
| 81 |
|
|---|
| 82 | Calling back from Perl to Java is done through the JNI (Java Native
|
|---|
| 83 | Interface). No weird transmogrifications are done by the preprocessor
|
|---|
| 84 | to your Perl code--it's all normal Perl. The preprocessor just wraps
|
|---|
| 85 | it up into funny subroutines you don't see unless you peek at the .pl
|
|---|
| 86 | file it generates.
|
|---|
| 87 |
|
|---|
| 88 | Installation
|
|---|
| 89 | ------------
|
|---|
| 90 | There are two ways to install JPL.
|
|---|
| 91 |
|
|---|
| 92 | The first way gives you the ability to embed Perl in Java programs. You
|
|---|
| 93 | can also call back into Java from your embedded Perl programs. This should
|
|---|
| 94 | work well with most JDKs, and is the only option for people using a JDK
|
|---|
| 95 | that uses green threads (see your JDK documentation).
|
|---|
| 96 |
|
|---|
| 97 | The second way lets you embed Java in Perl, but doesn't provide support
|
|---|
| 98 | for the other direction. This is good, in theory, if you need to work with
|
|---|
| 99 | a lot of Java classes from within Perl. I say "in theory," because this
|
|---|
| 100 | doesn't actually work a lot of the time. To use this second way, you
|
|---|
| 101 | must be using a JDK with native threads. Please see README.JUST-JNI for
|
|---|
| 102 | details.
|
|---|
| 103 |
|
|---|
| 104 | At this point, the second way is the only way to use JPL under Microsoft
|
|---|
| 105 | Windows, and probably the only way to use JPL if you're using a version
|
|---|
| 106 | of Perl compiled by someone else (such as the Perl that comes with RedHat).
|
|---|
| 107 |
|
|---|
| 108 | Installation the First Way (All of JPL)
|
|---|
| 109 | ---------------------------------------
|
|---|
| 110 | Run "install-jpl". You have to tell it whether you want to use the
|
|---|
| 111 | current directory for JPL_HOME or some other directory. Everything
|
|---|
| 112 | else should take care of itself, except that after install-jpl
|
|---|
| 113 | writes the setvars program, you are responsible to invoke it properly
|
|---|
| 114 | before any JPL applications can be compiled under the current shell.
|
|---|
| 115 |
|
|---|
| 116 | sh: eval `setvars -sh`
|
|---|
| 117 | csh: eval `setvars -csh`
|
|---|
| 118 | perl: eval `setvars -perl`;
|
|---|
| 119 |
|
|---|
| 120 | install-jpl has been tested under:
|
|---|
| 121 |
|
|---|
| 122 | Solaris 2.5.1 SPARC, GCC 2.8.0, Perl 5.005_03, JDK 1.1.7
|
|---|
| 123 | Debian 2.1 x86, Perl 5.005_60, JDK 1.1.7v3
|
|---|
| 124 |
|
|---|
| 125 | ********************
|
|---|
| 126 | Solaris 2.5.1 Users:
|
|---|
| 127 | ********************
|
|---|
| 128 |
|
|---|
| 129 | NOTE: Under Solaris 2.5.1, you may get an error message when install-jpl
|
|---|
| 130 | builds Sample.jpl:
|
|---|
| 131 |
|
|---|
| 132 | You must install a Solaris patch to run this version of the Java
|
|---|
| 133 | runtime. Please see the README and release notes for more
|
|---|
| 134 | information.
|
|---|
| 135 | Exiting.
|
|---|
| 136 |
|
|---|
| 137 | This is apparently a spurious message, and it has been reported to
|
|---|
| 138 | Sun. Although this message aborts the installation, all of JPL is
|
|---|
| 139 | installed by the time this message is reached. To recover and continue,
|
|---|
| 140 | run setvars as described above, cd to the Sample directory, and type
|
|---|
| 141 | 'make' to continue building. You can then run 'java Sample' to test the
|
|---|
| 142 | example.
|
|---|
| 143 |
|
|---|
| 144 | Unfortunately, each time you use 'make' to build a JPL application,
|
|---|
| 145 | it will abort when it tries to run 'perl -c' on the generated .pl
|
|---|
| 146 | file. However, you can continue building by typing 'make' again.
|
|---|
| 147 |
|
|---|
| 148 | Mailing List
|
|---|
| 149 | ------------
|
|---|
| 150 | To subscribe to the jpl mailing list, send an email message to
|
|---|
| 151 | jpl-subscribe@perl.org.
|
|---|
| 152 |
|
|---|
| 153 | CVS Access
|
|---|
| 154 | ----------
|
|---|
| 155 | Information on accessing the bleeding edge JPL via CVS can be found at:
|
|---|
| 156 |
|
|---|
| 157 | http://users.ids.net/~bjepson/jpl/cvs.html
|
|---|
| 158 |
|
|---|
| 159 | More Info
|
|---|
| 160 | ---------
|
|---|
| 161 |
|
|---|
| 162 | You can look at the Sample and Test directories, as well as the ../eg
|
|---|
| 163 | directory for examples.
|
|---|
| 164 |
|
|---|
| 165 | Perhaps the most important bit of advice we can give you is to watch
|
|---|
| 166 |
|
|---|
| 167 | http://perl.oreilly.com
|
|---|
| 168 |
|
|---|
| 169 | for further information on how to get further information.
|
|---|
| 170 |
|
|---|
| 171 | Have the appropriate amount of fun.
|
|---|