Use `@bazel_features` for rules_java compatibility proxy

The previous check would have eventually broken with Bazel 10.

PiperOrigin-RevId: 805798844
Change-Id: I4ea5d594f0e370d7d3b7568d54626944fe8f1923
diff --git a/WORKSPACE b/WORKSPACE
index acd7cae..475e9ef 100644
--- a/WORKSPACE
+++ b/WORKSPACE
@@ -37,14 +37,21 @@
     ],
 )
 
-load("//java:rules_java_deps.bzl", "rules_java_dependencies")
-
-rules_java_dependencies()
+http_archive(
+    name = "bazel_features",
+    sha256 = "a660027f5a87f13224ab54b8dc6e191693c554f2692fcca46e8e29ee7dabc43b",
+    strip_prefix = "bazel_features-1.30.0",
+    url = "https://github.com/bazel-contrib/bazel_features/releases/download/v1.30.0/bazel_features-v1.30.0.tar.gz",
+)
 
 load("@bazel_features//:deps.bzl", "bazel_features_deps")
 
 bazel_features_deps()
 
+load("//java:rules_java_deps.bzl", "rules_java_dependencies")
+
+rules_java_dependencies()
+
 load("@com_google_protobuf//bazel/private:proto_bazel_features.bzl", "proto_bazel_features")  # buildifier: disable=bzl-visibility
 
 proto_bazel_features(name = "proto_bazel_features")
diff --git a/distro/relnotes.bzl b/distro/relnotes.bzl
index ce04d50..9d76230 100644
--- a/distro/relnotes.bzl
+++ b/distro/relnotes.bzl
@@ -38,12 +38,19 @@
     sha256 = "$$sha",
 )
 
-load("@rules_java//java:rules_java_deps.bzl", "rules_java_dependencies")
-rules_java_dependencies()
+http_archive(
+    name = "bazel_features",
+    sha256 = "a660027f5a87f13224ab54b8dc6e191693c554f2692fcca46e8e29ee7dabc43b",
+    strip_prefix = "bazel_features-1.30.0",
+    url = "https://github.com/bazel-contrib/bazel_features/releases/download/v1.30.0/bazel_features-v1.30.0.tar.gz",
+)
 
 load("@bazel_features//:deps.bzl", "bazel_features_deps")
 bazel_features_deps()
 
+load("@rules_java//java:rules_java_deps.bzl", "rules_java_dependencies")
+rules_java_dependencies()
+
 # note that the following line is what is minimally required from protobuf for the java rules
 # consider using the protobuf_deps() public API from @com_google_protobuf//:protobuf_deps.bzl
 load("@com_google_protobuf//bazel/private:proto_bazel_features.bzl", "proto_bazel_features")  # buildifier: disable=bzl-visibility
diff --git a/java/rules_java_deps.bzl b/java/rules_java_deps.bzl
index b32edd2..1eb2849 100644
--- a/java/rules_java_deps.bzl
+++ b/java/rules_java_deps.bzl
@@ -1,12 +1,11 @@
 """Module extension for compatibility with previous Bazel versions"""
 
+load("@bazel_features//private:util.bzl", _bazel_version_ge = "ge")
 load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
 load("@bazel_tools//tools/build_defs/repo:utils.bzl", "maybe")
 
 def _compatibility_proxy_repo_impl(rctx):
-    # TODO: use @bazel_features
-    bazel = native.bazel_version
-    if not bazel or bazel >= "8":
+    if _bazel_version_ge("8.0.0"):
         rctx.file(
             "BUILD.bazel",
             """
@@ -210,15 +209,6 @@
         ],
     )
 
-def bazel_features_repo():
-    maybe(
-        http_archive,
-        name = "bazel_features",
-        sha256 = "a660027f5a87f13224ab54b8dc6e191693c554f2692fcca46e8e29ee7dabc43b",
-        strip_prefix = "bazel_features-1.30.0",
-        url = "https://github.com/bazel-contrib/bazel_features/releases/download/v1.30.0/bazel_features-v1.30.0.tar.gz",
-    )
-
 def rules_java_dependencies():
     """An utility method to load non-toolchain dependencies of rules_java.
 
@@ -232,4 +222,3 @@
     zlib_repo()
     absl_repo()
     rules_license_repo()
-    bazel_features_repo()
diff --git a/test/repo/WORKSPACE b/test/repo/WORKSPACE
index a6055e2..32cadb5 100644
--- a/test/repo/WORKSPACE
+++ b/test/repo/WORKSPACE
@@ -5,14 +5,23 @@
     path = "../../",
 )
 
-load("@rules_java//java:rules_java_deps.bzl", "rules_java_dependencies")
+load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
 
-rules_java_dependencies()
+http_archive(
+    name = "bazel_features",
+    sha256 = "a660027f5a87f13224ab54b8dc6e191693c554f2692fcca46e8e29ee7dabc43b",
+    strip_prefix = "bazel_features-1.30.0",
+    url = "https://github.com/bazel-contrib/bazel_features/releases/download/v1.30.0/bazel_features-v1.30.0.tar.gz",
+)
 
 load("@bazel_features//:deps.bzl", "bazel_features_deps")
 
 bazel_features_deps()
 
+load("@rules_java//java:rules_java_deps.bzl", "rules_java_dependencies")
+
+rules_java_dependencies()
+
 load("@com_google_protobuf//bazel/private:proto_bazel_features.bzl", "proto_bazel_features")  # buildifier: disable=bzl-visibility
 
 proto_bazel_features(name = "proto_bazel_features")
@@ -33,8 +42,6 @@
     ],
 )
 
-load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
-
 http_archive(
     name = "rules_shell",
     sha256 = "3e114424a5c7e4fd43e0133cc6ecdfe54e45ae8affa14fadd839f29901424043",