Previous | Next | Trail Map | Integrating Native Methods into Java Programs | Implementing Native Methods


The Character Replacement Program

The example highlighted in this lesson implements a simple "character-replace" program called Replace. You invoke the program with four command line arguments: The Replace program reads from inputfile, replaces all occurrences of char1 with char2, and writes the results to outputfile.

The Replace program was originally written by Eugene Kuerner for the alpha version of Java. It's been updated to run with the latest Java release.

The Source Files

Replace.java
Contains the main program.
File.java
Defines a class named File. This class provides basic file and path manipulation with the expectation that subclasses will provide the actual file management code depending on the file semantics they want to present. InputFile and OutputFile both derive from File.
InputFile.java
Contains the InputFile class (a subclass of File), which implements a read-only input file. This class declares three native methods whose implementations are written in the C programming language and provided in InputFileImpl.c.
OutputFile.java
Contains the OutputFile class (a subclass of File) that implements a write-only output file. This class declares three native methods whose implementations are written in the C programming language and provided in OutputFileImpl.c.

Files Generated by javah

File.h
InputFile.h
OutputFile.h
C header files generated by javah.
File.c
InputFile.c
OutputFile.c
C stub files generated by javah -stubs.

Instructions

  1. Compile the .java files into .class files using the Java compiler.
  2. Compile all of the C code into a dynamically loadable library named "file". If you don't know how to do this, look at the instructions in Step 6: Create a Dynamically Loadable Library(in the Using the Java Native Interface (JNI) trail)in the Step By Step lesson.
  3. Run the program using the Java interpreter.


Previous | Next | Trail Map | Integrating Native Methods into Java Programs | Table of Contents