Hello World in Java on Mac OS X


This DrJava-based Java programming environment is no longer being supported (because DrJava in no longer being actively developed and DrJava is incompatible with Java 11). It has been replaced by the following IntelliJ-based programming environment for 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 a Java program using either DrJava or the Terminal. All of the software used is freely available.

You will need an Intel-based Mac running Mac OS X 10.8 (Mountain Lion) to Mac OS X 10.13 (High Sierra).

You can defer steps 4–6 until Section 1.5 of the textbook.


0.   Install the Programming Environment


Our installer downloads, installs, and configures the Java programming environment you will be using, including DrJava, and the standard libraries from our textbook.


1.   Create the Program in DrJava


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.


2.   Compile the Program in DrJava


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.


3.   Execute the Program in DrJava


Now it is time to run your program. This is the fun part.

Congratulations, you are now a Java programmer!


4.   Command-Line Interface with the Terminal


The command-line provides capabilities beyond those available in DrJava, including redirection and piping. You will type commands in an application called the Terminal.


5.   Compile the Program from the Terminal


You will use the javac command to convert your Java program into a form more amenable for execution on a computer.


6.   Execute the Program from the Terminal


You will use the java command to execute your program.


Troubleshooting


How long should the installer take? Once downloaded, the Oracle Java installer should take about 10 seconds and the introcs.app installer should take about 20 seconds. If you have virus detection software running (such as McAfee Endpoint), each could take 5–10 minutes (or more).

The installer didn't work on my machine. What should I do? Check out the following three Q+As. If these don't resolve the issue, please contact a staff member to identify what went wrong.

When I run the installer, the terminal window just waits after asking for a password. But, I don't even have a password-enabled account. You must have a non-blank password. Here are instructions for resetting a user's password.

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, I get an error like bash: /private/var/folders/70/n8stth1d1x33hrw8n07kf1280000gn/T/AppTranslocation/45FC25B7-17E3-46DF-AC27-9A7EF56DDFD3/d/algs4.app/Contents/Resources/launcher.sh: No such file or directory. What should I do? This is likely due to OS X Sierra path randomization. Use the Finder to move introcs.app to some other folder and try again.

What does the installer do? In short, it downloads, installs, and configures Checkstyle, Findbugs, and DrJava, and the textbook standard libraries. Here is a more detailed list:

  1. Checks that Java is installed.

  2. Downloads the textbook standard libraries from stdlib.jar.

  3. Downloads the Java wrapper scripts javac-introcs and java-introcs.

  4. Downloads and installs Findbugs 3.0.1 from findbugs.zip. Downloads our findbugs configuration file findbugs.xml and wrapper script findbugs-introcs.

  5. Downloads and installs PMD 5.8.1 from pmd.zip. Downloads our PMD configuration file pmd.xml and wrapper script pmd-introcs.

  6. Downloads and installs Checkstyle 8.2 from checkstyle.zip. Downloads our checkstyle configuration file checkstyle-introcs.xml and wrapper script checkstyle-introcs.

  7. Downloads and installs the latest stable version of DrJava, from DrJava.zip. 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.

  8. Tests that the installation succeeded by compiling and executing TestIntroCS.java.

Why does the installer need my password? The installer copies files into /usr/local/bin and /usr/local/introcs, which require superuser privileges.

How do I completely uninstall introcs.app?

What happens if I re-run the installer? It will re-download, install, and configure Checkstyle, Findbugs, DrJava, and our textbook libraries.

Can I use a different version of Java? Any version of Java 8 (either Oracle or OpenJDK) should work fine. Note that DrJava does not currently work with Java 9.

I have both Java 8 and Java 9 installed, but the default version is Java 9. How do I change the default version back to Java 8? To disable Java 9, type the following commands in the Terminal:

cd /Library/Java/JavaVirtualMachines/jdk-9.0.1.jdk/Contents
sudo mv Info.plist Info.plist.disabled
You should still be able to use Java 9 by specifying the full path to javac and java, e.g., /Library/Java/JavaVirtualMachines/jdk-9.0.1.jdk/Contents/Home/bin/javac.

Why I try to run DrJava, I get the following error message. How should I proceed?

legacy Java 6 error
Are you sure that you are using the version of DrJava that was installed by our auto-installer (and not downloaded from the DrJava website)? We suggest deleting any older versions of DrJava and using the one that the auto-installer copied to the /Applications directory.

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 (such as the classpath).

When I compile or execute a program in Terminal that uses the textbook standard library, I get an error that it cannot find the library. How can I fix this? Use the wrapper scripts javac-introcs and java-introcs, which add stdlib.jar to the Java classpath.

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.

Where can I learn more about the command line? Here is a short tutorial on the command line.