diff --git a/Library/Homebrew/language/java.rb b/Library/Homebrew/language/java.rb
new file mode 100644
index 0000000000000000000000000000000000000000..dd0918380978307f6fcbb57c0b919f172d13df71
--- /dev/null
+++ b/Library/Homebrew/language/java.rb
@@ -0,0 +1,8 @@
+module Language
+  module Java
+    def self.java_home_env(version=nil)
+      version_flag = " --version #{version}" if version
+      { :JAVA_HOME => "$(/usr/libexec/java_home#{version_flag})" }
+    end
+  end
+end
diff --git a/Library/Homebrew/requirements.rb b/Library/Homebrew/requirements.rb
index 899d9a47e705a6f68841f44f744bf7efa5cb927f..d24dc02e6d36172dddde92323db289e45487bdba 100644
--- a/Library/Homebrew/requirements.rb
+++ b/Library/Homebrew/requirements.rb
@@ -7,6 +7,7 @@ require 'requirements/maximum_macos_requirement'
 require 'requirements/mpi_dependency'
 require 'requirements/osxfuse_dependency'
 require 'requirements/python_dependency'
+require 'requirements/java_dependency'
 require 'requirements/tuntap_dependency'
 require 'requirements/unsigned_kext_requirement'
 require 'requirements/x11_dependency'
@@ -122,46 +123,3 @@ class GitDependency < Requirement
   satisfy { !!which('git') }
 end
 
-class JavaDependency < Requirement
-  fatal true
-  cask "java"
-  download "http://www.oracle.com/technetwork/java/javase/downloads/index.html"
-
-  satisfy { java_version }
-
-  env do
-    java_home = Pathname.new(@java_home)
-    ENV["JAVA_HOME"] = java_home
-    ENV.prepend_path "PATH", java_home/"bin"
-    if (java_home/"include").exist? # Oracle JVM
-      ENV.append_to_cflags "-I#{java_home}/include"
-      ENV.append_to_cflags "-I#{java_home}/include/darwin"
-    else # Apple JVM
-      ENV.append_to_cflags "-I/System/Library/Frameworks/JavaVM.framework/Versions/Current/Headers/"
-    end
-  end
-
-  def initialize(tags)
-    @version = tags.shift if /(\d\.)+\d/ === tags.first
-    super
-  end
-
-  def java_version
-    args = %w[--failfast]
-    args << "--version" << "#{@version}" if @version
-    @java_home = Utils.popen_read("/usr/libexec/java_home", *args).chomp
-    $?.success?
-  end
-
-  def message
-    version_string = " #{@version}" if @version
-
-    s = "Java#{version_string} is required to install this formula."
-    s += super
-    s
-  end
-
-  def inspect
-    "#<#{self.class.name}: #{name.inspect} #{tags.inspect} version=#{@version.inspect}>"
-  end
-end
diff --git a/Library/Homebrew/requirements/java_dependency.rb b/Library/Homebrew/requirements/java_dependency.rb
new file mode 100644
index 0000000000000000000000000000000000000000..7eb6aefaed484db490d6968be417a16726db5d53
--- /dev/null
+++ b/Library/Homebrew/requirements/java_dependency.rb
@@ -0,0 +1,45 @@
+require "language/java"
+
+class JavaDependency < Requirement
+  fatal true
+  cask "java"
+  download "http://www.oracle.com/technetwork/java/javase/downloads/index.html"
+
+  satisfy { java_version }
+
+  env do
+    java_home = Pathname.new(@java_home)
+    ENV["JAVA_HOME"] = java_home
+    ENV.prepend_path "PATH", java_home/"bin"
+    if (java_home/"include").exist? # Oracle JVM
+      ENV.append_to_cflags "-I#{java_home}/include"
+      ENV.append_to_cflags "-I#{java_home}/include/darwin"
+    else # Apple JVM
+      ENV.append_to_cflags "-I/System/Library/Frameworks/JavaVM.framework/Versions/Current/Headers/"
+    end
+  end
+
+  def initialize(tags)
+    @version = tags.shift if /(\d\.)+\d/ === tags.first
+    super
+  end
+
+  def java_version
+    args = %w[--failfast]
+    args << "--version" << "#{@version}" if @version
+    @java_home = Utils.popen_read("/usr/libexec/java_home", *args).chomp
+    $?.success?
+  end
+
+  def message
+    version_string = " #{@version}" if @version
+
+    s = "Java#{version_string} is required to install this formula."
+    s += super
+    s
+  end
+
+  def inspect
+    "#<#{self.class.name}: #{name.inspect} #{tags.inspect} version=#{@version.inspect}>"
+  end
+end