Starting with your last paragraph
Can you tell me where IcedTea6 is most likely set up on Ubuntu? I'd like to override it if I can and make sure my JVM and Compiler are both using the same version.
Ubuntu provides a nice tool to select one JDK/JRE from multiple installations. This is update-java-alternatives. It is closely tied to the update-alternatives tool.
Each JDK/JRE includes a set of java tools like javac, java, javaws, jinfo, javah etc. An installation may come with a hidden .jinfo file where these java components are listed. In my system, when I install the openjdk-8-jdk package, a file /usr/lib/jvm/.java-1.8.0-openjdk-amd64.jinfo is created. The content of that file is (skipped some lines)
name=java-8-openjdk-amd64
alias=java-1.8.0-openjdk-amd64
priority=1081
section=main
hl rmid /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/rmid
hl java /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java
hl keytool /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/keytool
hl jjs /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/jjs
hl pack200 /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/pack200
hl rmiregistry /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/rmiregistry
.
.
. (skipped lines)
.
.
jdkhl jdb /usr/lib/jvm/java-8-openjdk-amd64/bin/jdb
jdkhl serialver /usr/lib/jvm/java-8-openjdk-amd64/bin/serialver
jdkhl wsgen /usr/lib/jvm/java-8-openjdk-amd64/bin/wsgen
jdkhl jcmd /usr/lib/jvm/java-8-openjdk-amd64/bin/jcmd
jdk appletviewer /usr/lib/jvm/java-8-openjdk-amd64/bin/appletviewer
jdk jconsole /usr/lib/jvm/java-8-openjdk-amd64/bin/jconsole
plugin mozilla-javaplugin.so /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/IcedTeaPlugin.so
update-java-alternatives uses this file to create alternatives links in /etc/alternatives directory. The purpose of this directory is to provide a mechanism by which you can select a default program from a set of similar tools. This is great for multiple versions of JDK (see more in update-alternatives)
Brief discussion of update-alternatives
To demonstrate the process briefly. When a program is first installed it registers its alternatives for a master name (like javac) in alternatives database (This is contained in /var/lib/dpkg/alternatives directory). During the installation process, update-alternatives creates a master link in /usr/bin/javac pointing to /etc/alternatives/javac, which is also a symlink pointing to the actual file from the JDK.
Now, When you install another JDK, this too will have a javac program. So, while installing the second JDK update-alternatives automatically updates the /etc/alternatives/javac symlink to point to the one with highest priority . It also updates the alternatives database, so that you can manually select a default by calling it.
Back to the update-java-alternatives
update-java-alternatives uses update-alternatives to provide a whole set defaults from a single JDK/JRE installation. The idea is you will select a JDK/JRE installation and all tools from that JRE/JDK will be used as default for providing multiple java tools, saving you from using update-alternatives for each tool. So, when you use update-java-alternatives to select a JDK, say openjdk-8-jdk for example, it makes the java tools of this JDK (such as javac, java, javaws etc) as default. Provided that the JDK is installed correctly and it lists its tools in .jinfo file.
TL;DR
So, to answer your query in short, IcedTea6 Plugin is configured in the .jinfo file and update-java-alternatives uses that file to update the links to point to it. So, you need to create a file for your JDK listing the plugin and all java tools and use update-java-alternatives.
If you installed JDK/JRE manually, check this question to get help making it recognized by the update-java-alternatives tool.
But we still have problems...
It seems this update-java-alternatives is not updating JDK components anymore lately. It's only updating JRE's tools. There are lots of complaints saying using this tool doesn't update all java components. After experiencing the same problem and spending almost 5 hours on it, I think I've found a fix. The solution is just changing hl to jre and jdkhl to jdk in .jinfo file. I've found an old .jinfo file on github where those were jre and jdk.
The fix for .jinfo file.
So, To fix it use you need to change hl and jdkhls. If your file is .openjdk-8-jdk.jinfo in /usr/lib/jvm/ use this command
sudo sed -i 's/^hl/jre/p' /usr/lib/jvm/.openjdk-8-jdk.jinfo
sudo sed -i 's/^jdkhl/jdk/p' /usr/lib/jvm/.openjdk-8-jdk.jinfo
Now to update, first list the alternatives
sudo update-java-alternatives -l
It will return something like this (the actual reply may be different for you)
java-1.8.0-openjdk-amd64 1081 /usr/lib/jvm/java-1.8.0-openjdk-amd64
jdk1.8.0_65 1081 /usr/lib/jvm/jdk1.8.0_65
Copy the alternative name from the first column and use it to set default. To set jdk1.8.0_65 as default I'd use
sudo update-java-alternatives -s jdk1.8.0_65 -v
Now, check the java and javac version.