diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/java/JavaCompilationInfoProviderApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/java/JavaCompilationInfoProviderApi.java
index e832d2f..3147b5b 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/java/JavaCompilationInfoProviderApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/java/JavaCompilationInfoProviderApi.java
@@ -33,6 +33,17 @@
   ImmutableList<String> getJavacOpts();
 
   @StarlarkMethod(
+      name = "javac_options_list",
+      structField = true,
+      doc =
+          "A list of options to java compiler. This exists temporarily for migration purposes. "
+              + "javac_options will return a depset in the future, and this method will be dropped "
+              + "once all usages have been updated to handle depsets.")
+  default ImmutableList<String> getJavacOptsList() {
+    return getJavacOpts();
+  }
+
+  @StarlarkMethod(
       name = "runtime_classpath",
       structField = true,
       doc = "Run-time classpath for this Java target.")
diff --git a/src/main/starlark/builtins_bzl/common/java/compile_action.bzl b/src/main/starlark/builtins_bzl/common/java/compile_action.bzl
index fdc29b5..1e26d64 100644
--- a/src/main/starlark/builtins_bzl/common/java/compile_action.bzl
+++ b/src/main/starlark/builtins_bzl/common/java/compile_action.bzl
@@ -159,7 +159,7 @@
         runfiles = [output_class_jar] if source_files or source_jars or resources else [],
         # TODO(ilist): collect compile_jars from JavaInfo in deps & exports
         compilation_classpath = java_info.compilation_info.compilation_classpath,
-        javac_options = java_info.compilation_info.javac_options,
+        javac_options = java_info.compilation_info.javac_options_list,
         plugins = _collect_plugins(deps, plugins),
     )
 
diff --git a/src/main/starlark/builtins_bzl/common/java/java_common_internal_for_builtins.bzl b/src/main/starlark/builtins_bzl/common/java/java_common_internal_for_builtins.bzl
index 5ad6ab1..1589264 100644
--- a/src/main/starlark/builtins_bzl/common/java/java_common_internal_for_builtins.bzl
+++ b/src/main/starlark/builtins_bzl/common/java/java_common_internal_for_builtins.bzl
@@ -314,6 +314,7 @@
 
     compilation_info = struct(
         javac_options = all_javac_opts_list,
+        javac_options_list = all_javac_opts_list,
         # needs to be flattened because the public API is a list
         boot_classpath = (bootclasspath.bootclasspath if bootclasspath else java_toolchain.bootclasspath).to_list(),
         # we only add compile time jars from deps, and not exports
diff --git a/src/main/starlark/builtins_bzl/common/java/java_info.bzl b/src/main/starlark/builtins_bzl/common/java/java_info.bzl
index d17736d..aef76c5 100644
--- a/src/main/starlark/builtins_bzl/common/java/java_info.bzl
+++ b/src/main/starlark/builtins_bzl/common/java/java_info.bzl
@@ -82,6 +82,10 @@
     fields = {
         "boot_classpath": "Boot classpath for this Java target.",
         "javac_options": "Options to the java compiler.",
+        "javac_options_list": """A list of options to java compiler. This exists
+            temporarily for migration purposes. javac_options will return a depset
+            in the future, and this method will be dropped once all usages have
+            been updated to handle depsets.""",
         "compilation_classpath": "Compilation classpath for this Java target.",
         "runtime_classpath": "Run-time classpath for this Java target.",
     },
@@ -92,6 +96,7 @@
     runtime_classpath = depset(),
     boot_classpath = None,
     javac_options = [],
+    javac_options_list = [],
 )
 
 def merge(
@@ -228,6 +233,7 @@
         compilation_info = _JavaCompilationInfo(
             boot_classpath = None,
             javac_options = [],
+            javac_options_list = [],
             compilation_classpath = java_info.transitive_compile_time_jars,
             runtime_classpath = java_info.transitive_runtime_jars,
         )
@@ -467,6 +473,7 @@
         result.update(
             compilation_info = _JavaCompilationInfo(
                 javac_options = _java_common_internal.intern_javac_opts(compilation_info.javac_options),
+                javac_options_list = _java_common_internal.intern_javac_opts(compilation_info.javac_options_list),
                 boot_classpath = compilation_info.boot_classpath,
                 compilation_classpath = compilation_info.compilation_classpath,
                 runtime_classpath = compilation_info.runtime_classpath,
diff --git a/src/test/java/com/google/devtools/build/lib/rules/java/JavaStarlarkApiTest.java b/src/test/java/com/google/devtools/build/lib/rules/java/JavaStarlarkApiTest.java
index 2cf1014..e16cbca 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/java/JavaStarlarkApiTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/java/JavaStarlarkApiTest.java
@@ -2166,7 +2166,7 @@
     scratch.file(
         "foo/BUILD",
         "load(':extension.bzl', 'my_rule')",
-        "java_library(name = 'my_java_lib_a', srcs = ['java/A.java'])",
+        "java_library(name = 'my_java_lib_a', srcs = ['java/A.java'], javacopts = ['opt1'])",
         "my_rule(name = 'my_starlark_rule', dep = ':my_java_lib_a')");
     assertNoEvents();
     ConfiguredTarget myRuleTarget = getConfiguredTarget("//foo:my_starlark_rule");
@@ -2182,6 +2182,35 @@
             prettyArtifactNames(
                 javaCompilationInfoProvider.getRuntimeClasspath().getSet(Artifact.class)))
         .containsExactly("foo/libmy_java_lib_a.jar");
+    assertThat(javaCompilationInfoProvider.getJavacOpts()).contains("opt1");
+    assertThat(javaCompilationInfoProvider.getJavacOptsList()).contains("opt1");
+  }
+
+  @Test
+  public void javaInfoStarlarkCompilationInfoJavacOpts() throws Exception {
+    scratch.file(
+        "foo/extension.bzl",
+        "result = provider()",
+        "def _impl(ctx):",
+        "  return [result(property = ctx.attr.dep[JavaInfo].compilation_info.javac_options_list)]",
+        "my_rule = rule(_impl, attrs = { 'dep' : attr.label() })");
+    scratch.file(
+        "foo/BUILD",
+        "load(':extension.bzl', 'my_rule')",
+        "java_library(name = 'my_java_lib_a', srcs = ['java/A.java'], javacopts = ['opt1',"
+            + " 'opt2'])",
+        "my_rule(name = 'my_starlark_rule', dep = ':my_java_lib_a')");
+    assertNoEvents();
+    ConfiguredTarget myRuleTarget = getConfiguredTarget("//foo:my_starlark_rule");
+
+    StructImpl info =
+        (StructImpl)
+            myRuleTarget.get(
+                new StarlarkProvider.Key(Label.parseCanonical("//foo:extension.bzl"), "result"));
+    Sequence<String> javacOptionsList =
+        Sequence.cast(info.getValue("property"), String.class, "javac_options_list");
+
+    assertThat(javacOptionsList).containsAtLeast("opt1", "opt2").inOrder();
   }
 
   /* Test inspired by {@link AbstractJavaLibraryConfiguredTargetTest#testNeverlink}.*/
