diff --git a/apps/BOB/nbproject/project.properties b/apps/BOB/nbproject/project.properties
index cb27f85ab2ed30ed8a575fdb713af05dd06e92d4..2badec848292365077163ffac4c203f09a8cf501 100644
--- a/apps/BOB/nbproject/project.properties
+++ b/apps/BOB/nbproject/project.properties
@@ -48,8 +48,9 @@ javac.classpath=\
 # Space-separated list of extra javac options
 javac.compilerargs=
 javac.deprecation=false
-javac.source=1.5
-javac.target=1.5
+javac.version=1.7
+javac.source=${javac.version}
+javac.target=${javac.version}
 javac.test.classpath=\
     ${javac.classpath}:\
     ${build.classes.dir}:\
diff --git a/apps/addressbook/build.xml b/apps/addressbook/build.xml
index 5af5a32a8fb6aac948506e270b12f070843164b6..e4e913cb20e6e43b58d744d24ad619d9cfaa91bc 100644
--- a/apps/addressbook/build.xml
+++ b/apps/addressbook/build.xml
@@ -7,7 +7,7 @@
 	<property name="jar" value="addressbook.jar"/>
 	<property name="war" value="addressbook.war"/>
 	<property name="javac.compilerargs" value="" />
-	<property name="javac.version" value="1.6" />
+	<property name="javac.version" value="1.7" />
 	
 	<target name="init">
 		<mkdir dir="${build}"/>
diff --git a/apps/desktopgui/build.xml b/apps/desktopgui/build.xml
index 1a1c9105e3cc52bb8cf557eb8e8451b70965b261..b31cc86dfdbd29405a65c2a6afb24bcf9005224c 100644
--- a/apps/desktopgui/build.xml
+++ b/apps/desktopgui/build.xml
@@ -7,7 +7,7 @@
 	<property name="jar" value="desktopgui.jar"/>
 	<property name="javadoc" value="javadoc"/>
 	<property name="javac.compilerargs" value=""/>
-	<property name="javac.version" value="1.6" />
+	<property name="javac.version" value="1.7" />
 	<property name="require.gettext" value="true" />
 
     <condition property="no.bundle">
diff --git a/apps/i2psnark/java/build.xml b/apps/i2psnark/java/build.xml
index 486d66a801d7ad3fe88bb232096627853c2301ad..8815d6753a2f807ad22e950ff21d669b712e0d49 100644
--- a/apps/i2psnark/java/build.xml
+++ b/apps/i2psnark/java/build.xml
@@ -26,7 +26,7 @@
     </target>
 
     <property name="javac.compilerargs" value="" />
-    <property name="javac.version" value="1.6" />
+    <property name="javac.version" value="1.7" />
     <property name="require.gettext" value="true" />
 
     <condition property="no.bundle">
diff --git a/apps/i2ptunnel/java/build.xml b/apps/i2ptunnel/java/build.xml
index 346e91920467f749e20b962db842f6f93001aa20..6c4698a27a61f81d5b1396620eb89c816271954a 100644
--- a/apps/i2ptunnel/java/build.xml
+++ b/apps/i2ptunnel/java/build.xml
@@ -28,7 +28,7 @@
 
     <!-- only used if not set by a higher build.xml -->
     <property name="javac.compilerargs" value="" />
-    <property name="javac.version" value="1.6" />
+    <property name="javac.version" value="1.7" />
     <property name="require.gettext" value="true" />
 
     <target name="compile" depends="depend">
diff --git a/apps/imagegen/identicon/build.xml b/apps/imagegen/identicon/build.xml
index 64f97ee9c5bd81ae5b01d8be14595dd65ec39fb7..e0e85bd53287ac6658dd4f8998d4622a9907f031 100644
--- a/apps/imagegen/identicon/build.xml
+++ b/apps/imagegen/identicon/build.xml
@@ -18,7 +18,7 @@
 
     <!-- only used if not set by a higher build.xml -->
     <property name="javac.compilerargs" value="" />
-    <property name="javac.version" value="1.6" />
+    <property name="javac.version" value="1.7" />
 
     <target name="compile" depends="depend">
         <mkdir dir="./build" />
diff --git a/apps/imagegen/imagegen/build.xml b/apps/imagegen/imagegen/build.xml
index d16eab6d7ac62e92bf1fe1b8636d589728449590..7cc657c05177f0613d2363cd530ae247b18d1011 100644
--- a/apps/imagegen/imagegen/build.xml
+++ b/apps/imagegen/imagegen/build.xml
@@ -28,7 +28,7 @@
 
     <!-- only used if not set by a higher build.xml -->
     <property name="javac.compilerargs" value="" />
-    <property name="javac.version" value="1.6" />
+    <property name="javac.version" value="1.7" />
 
     <target name="compile" depends="depend">
         <mkdir dir="./build" />
diff --git a/apps/imagegen/zxing/build.xml b/apps/imagegen/zxing/build.xml
index 4ddb3bcf33e0b2377ad6d8ec4743c2796238cb9b..c878015b17eafa31bacfd5441dc7aac3f16b4281 100644
--- a/apps/imagegen/zxing/build.xml
+++ b/apps/imagegen/zxing/build.xml
@@ -22,12 +22,12 @@
     <target name="compile" depends="depend">
         <mkdir dir="./build" />
         <mkdir dir="./build/obj" />
-        <javac srcdir="./core/src/main/java" debug="true" deprecation="on" source="1.7" target="1.7"
+        <javac srcdir="./core/src/main/java" debug="true" deprecation="on" source="${javac.version}" target="${javac.version}"
                includeAntRuntime="false"
                destdir="./build/obj" >
             <compilerarg line="${javac.compilerargs7}" />
         </javac>
-        <javac srcdir="./javase/src/main/java" debug="true" deprecation="on" source="1.7" target="1.7"
+        <javac srcdir="./javase/src/main/java" debug="true" deprecation="on" source="${javac.version}" target="${javac.version}"
                includeAntRuntime="false"
                destdir="./build/obj" classpath="./build/obj" >
             <compilerarg line="${javac.compilerargs7}" />
diff --git a/apps/jetty/build.xml b/apps/jetty/build.xml
index 0f213c39a49c6dae9784f1bb09360cb24d73a518..17900f1c4a32503d5c6712c9f9678b1256b391e9 100644
--- a/apps/jetty/build.xml
+++ b/apps/jetty/build.xml
@@ -20,7 +20,7 @@
     <property name="jetty.url" value="http://repo1.maven.org/maven2/org/eclipse/jetty/jetty-distribution/${jetty.ver}/${jetty.filename}" />
     <property name="verified.filename" value="verified.txt" />
     <property name="javac.compilerargs" value="" />
-    <property name="javac.version" value="1.6" />
+    <property name="javac.version" value="1.7" />
     <property name="tomcat.lib" value="apache-tomcat-deployer/lib" />
     <property name="tomcat.ver" value="6.0.47" />
     <property name="tomcat2.lib" value="apache-tomcat-${tomcat.ver}/lib" />
diff --git a/apps/ministreaming/java/build.xml b/apps/ministreaming/java/build.xml
index 825ae2fc0aca3a82bc2c7649a695354b69a12049..8232492b1f7ceaa2af6e7fbb430965d9f0ed4073 100644
--- a/apps/ministreaming/java/build.xml
+++ b/apps/ministreaming/java/build.xml
@@ -22,7 +22,7 @@
 
     <!-- only used if not set by a higher build.xml -->
     <property name="javac.compilerargs" value="" />
-    <property name="javac.version" value="1.6" />
+    <property name="javac.version" value="1.7" />
     <property name="require.gettext" value="true" />
 
     <condition property="no.bundle">
diff --git a/apps/routerconsole/java/build.xml b/apps/routerconsole/java/build.xml
index 259a0f360aff28583c9c3a0e1c676a364976c453..6248346accf0f6b5ac6f3673214a08ac0a282fb5 100644
--- a/apps/routerconsole/java/build.xml
+++ b/apps/routerconsole/java/build.xml
@@ -47,7 +47,7 @@
     </target>
 
     <property name="javac.compilerargs" value="" />
-    <property name="javac.version" value="1.6" />
+    <property name="javac.version" value="1.7" />
 
     <target name="compile" depends="prepare, depend, dependVersion">
         <mkdir dir="./build" />
diff --git a/apps/sam/java/build.xml b/apps/sam/java/build.xml
index 04e8d6932092e2bcad070e5d85eda3cd988a5863..9aab0527c6d07fdb4a400b525ac0751dc28a0862 100644
--- a/apps/sam/java/build.xml
+++ b/apps/sam/java/build.xml
@@ -22,10 +22,8 @@
         </depend>
     </target>
 
-    <!-- ignored for now, we require java 7 here -->
     <property name="javac.compilerargs7" value="" />
-    <!-- ignored for now, we require java 7 here -->
-    <property name="javac.version" value="1.6" />
+    <property name="javac.version" value="1.7" />
 
     <!-- compile everything including client classes -->
     <target name="compile" depends="depend">
@@ -33,7 +31,7 @@
         <mkdir dir="./build/obj" />
         <javac 
             srcdir="./src" 
-            debug="true" deprecation="on" source="1.7" target="1.7" 
+            debug="true" deprecation="on" source="${javac.version}" target="${javac.version}" 
             includeAntRuntime="false"
             destdir="./build/obj" 
             classpath="../../../core/java/build/i2p.jar:../../../core/java/build/gnu-getopt.jar:../../ministreaming/java/build/mstreaming.jar" >
diff --git a/apps/streaming/java/build.xml b/apps/streaming/java/build.xml
index 67d943e4156d0dc339d64175a09e2367543b8ddc..0c2b80d71e5e85e6d187d9ec0fde360b82945ca4 100644
--- a/apps/streaming/java/build.xml
+++ b/apps/streaming/java/build.xml
@@ -23,7 +23,7 @@
 
     <!-- only used if not set by a higher build.xml -->
     <property name="javac.compilerargs" value="" />
-    <property name="javac.version" value="1.6" />
+    <property name="javac.version" value="1.7" />
 
     <target name="compile" depends="depend">
         <mkdir dir="./build" />
diff --git a/apps/susidns/src/build.xml b/apps/susidns/src/build.xml
index 77d63bc228cb197c47ff7d605f83d25a9f52eb2d..eefdacd5950b6c89d145b038ed541c6f011f17d1 100644
--- a/apps/susidns/src/build.xml
+++ b/apps/susidns/src/build.xml
@@ -33,7 +33,7 @@
  	</path>
 
 	<property name="javac.compilerargs" value="" />
-	<property name="javac.version" value="1.6" />
+	<property name="javac.version" value="1.7" />
 	<property name="require.gettext" value="true" />
 
     <condition property="no.bundle">
diff --git a/apps/susimail/build.xml b/apps/susimail/build.xml
index ca0a32e2226f89fd349efaf1fd782adf9c760807..b3ede69b37f2c70aaaac3a2975a8666f1683576f 100644
--- a/apps/susimail/build.xml
+++ b/apps/susimail/build.xml
@@ -7,7 +7,7 @@
     </target>
 
     <property name="javac.compilerargs" value="" />
-    <property name="javac.version" value="1.6" />
+    <property name="javac.version" value="1.7" />
     <property name="require.gettext" value="true" />
 
     <condition property="no.bundle">
diff --git a/apps/systray/java/build.xml b/apps/systray/java/build.xml
index f647ec30eb64b0fea05bd0d50c159a6827b28816..448c5ca8fcafa0bff60a7aa5972f6d2284f61f2b 100644
--- a/apps/systray/java/build.xml
+++ b/apps/systray/java/build.xml
@@ -21,7 +21,7 @@
     </target>
 
     <property name="javac.compilerargs" value="" />
-    <property name="javac.version" value="1.6" />
+    <property name="javac.version" value="1.7" />
 
     <target name="compile" depends="depend">
         <mkdir dir="./build" />
diff --git a/build.properties b/build.properties
index bfbde63d472a5f1011cbc499af65c2e3ec48a58c..8bde13e19039a66919a767e18d72d43d56e4ba7d 100644
--- a/build.properties
+++ b/build.properties
@@ -40,23 +40,20 @@ sloccount.report.file=sloccount.sc
 require.gettext=true
 
 # Compile for this version of Java
-javac.version=1.6
+javac.version=1.7
 
 # Additional classpath if required
 #javac.classpath=/PATH/TO/pack200.jar
 
 # Optional compiler args
-# This one is for subsystems requiring Java 6
 # This one keeps gcj a lot quieter
 #javac.compilerargs=-warn:-unchecked,raw,unused,serial
-# This one is for subsystems requiring Java 7
-#javac.compilerargs7=
 
 #
 # Note to packagers, embedders, distributors:
 #
 # Strictly speaking, you must either use the compiler for the minimum Java version you are
-# targeting (default 1.6, see above), or specify a bootclasspath, which means you need
+# targeting (default 1.7, see above), or specify a bootclasspath, which means you need
 # the JRE for the target version installed as well.
 #
 # However, in practice, you can compile with 1.7 and target 1.6 without specifying a bootclasspath,
@@ -70,7 +67,20 @@ javac.version=1.6
 #    http://zzz.i2p/topics/1668
 #    https://gist.github.com/AlainODea/1375759b8720a3f9f094
 #
+# You must set both.
+#
+# For embedded use only, and for a limited time,
+# the following subsystems ONLY may be built with Java 6 by setting javac.version=1.6 in override.properties,
+# and setting javac.compilerargs to use java 6 jars:
+# core, router, ministreaming, streaming, addressbook, i2ptunnel, BOB
+# Use the buildX ant targets to build these (see build.xml).
+# We may start using Java 7 features in these subsystems at any time and without notice.
 #javac.compilerargs=-bootclasspath /usr/lib/jvm/java-6-openjdk-amd64/jre/lib/rt.jar:/usr/lib/jvm/java-6-openjdk-amd64/jre/lib/jce.jar
+#
+# For standard builds, set both of the following in override.properties:
+#
+#javac.compilerargs=-bootclasspath /usr/lib/jvm/java-7-openjdk-amd64/jre/lib/rt.jar:/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/jce.jar
+#javac.compilerargs7=-bootclasspath /usr/lib/jvm/java-7-openjdk-amd64/jre/lib/rt.jar:/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/jce.jar
 
 
 ### UnitTests ##
diff --git a/core/java/build.xml b/core/java/build.xml
index 671c94b3c592a885338d4ebeca644de082c76da4..3143f550c92979fd9e76c3cd6f0770f78bacc2d0 100644
--- a/core/java/build.xml
+++ b/core/java/build.xml
@@ -19,7 +19,7 @@
     <!-- only used if not set by a higher build.xml -->
     <property name="javac.compilerargs" value="" />
     <property name="javac.classpath" value="" />
-    <property name="javac.version" value="1.6" />
+    <property name="javac.version" value="1.7" />
 
     <!-- fixups if we're using libintl.jar for GettextResource.java -->
     <condition property="source.exclude1" value="gnu/gettext/GettextResource.java" else="NOTHING" >
diff --git a/installer/java/build.xml b/installer/java/build.xml
index 89a4ff6cc05c426aaef0d86fd39c0df14a4412d1..f0caf6b8610222a1f6c04477548422f06b530345 100644
--- a/installer/java/build.xml
+++ b/installer/java/build.xml
@@ -19,7 +19,7 @@
     <!-- only used if not set by a higher build.xml -->
     <property name="javac.compilerargs" value="" />
     <property name="javac.classpath" value="" />
-    <property name="javac.version" value="1.6" />
+    <property name="javac.version" value="1.7" />
 
     <target name="compile" depends="depend">
         <mkdir dir="./build" />
diff --git a/installer/tools/java/build.xml b/installer/tools/java/build.xml
index 4c6f849a206c5ae7c95fa9dc57f848c27c2097ae..c7dff1b4e9cf3b28956732c2ef2368ebdd37d94d 100644
--- a/installer/tools/java/build.xml
+++ b/installer/tools/java/build.xml
@@ -19,7 +19,7 @@
     <!-- only used if not set by a higher build.xml -->
     <property name="javac.compilerargs" value="" />
     <property name="javac.classpath" value="" />
-    <property name="javac.version" value="1.6" />
+    <property name="javac.version" value="1.7" />
 
     <target name="compile" depends="depend">
         <mkdir dir="./build" />
diff --git a/router/java/build.xml b/router/java/build.xml
index 52afc658c4f4c68e82f336697e7a04db6c11b466..79c3d5d53d23502ac0e7d34d7b5f227748ed9951 100644
--- a/router/java/build.xml
+++ b/router/java/build.xml
@@ -33,7 +33,7 @@
 
     <!-- only used if not set by a higher build.xml -->
     <property name="javac.compilerargs" value="" />
-    <property name="javac.version" value="1.6" />
+    <property name="javac.version" value="1.7" />
 
     <target name="compile" depends="depend, dependVersion">
         <mkdir dir="./build" />