
Launch External Programs on Windows #79
Chapter 11, Native Integration and Packaging
|
409
HACK
The Power of Runtime.exec( )
Native integration in Java has always depended on the Java Native Inter-
face, or JNI. Whether you code to JNI directly or use a third-party library,
you are still dealing with native C code through a Java layer. This has always
been problematic because in order to write a JNI library, you need to know
a lot about the internals of the underlying operating system. Most Java
developers went to Java to get away from that sort of thing, so it’s often not
worth it for something simple like opening a URL. There is another way of
talking to the native OS, though. You can use
Runtime.exec( ).
Since 1.0, Java has had the
Runtime.exec( )
static function to start another
program directly and pass command-line parameters. It’s easy to forget
about command-line utilities, but for simple things they can be far, far eas-
ier than trying to deal with JNI. The disadvantages of calling a native pro-
gram over a Java API are of course speed, since you are starting a new
process, and the fact that the program is not cross-platform. This may be an
acceptable tradeoff, however, since you could disable the feature that needs
the
exec( ) call or provide a different command for other platforms.
Open a Text File
Windows 2000 introduced a small program called start. Originally a sepa-
rate install, the
start ...