CHAPTER 1 N GETTING STARTED WITH JAVA 8
11
Compilation produces two files. One is for HelloMessage, and the other is for the class named HelloWorld
implementing the main() method.
Execute the main() method by issuing the java command to invoke the Java Virtual Machine (JVM). Pass the
fully-qualified class name as a parameter to the command. Qualify the class name by prepending the package name,
but this time use the same dot-notation as used in your source file. For example:
java org.java8recipes.chapter1.recipe1_02.HelloWorld
Do not specify .class at the end of the command. You are referencing HelloWorld now as a class name, and not
as a file name. You should see the same output as from Recipe 1-2.
Tip N One compiles source code. Source code is kept in files, so your operating-system’s file and directory-path
notation is appropriate. One executes a class. A class is an abstract concept in the language, so the language’s
dot-notation becomes appropriate. Keep this distinction in mind to help yourself remember when to use which notation.
How It Works
The first two solution steps are housekeeping steps. You must have the Java compiler and the virtual machine in your
execution path. It’s also necessary for any classes used by your program to be found somewhere along what is termed
the class path. One way to specify the class path is through the CLASSPATH environment variable.
The command java with no c at the end is for executing compiled code. Pass as a parameter the qualified
name of the class containing your main method. The JVM will interpret and execute the byte-code within that class,
beginning from the main method. The JVM will search along the class path for any additionally required classes such
as HelloMessage.
The compiler’s default behavior is to place each generated class file into the same directory as holds the
corresponding source file. You can override that behavior through the -d option. For example:
javac -d "<specify-different-location>" "<path-to-project>
\Java8Recipes\src\org\java8recipes\chapter1\recipe1_02\HelloWorld.java"
The -d option in this command specifies the same directory as NetBeans is using in our own environment as the
target for holding generated class files. The command also specifies the full path and file name of the source file. Thus,
the command can be executed with the same result regardless of the current working directory.
Tip N Configure your system so that your command-line environment has the execution path and class path set
correctly by default. The typical approach in Linux is to put appropriate commands into your .profile or .bash_profile
files. Under Windows you can specify environment variable defaults from the Control Panel applet named System, by
clicking on the Advanced system settings link, and then on the Environment Variables button.
There may be times when you need to specify a custom class path for a specific execution of the JVM. You can do
that through the -cp parameter, as follows:
java -cp ".;<path-to-project>\Java8Recipes\build\classes\org\java8recipes\chapter1\recipe1_02"
org.java8recipes.chapter1.recipe1_02.HelloWorld