diff --git a/src/main/starlark/builtins_bzl/bazel/exports.bzl b/src/main/starlark/builtins_bzl/bazel/exports.bzl
index 3d5df8f..88553bb 100644
--- a/src/main/starlark/builtins_bzl/bazel/exports.bzl
+++ b/src/main/starlark/builtins_bzl/bazel/exports.bzl
@@ -14,6 +14,12 @@
 
 """Exported builtins symbols that are specific to OSS Bazel."""
 
+load("@_builtins//:common/java/java_library.bzl", "java_library")
+load("@_builtins//:common/java/java_plugin.bzl", "java_plugin")
+
 exported_toplevels = {}
-exported_rules = {}
+exported_rules = {
+    "+java_library": java_library,
+    "+java_plugin": java_plugin,
+}
 exported_to_java = {}
diff --git a/src/main/starlark/builtins_bzl/common/exports.bzl b/src/main/starlark/builtins_bzl/common/exports.bzl
index 19d4a24..71d93c0 100644
--- a/src/main/starlark/builtins_bzl/common/exports.bzl
+++ b/src/main/starlark/builtins_bzl/common/exports.bzl
@@ -17,8 +17,6 @@
 load("@_builtins//:common/cc/cc_import.bzl", "cc_import")
 load("@_builtins//:common/cc/cc_binary.bzl", "cc_binary")
 load("@_builtins//:common/cc/cc_test.bzl", "cc_test")
-load("@_builtins//:common/java/java_library_macro.bzl", "java_library")
-load("@_builtins//:common/java/java_plugin.bzl", "java_plugin")
 load("@_builtins//:common/cc/experimental_cc_shared_library.bzl", "cc_shared_library", "cc_shared_library_permissions")
 load("@_builtins//:common/objc/objc_import.bzl", "objc_import")
 load("@_builtins//:common/objc/objc_library.bzl", "objc_library")
@@ -36,8 +34,6 @@
 }
 exported_rules = {
     "+cc_import": cc_import,
-    "+java_library": java_library,
-    "+java_plugin": java_plugin,
     "-java_lite_proto_library": java_lite_proto_library,
     "objc_import": objc_import,
     "objc_library": objc_library,
diff --git a/src/main/starlark/builtins_bzl/common/java/java_library.bzl b/src/main/starlark/builtins_bzl/common/java/java_library.bzl
index ec538a0..fc9a223 100644
--- a/src/main/starlark/builtins_bzl/common/java/java_library.bzl
+++ b/src/main/starlark/builtins_bzl/common/java/java_library.bzl
@@ -25,7 +25,7 @@
 JavaPluginInfo = _builtins.toplevel.JavaPluginInfo
 CcInfo = _builtins.toplevel.CcInfo
 
-def java_library_rule(
+def bazel_java_library_rule(
         ctx,
         srcs = [],
         deps = [],
@@ -62,15 +62,10 @@
     if not srcs and deps:
         fail("deps not allowed without srcs; move to runtime_deps?")
 
-    semantics.check_rule(ctx)
-    semantics.check_dependency_rule_kinds(ctx, "java_library")
-
-    extra_resources = semantics.preprocess(ctx)
-
     base_info = JAVA_COMMON_DEP.call(
         ctx,
         srcs = srcs,
-        resources = resources + extra_resources,
+        resources = resources,
         plugins = plugins,
         deps = deps,
         runtime_deps = runtime_deps,
@@ -88,8 +83,6 @@
     base_info.output_groups["_hidden_top_level_INTERNAL_"] = proguard_specs_provider.specs
     base_info.extra_providers["ProguardSpecProvider"] = proguard_specs_provider
 
-    java_info = semantics.postprocess(ctx, base_info)
-
     default_info = construct_defaultinfo(
         ctx,
         base_info.files_to_build,
@@ -101,13 +94,13 @@
 
     return dict({
         "DefaultInfo": default_info,
-        "JavaInfo": java_info,
+        "JavaInfo": base_info.java_info,
         "InstrumentedFilesInfo": base_info.instrumented_files_info,
         "OutputGroupInfo": OutputGroupInfo(**base_info.output_groups),
     }, **base_info.extra_providers)
 
 def _proxy(ctx):
-    return java_library_rule(
+    return bazel_java_library_rule(
         ctx,
         srcs = ctx.files.srcs,
         deps = ctx.attr.deps,
@@ -129,7 +122,7 @@
         },
         **semantics.EXTRA_ATTRIBUTES
     ),
-    deps = [JAVA_COMMON_DEP, VALIDATE_PROGUARD_SPECS] + semantics.EXTRA_DEPS,
+    deps = [JAVA_COMMON_DEP, VALIDATE_PROGUARD_SPECS],
     provides = [JavaInfo],
     outputs = {
         "classjar": "lib%{name}.jar",
diff --git a/src/main/starlark/builtins_bzl/common/java/java_library_macro.bzl b/src/main/starlark/builtins_bzl/common/java/java_library_macro.bzl
deleted file mode 100644
index 0251848..0000000
--- a/src/main/starlark/builtins_bzl/common/java/java_library_macro.bzl
+++ /dev/null
@@ -1,27 +0,0 @@
-# Copyright 2021 The Bazel Authors. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#    http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-"""
-Definition of java_library macro (handles implicit outputs).
-"""
-
-load(":common/java/java_semantics.bzl", "semantics")
-load(":common/java/java_library.bzl", _java_library = "java_library")
-
-filegroup = _builtins.toplevel.native.filegroup
-
-def java_library(name, **kwargs):
-    semantics.macro_preprocess(kwargs)
-
-    _java_library(name = name, **kwargs)
diff --git a/src/main/starlark/builtins_bzl/common/java/java_plugin.bzl b/src/main/starlark/builtins_bzl/common/java/java_plugin.bzl
index 71b45a3..fb76975 100644
--- a/src/main/starlark/builtins_bzl/common/java/java_plugin.bzl
+++ b/src/main/starlark/builtins_bzl/common/java/java_plugin.bzl
@@ -23,7 +23,7 @@
 
 JavaPluginInfo = _builtins.toplevel.JavaPluginInfo
 
-def java_plugin_rule(
+def bazel_java_plugin_rule(
         ctx,
         srcs = [],
         data = [],
@@ -57,15 +57,10 @@
       (list[provider]) A list containing DefaultInfo, JavaInfo,
         InstrumentedFilesInfo, OutputGroupsInfo, ProguardSpecProvider providers.
     """
-    semantics.check_rule(ctx)
-    semantics.check_dependency_rule_kinds(ctx, "java_plugin")
-
-    extra_resources = semantics.preprocess(ctx)
-
     base_info = JAVA_COMMON_DEP.call(
         ctx,
         srcs = srcs,
-        resources = resources + extra_resources,
+        resources = resources,
         plugins = plugins,
         deps = deps,
         javacopts = javacopts,
@@ -100,7 +95,7 @@
     }, **base_info.extra_providers)
 
 def _proxy(ctx):
-    return java_plugin_rule(
+    return bazel_java_plugin_rule(
         ctx,
         srcs = ctx.files.srcs,
         data = ctx.files.data,
@@ -128,7 +123,7 @@
     deps = [
         JAVA_COMMON_DEP,
         VALIDATE_PROGUARD_SPECS,
-    ] + semantics.EXTRA_PLUGIN_DEPS,
+    ],
     provides = [JavaPluginInfo],
     outputs = {
         "classjar": "lib%{name}.jar",
diff --git a/src/main/starlark/builtins_bzl/common/java/java_semantics.bzl b/src/main/starlark/builtins_bzl/common/java/java_semantics.bzl
index f93ca7d..108f6b7 100644
--- a/src/main/starlark/builtins_bzl/common/java/java_semantics.bzl
+++ b/src/main/starlark/builtins_bzl/common/java/java_semantics.bzl
@@ -20,18 +20,6 @@
 JavaPluginInfo = _builtins.toplevel.JavaPluginInfo
 JavaInfo = _builtins.toplevel.JavaInfo
 
-def _macro_preprocess(kwargs):
-    pass
-
-def _check_rule(ctx):
-    pass
-
-def _check_dependency_rule_kinds(ctx, rule_class = ""):
-    pass
-
-def _preprocess(ctx):
-    return []
-
 def _postprocess(ctx, base_info):
     return base_info.java_info
 
@@ -62,8 +50,6 @@
     EXTRA_PLUGIN_ATTRIBUTES = {
         "resource_strip_prefix": attr.string(),
     },
-    EXTRA_DEPS = [],
-    EXTRA_PLUGIN_DEPS = [],
     ALLOWED_RULES_IN_DEPS = [
         "cc_binary",  # NB: linkshared=1
         "cc_library",
@@ -79,11 +65,6 @@
     ],
     ALLOWED_RULES_IN_DEPS_WITH_WARNING = [],
     LINT_PROGRESS_MESSAGE = "Running Android Lint for: %{label}",
-    macro_preprocess = _macro_preprocess,
-    check_rule = _check_rule,
-    check_dependency_rule_kinds = _check_dependency_rule_kinds,
-    preprocess = _preprocess,
-    postprocess = _postprocess,
     postprocess_plugin = _postprocess_plugin,
     check_proto_registry_collision = _check_proto_registry_collision,
     get_coverage_runner = _get_coverage_runner,
