apt-get install openjdk-7-jdk doesn't install javac. Why?

The proper Debian/Ubuntu way to configure which javac is pointed to by /usr/bin/javac is to use the update-alternatives command. You can do it interactively, and select from a list of available options:

sudo update-alternatives --config javac

Or you can specify which option you want on the command-line:

sudo update-alternatives --set javac /usr/lib/jvm/java-7-openjdk/bin/javac

Because of the way it stores the information, using update-alternatives is not exactly equivalent (but instead is considered preferable) to manually making /usr/bin/java a symbolic link to your javac of choice. See man update-alternatives for more information about this.

If update-alternatives doesn't work, then run this command and try again:

sudo ln -s /etc/alternatives/javac /usr/bin/javac

Here's what I did. It worked.

First I installed the jdk for Java 7 like this:

sudo apt-get install openjdk-7-jdk

That might be enough: check and see if javac in your PATH by running javac -version

If not, then follow Nicholas' answer except that instead of sudo update-alternatives --config javac use this:

sudo update-alternatives --config java

And selected Java 7 at at the the prompt by typing 2:

There are 2 choices for the alternative java (providing /usr/bin/java).

  Selection    Path                                            Priority   Status
------------------------------------------------------------
  0            /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/java   1061      auto mode
  1            /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/java   1061      manual mode
* 2            /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java   1051      manual mode

Press enter to keep the current choice[*], or type selection number: