Hello World in Java on Mac OS X
This document instructs you on how to set up our Java programming environment for your Mac OS X computer. It also provides a step-by-step guide for creating, compiling, and executing your first Java program using either DrJava or Terminal. All of the software used is freely available on the Web.
These instructions apply to Mac OS X 10.4.11 (Tiger) to Mac OS X 10.8 (Mountain Lion).
If you have previously used the introcs.app installer from the textbook Introduction to Programming in Java, your Java programming environment should be set up already except that you may need to download algs4.jar and add it to the classpath.
|
|
Our installer downloads, installs, and configures
the Java programming environment you will be using,
including Java SE 6, DrJava, the textbook libraries, and the Terminal.
- Log in to the user account in which you will be programming. Your account must have Administrator privileges (with a non-blank password) and and you must be connected to the Internet.
- You will need a Java runtime, which is installed by default on all versions of Mac OS X prior to 10.7 Lion. If you are running any version of Mac OS X prior to 10.7 Lion, run Software Update; if are running 10.7 Lion or newer but don't have a Java runtime, install the Java runtime.
-
To install,
- Download algs4.zip.
- If you have Mac OS X 10.8 (Mountain Lion), temporarily allow applications downloaded from anywhere by selecting System Preferences -> Security & Privacy -> General -> Allow applications downloaded from: Anywhere.
- Double-click it to unzip it.
- Double-click the algs4.app to perform the installation. If you receive a warning that algs4.app is an application downloaded from the Internet, click Open.
- Enter your password when prompted.
-
If the installation succeeds, you will see the following:
- A terminal window containing approximately this execution log.
- A Standard Draw window containing a blue bullseye and a textbook graphic.
- Delete algs4.zip and algs4.app.
- If you have Mac OS X 10.8 (Mountain Lion), select System Preferences -> Security & Privacy -> General -> Allow applications downloaded from: Mac App Store and identified developers.
|
|
Now you are ready to write your first Java program.
You will develop your Java programs in an application called DrJava.
DrJava features many specialized programming tools including syntax highlighting,
bracket matching, auto indenting, and line numbering.
- The installer creates a shortcut to DrJava on the desktop. Double-click it to launch DrJava. If you receive a warning about incoming network connections, click Allow.
-
In the main DrJava window, type the Java program
HelloWorld.java exactly as it appears below. If you omit even a semicolon,
the program won't work.
As you type, DrJava does the indenting for you.public class HelloWorld { public static void main(String[] args) { System.out.println("Hello, World"); } } - Finally, click the Save button to save the file. Use DrJava to create the folder /Users/username/algs4/hello and name the file HelloWorld.java. The file name is case sensitive and must exactly match the name of the class in the Java program.
|
|
It is now time to convert your Java program into a form more amenable for
execution on a computer. To do this, click the Compile button.
If all goes well, you should see the following message in the Compiler Output
pane at the bottom:
Compilation completed.
If DrJava complains in some way, you mistyped something. Check your program carefully, using the error messages in the Compiler Output pane as a guide.
|
|
Now it is time to run your program. This is the fun part.
-
Type the following in the Interactions pane at the bottom.
By convention, we highlight the text you type in boldface.
If all goes well, you should see the following message:> java HelloWorld
Welcome to DrJava. Working directory is /Users/username/algs4/hello > java HelloWorld Hello, World
- You may need to repeat this edit-compile-execute cycle a few times before it works.
|
|
The command-line provides capabilities beyond those available in DrJava,
including redirection and piping.
You will type commands in an application called the Terminal.
-
The installer creates a shortcut on the desktop to the Terminal.
Double-click it to launch the Terminal. You should see something like:
The ~ is shorthand for your home directory /Users/username; the name machine will be replaced by the name of your machine; the name username will be replaced by your username.machine:~ username$
-
To confirm that the Java compiler is installed,
type the command in boldface below and check that the results match:
It's important that you see the number 1.6 or 1.5 for the Java version number, but the rest is not critical.machine:~ username$ javac -version javac 1.6.0_33
-
To confirm that the Java interpreter is installed, type
the command in boldface below and check that the results match:
Again, it's important that you see the number 1.6 or 1.5 for the Java version number, but the rest is not critical.machine:~ username$ java -version java version "1.6.0_33" Java(TM) SE Runtime Environment (build 1.6.0_33-b03-383-11A511) Java HotSpot(TM) 64-Bit Server VM (build 20.1-b02-383, mixed mode)
|
|
You will use the javac command to convert your Java program into a form more amenable for execution on a computer.
-
From the Terminal, navigate to the directory containing HelloWorld.java,
say /Users/username/intros/hello,
by typing the cd (change directory) commands below:
machine:~ username$ cd algs4 machine:~/algs4 username$ cd hello machine:~/algs4/hello username$
-
Compile it by typing the javac command below:
Assuming the file HelloWorld.java is in the current working directory, you should see no error messages.machine:~/algs4/hello username$ javac HelloWorld.java machine:~/algs4/hello username$
- If you want to classpath in our textbook libraries, use the command javac-algs4 instead.
|
|
You will use the java command to execute your program.
-
From the Terminal, type the java command below.
You should see the output of the program.machine:~/algs4/hello username$ java HelloWorld Hello, World
- If you want to classpath in our textbook libraries, use the command java-algs4 instead.
|
|
You can use Checkstyle
and
Findbugs
to check the style of your programs and identify common bugs.
-
To run Checkstyle, type the following command in the Terminal:
Here is a list of available checks. You can customize the settings by editing the file /Users/username/algs4/checkstyle-5.5/checkstyle.xml.machine:~/algs4/hello username$ checkstyle HelloWorld.java Running checkstyle on HelloWorld.java: Starting audit... Audit done.
-
To run Findbugs, type the following command in the Terminal:
Here is a list of bug descriptions. You can customize the settings by editing the file /Users/username/algs4/findbugs-2.0.1/findbugs.xml.machine:~/algs4/hello username$ findbugs HelloWorld.class Running findbugs on HelloWorld.class:
|
|
The installer didn't work on my machine. What should I do? Consult a staff member to identify what went wrong.
What does the installer do? In short, it downloads, installs, and configures our textbook libraries, Checkstyle, Findbugs, and DrJava. Here is a more detailed list:
- Checks that Java is installed.
- Downloads the textbook libraries from stdlib.jar. and algs4.jar.
- Downloads and installs Checkstyle 5.5 from checkstyle.zip. Downloads our checkstyle configuration file checkstyle.xml and execution script checkstyle.
- Downloads and installs Findbugs 2.0.1 from findbugs.zip. Downloads our findbugs configuration file findbugs.xml and execution script findbugs.
- Downloads and installs the latest stable version of DrJava, from drjava-osx.tar.gz. Creates a shortcut to DrJava on the desktop. Downloads and installs the DrJava configuration file from drjava-config.txt to /Users/username/.drjava. Note that this will overwrite any existing .drjava configuration file.
- Tests that the installation succeeded by compiling and executing TestAlgs4.java.
Why does the installer need my password? The installer copies a few files into the /Users/username/Library/Java/Extensions directory, which requires superuser privileges.
How do I completely uninstall algs4.app?
- Delete the directory /Users/username/algs4 (but save any of the .java files you created, if desired).
- To uninstall our textbook libraries, delete the following two files:
- /Users/username/Library/Java/Extensions/stdlib.jar
- /Users/username/Library/Java/Extensions/algs4.jar
- To uninstall DrJava, delete the following two files:
- /Applications/DrJava.app.
- /Users/username/.drjava.
- To uninstall Checkstyle and Findbugs, delete the following two files:
- /usr/local/bin/checkstyle
- /usr/local/bin/findbugs
- Delete the shortcut to DrJava and Terminal on the desktop.
What happens if I rerun the installer? It will re-download, install, and configure our textbook libraries, Checkstyle, Findbugs, and DrJava.
I am using a different version of Java in DrJava and the Terminal. Is this a problem? Yes, they should both be either 1.5 or 1.6; otherwise, you may get a "class file has wrong version 50.0, should be 49.0" error. If the versions of Java are different, go to /Applications/Utility/Java Preferences.app and verify that the Java SE 6 (64-bit) entry is checked and at the top of the list; if not, drag to change the preferred order.
What should I do if I have previously installed DrJava in another location? We suggest deleting it and using the version in /Users/username/algs4 by using the newly created shortcut to DrJava on the desktop.
Why Java 6 instead of Java 7? Apple provides support for Java 6 but not Java 7.
Can I use a different version of Java? Yes, any version of Java 5, Java 6, or Java 7 should work fine.
Can I use a different IDE? Yes you can use another IDE (such as Eclipse) but you will have to configure the IDE properties yourself.
How do I break out of an infinite loop? From DrJava, click the Reset button in the menubar or select the menu option Tools -> Reset Interactions; From the Terminal, type Ctrl-c.
When using standard input, how do I signify that there is no more data? If you are entering input from the keyboard, type Ctrl-d for EOF (end of file) from either DrJava or the Terminal.
When I compile or execute a program in Terminal that uses one of the textbook libraries, I get an error that it cannot find the library. How can I fix this? Verify that the following files are in the specified locations:
- /Users/username/Library/Java/Extensions/stdlib.jar
- /Users/username/Library/Java/Extensions/algs4.jar
Which shell should I use in the Terminal? Bash is the default shell in Mac OS X, but feel free to use whichever one you prefer.
When I run the installer, I get an OSStatus error -67049. Be sure to follow the Mac OS X 10.8 (Mountain Lion) specific instructions.
When I run the installer, I get the error message "bash: /Volumes/Macintosh: No such file or directory". Your user account and OS must be on the same volume.
When I run the installer, the terminal windows just waits after asking for a password.
But, I don't even have a password-enabled account.
As indicated in the instructions, you must have a non-blank password.
Here are instructions for resetting a user's password.