INTRODUCTION:

Inline::Java - Write Perl classes in Java.

Inline::Java lets you write Perl classes in Java.

Example:

    use Inline Java => <<'END';
        class JAxH {
            public JAxH(String x){
                System.out.println("Just Another " + x + " Hacker") ;
            }
        }
    END
    
    new JAxH('Inline') ;

When run, this complete program prints:

    Just Another Inline Hacker


-------------------------------------------------------------------------------
JNI (JAVA NATIVE INTERFACE) EXTENSION:

Inline::Java now provides a JNI extension that allows you to load the Java 
virtual machine as shared object instead of running it as a separate process. 

See README.JNI for more information on building the JNI extension.


-------------------------------------------------------------------------------
INSTALLATION:

- This module requires Inline version 0.44 or higher to be installed.
- It also requires a version of the Java SDK 1.2 or higher to be 
  installed. You can get the latest Java SDK from Sun Microsystems
  at http://java.sun.com. Follow the provided instructions in order
  to install the Java SDK properly.

To install Inline::Java do this:

  % perl Makefile.PL J2SDK=/your/java/dir   (see Note 1)
  % make java                               (see Note 2)
  % make
  % make test                               (see Note 3, 4)
  % make install

You have to 'make install' before you can run it successfully. 

Note 1: Under Win95/98/Me, you may need to do 'cd ..' to get back to the
your original directory after the command has completed.

Note 2: Use nmake on Win32.

Note 3: If you have built the JNI extension and want the test suite to use 
it, you will need to set the PERL_INLINE_JAVA_JNI environment variable to 1 
BEFORE running 'make test'.

Note 4: When testing Inline::Java, it's always a good idea to run 'make test'
twice. The first time you test the building and loading of a module, the 
second time you test loading of an already built module.


-------------------------------------------------------------------------------
FEATURES:

Inline::Java version 0.44 is a major upgrade that includes:
+ Callbacks from multiple threads are now supported
+ Refactored (again...) studying/.jdat/cache stuff
+ Added PRIVATE mode for use with SHARED_JVM
+ Added DEBUGGER mode that launches jdb
+ Fixed memory leak in JNI coded (patch submitted by Dave Blob)

Inline::Java version 0.43 is a minor upgrade that includes:
+ Restored $VERSION in each .pm file
+ Inline::Java now formerly requires Perl 5.6

Inline::Java version 0.42 is a minor upgrade that includes:
+ Fixed more CLASSPATH issues. CLASSPATH now works like this:
   * CLASSPATH environment variable is global
   * CLASSPATH configuration option is local to the user class loader
+ Added method cache to increase performance and decrease reflection 
  API calls
+ Altered and documented the study_classes() function
+ Added EXTRA_JAVA_ARGS and EXTRA_JAVAC_ARGS config options

Inline::Java version 0.41 is a minor upgrade that includes:
+ Fixed CLASSPATH bug
+ Possibly (!) fixed test suite problems under heavy load

Inline::Java version 0.40 is a major upgrade that includes:
+ Patch by Doug MacEachern to allow running under servlet engines.
+ Patch by John Kinsley for handling empty arrays.
+ Custom ClassLoader allows for better isolation of user code and
  dynamic 'CLASSPATH' (multiple sections/clients are now totally
  independant).
+ Core Java code is now compiled separately (at install time) instead
  of with the user code (for each script). This dramatically improves
  build time.
+ Default port number changed to 0 (next available port number). 
  This allows many multiple users to run concurrently without 
  clashes.
  Note: The default port on systems where this feature is not 
        available has remained 7890.
  Note: The default port for SHARED_JVM mode is now 7891.
+ SHARED_JVM mode now calls release_JVM() automatically.
+ UTF8 support
+ User code can now be a public class and (optionally) inside a package.
+ Callback classes have changed.
  Note: These classes are now in the org.perl.inline.java package.
  Note: PerlException has been renamed InlineJavaPerlException.
  Note: If you presently use callbacks, your code may now no longer compile.
        You will need to apply the changes listed above to fix it.
+ study_classes now returns the package in which the studied classes
  have been put.
+ Many bug fixes and documentation corrections.

Inline::Java version 0.33 is a minor upgrade that includes:
+ Improved and more flexible debug output
+ Auto loading of thread libraries under Solaris
+ Basic support for J2SDK 1.4
+ Other minor bug fixes

Inline::Java version 0.32 is a minor upgrade that includes:
+ Restored compatibiity with Perl 5.005_03
+ Other minor bug fixes

Inline::Java version 0.31 is a major upgrade that includes:
+ Exception handling (Perl can 'catch' Java exceptions)
+ Callbacks to Perl from Java
+ More complete test suite
+ Improved documentation and related examples
+ Improved installation script and directions
+ Other minor bug fixes

Inline::Java version 0.30 is a major upgrade that includes:
+ Multi-threaded JVM
+ Shared JVM mode for forking programs, i.e. mod_perl
+ Optional test script to simulate forking programs
+ Fixed some memory leaks and made test suite 'leak aware'

Inline::Java version 0.23 is a minor upgrade that includes:
+ Support for multiple Inline::Java sections
+ Other minor bug fixes

Inline::Java version 0.22 is a minor upgrade that includes:
+ Support for Inline 0.41
+ Addition of java.lang.Number as primitive numeric type
+ Other minor bug fixes

Inline::Java version 0.21 is a minor upgrade that includes:
+ 'Studying' of external classes
+ Default no-arg constructors for public ('studied') classes
+ Caching of class information increases performance

Inline::Java version 0.20 is a major upgrade that includes:
+ All public member variables are now exported to Perl.
+ Arrays can now be passed as method parameters and assigned to 
  member variables.
+ Type casting is now available to force the selection of specific
  method signatures.
+ Optional JNI (Java Native Interface) extension improves performance.
+ Increased stability on Win32.

Inline::Java version 0.01 includes:
+ All classes and their public methods are exported to Perl, relative
  to your current package.
+ All objects (except arrays) and primitive Java types are supported as
  method parameters.


-------------------------------------------------------------------------------
INFORMATION:

= For more information on Inline::Java, see 'perldoc Inline::Java'.
= For information about Inline, see 'perldoc Inline'.
= For information on using Java, visit http://java.sun.org.

Inline::Java's mailing list is inline@perl.org. 
To subscribe, send an email to inline-subscribe@perl.org.

Inline::Java's home page is http://inline.perl.org/java/.

Please send questions and comments to Patrick LeBoutillier <patl@cpan.org>.

Copyright (c) 2001-2003, Patrick LeBoutillier. All Rights Reserved.  
