Hello World in Java (Linux)


This guide explains how to configure a Java programming environment on Linux Linux logo, create and compile a Java program in IntelliJ, and run it from the command line.

You will need a 64-bit version of Linux (such as Ubuntu, Fedora, or Debian) with root privileges.



    1.   Install Java


You will use Java SE Development Kit 21 (JDK 21).

Note

Skip this step if you already have JDK 21 installed.


    2.   Install Command-Line Tools


Next, you will install our textbook libraries, SpotBugs, PMD, and Checkstyle to /usr/local/lift and associated wrapper scripts to /usr/local/bin.

You should not need to update any shell configuration files (such as .bashrc) or set any environment variables (such as JAVA_HOME or CLASSPATH). For reference, here are our recommended shell configuration files for Bash:
    3.   Install IntelliJ


Now, you will install IntelliJ.


    4.   Open a Project in IntelliJ


You will develop your Java programs in IntelliJ, which organizes programs into projects. In our context, each project corresponds to one programming assignment and contains source files, data files, and course-specific settings.


    5.   Create a Program in IntelliJ


Now you are ready to write your first Java program. IntelliJ provides syntax highlighting, bracket matching, automatic indentation and formatting, automatic imports, variable renaming, and continuous code inspection.


    6.   Compile and Run the Program (from IntelliJ)


Before Java can execute (or run) your program, it must compile the source code.


Tip

Use the LIFT menu to compile and run your program from IntelliJ. The Build and Run menus support additional options for advanced programmers.

Before using the LIFT menu, click inside the editor window to make it active.


    7.   Compile and Run the Program (from the command line)


The command line provides a simple and powerful way to control programs using command-line arguments, file redirection, and piping. IntelliJ includes an embedded terminal for convenient access.


    8.   Textbook Libraries (from the command line)


To make our textbook libraries accessible to Java from the command line, you will use our wrapper scripts.

When you run the the program, the standard drawing window opens and animates 20 colliding disks.

To get your command prompt back, close the standard drawing window.


    Frequently Asked Questions


Expand All Collapse All


Licensing FAQ
How is the software licensed?
All of the included software is licensed under various open-source licenses.
Linux FAQ
My distribution of Linux is { Gentoo, Debian, Ubuntu, Fedora, Red Hat, SuSE, Mandriva, or Slackware }. How should I modify the instructions?
We haven’t tested out these instructions on all flavors of Linux, but the instructions should be identical except for installing Java. We recommend using your distribution’s package manager (such as apt, zypper, emerge, or yum) to install Java.
I have a Chromebook. Will the instructions above work?
Possibly, but not without extra work. By default, Chromebooks do not support installing Linux apps. Try following these instructions for installing Linux apps on a Chromebook.
Java FAQ
Can I use a different Java or version?
Yes. You may use any version of Java 11 or newer from either Oracle or OpenJDK. If you do, you may need to configure the Platform SDK and Project SDK manually in IntelliJ under File → Project Structure. We recommend using long-term support (LTS) versions: Java 11, Java 17, Java 21, and Java 25.
How can I check which version of Java is installed (and where it is installed)?
Type the following commands in the terminal:
~/hello> javac -version
javac 21.0.11
~/hello> java -version
openjdk version "21.0.11" 2026-04-21 LTS
OpenJDK Runtime Environment Temurin-21.0.11+10-LTS (build 21.0.11+10-LTS)
OpenJDK 64-Bit Server VM Temurin-21.0.11+10-LTS (build 21.0.11+10-LTS, mixed mode, sharing)

~/hello> type javac
/usr/bin/javac

~/hello> type java
/usr/bin/java
With the default installation, javac and java should both report version 21.
IntelliJ FAQ
How does this customized version of IntelliJ different from the standard one?
IntelliJ is an industrial-strength integrated development environment (IDE), suitable for use by professional programmers. The installer configures your user preferences to make it more suitable for use by novice programmers:

The course-specific project folders provide additional customizations:

Where should I store my projects?
Store projects on a local drive (not a network drive, cloud-synced folder, or SMB share). Create one course folder with a separate subfolder for each assignment.
Are there any special characters to avoid when naming IntelliJ projects or files?
Do not end the name of a project folder (or any enclosing directory) with an exclamation mark (!); doing so confuse IntelliJ and Checkstyle.
How can I create a new project in IntelliJ?
If you want to inherit all of the properties of an existing project,

To create a new project from scratch, you can use the New Project option from the Welcome screen. But, we do not recommend this approach for novice programmers.

What are the most important IntelliJ menu options to remember?
Here are the most important ones (and their shortcuts).
Can I use a version of IntelliJ that is newer than 2026.2.1?
Yes, though if it is 2026.3 (or above), you will need to migrate your user preferences.
How can I restore the original IntelliJ settings (instead of the custom novice-friendly ones)?
Command-Line and Embedded Terminal FAQ
When I compile or run a program from the command line that uses one of the textbook libraries, I get an error that it cannot find the library. How can I fix this?
Make sure that you are using the appropriate wrapper script, such as javac-algs4 or java-algs4.
How should I configure Bash?
If you followed our instructions, our wrapper scripts (such as javac-algs4 and java-algs4) should already be available.

The installer configures Bash by copying .bashrc, .bash_profile, and .inputrc. If you accepted the default installation options, no additional configuration is required.

How do I break out of a program in an infinite loop?
Type Ctrl-C.
How do I specify EOF to signal that standard input is empty?
On macOS and Linux, press Enter, then Ctrl-D. On Windows, press Enter, Ctrl-Z, and then Enter, even in Git Bash.
How can I run SpotBugs, PMD, and Checkstyle from the command line?
The installer includes wrapper scripts to simplify this process.
How do I verify that /usr/local/bin is in my PATH environment variable?
Type the following command:
~> echo $PATH
/usr/local/bin:/usr/bin:/usr/local/sbin:usr/sbin
You should see the entry /usr/local/bin, where entries are delimited by the colon : character.