Java compatibility¶
Gobb inventories every Java class exposed by Babashka 1.12.218. Demand is measured from references in the pinned BB source, tests, and examples. A class name in this report is not a claim that a JVM exists: supported classes are portable Glojure, gojava, or Go-host adapters.
Disposition¶
| State | Classes |
|---|---|
| intentional-difference | 23 |
| partial | 1 |
| planned | 524 |
| supported | 35 |
Implementation ownership¶
| Owner | Classes | Responsibility |
|---|---|---|
explicit-limitation |
23 | JVM internals, generated JVM classes, or architecture-specific behavior Gobb will not emulate |
glojure |
248 | Clojure/JVM language types and the reusable host-class bridge |
go-adapter |
260 | Operating-system or target-host behavior implemented with Go adapters |
gojava |
52 | Portable Java API semantics implemented as focused Go packages |
Core wave¶
The first wave covers java.lang, java.io, and java.nio.file. Supported entries below have constructor, method, field, or instance evidence in test/java-compat and the compiled target probe.
| Class | Owner | State | Demand |
|---|---|---|---|
java.io.BufferedInputStream |
go-adapter |
supported | 1 |
java.io.BufferedOutputStream |
go-adapter |
supported | 1 |
java.io.BufferedReader |
go-adapter |
planned | 4 |
java.io.BufferedWriter |
go-adapter |
planned | 3 |
java.io.ByteArrayInputStream |
go-adapter |
supported | 5 |
java.io.ByteArrayOutputStream |
go-adapter |
supported | 4 |
java.io.Closeable |
go-adapter |
planned | 14 |
java.io.Console |
go-adapter |
planned | 3 |
java.io.DataInput |
go-adapter |
planned | 2 |
java.io.DataInputStream |
go-adapter |
planned | 1 |
java.io.DataOutput |
go-adapter |
planned | 2 |
java.io.DataOutputStream |
go-adapter |
planned | 1 |
java.io.EOFException |
go-adapter |
planned | 3 |
java.io.File |
go-adapter |
supported | 122 |
java.io.FileFilter |
go-adapter |
planned | 2 |
java.io.FileInputStream |
go-adapter |
supported | 1 |
java.io.FileNotFoundException |
go-adapter |
planned | 3 |
java.io.FileOutputStream |
go-adapter |
supported | 1 |
java.io.FileReader |
go-adapter |
planned | 3 |
java.io.FileWriter |
go-adapter |
planned | 1 |
java.io.FilenameFilter |
go-adapter |
planned | 3 |
java.io.Flushable |
go-adapter |
planned | 1 |
java.io.IOException |
go-adapter |
planned | 1 |
java.io.InputStream |
go-adapter |
supported | 56 |
java.io.InputStreamReader |
go-adapter |
planned | 5 |
java.io.LineNumberReader |
go-adapter |
planned | 2 |
java.io.OutputStream |
go-adapter |
supported | 39 |
java.io.OutputStreamWriter |
go-adapter |
planned | 3 |
java.io.PipedInputStream |
go-adapter |
planned | 10 |
java.io.PipedOutputStream |
go-adapter |
planned | 8 |
java.io.PrintStream |
go-adapter |
planned | 1 |
java.io.PrintWriter |
go-adapter |
planned | 7 |
java.io.PushbackInputStream |
go-adapter |
planned | 6 |
java.io.PushbackReader |
go-adapter |
planned | 18 |
java.io.RandomAccessFile |
go-adapter |
planned | 5 |
java.io.Reader |
go-adapter |
supported | 97 |
java.io.SequenceInputStream |
go-adapter |
planned | 1 |
java.io.StringReader |
go-adapter |
supported | 9 |
java.io.StringWriter |
go-adapter |
supported | 25 |
java.io.Writer |
go-adapter |
supported | 47 |
java.lang.AbstractMethodError |
glojure |
planned | 3 |
java.lang.Appendable |
glojure |
planned | 3 |
java.lang.ArithmeticException |
glojure |
planned | 8 |
java.lang.AssertionError |
glojure |
planned | 3 |
java.lang.AutoCloseable |
glojure |
planned | 1 |
java.lang.Boolean |
glojure |
supported | 3 |
java.lang.Byte |
glojure |
planned | 3 |
java.lang.CharSequence |
glojure |
planned | 6 |
java.lang.Character |
glojure |
supported | 11 |
java.lang.Character$UnicodeBlock |
glojure |
planned | 1 |
java.lang.Class |
glojure |
planned | 54 |
java.lang.ClassCastException |
glojure |
planned | 7 |
java.lang.ClassLoader |
glojure |
planned | 26 |
java.lang.ClassNotFoundException |
glojure |
planned | 3 |
java.lang.Comparable |
glojure |
planned | 5 |
java.lang.Double |
glojure |
supported | 6 |
java.lang.Error |
glojure |
planned | 43 |
java.lang.Exception |
glojure |
supported | 233 |
java.lang.ExceptionInInitializerError |
glojure |
planned | 3 |
java.lang.Float |
glojure |
planned | 3 |
java.lang.IllegalArgumentException |
glojure |
supported | 11 |
java.lang.IllegalStateException |
glojure |
supported | 7 |
java.lang.IndexOutOfBoundsException |
glojure |
planned | 3 |
java.lang.Integer |
glojure |
supported | 29 |
java.lang.InterruptedException |
glojure |
planned | 3 |
java.lang.Iterable |
glojure |
planned | 31 |
java.lang.LinkageError |
glojure |
planned | 3 |
java.lang.Long |
glojure |
supported | 5 |
java.lang.Math |
glojure |
supported | 5 |
java.lang.NoSuchFieldException |
glojure |
planned | 1 |
java.lang.NullPointerException |
glojure |
planned | 6 |
java.lang.Number |
glojure |
planned | 8 |
java.lang.NumberFormatException |
glojure |
planned | 3 |
java.lang.Object |
glojure |
planned | 42 |
java.lang.Package |
glojure |
planned | 1 |
java.lang.Process |
glojure |
planned | 23 |
java.lang.ProcessBuilder |
glojure |
planned | 18 |
java.lang.ProcessBuilder$Redirect |
glojure |
planned | 7 |
java.lang.ProcessHandle |
glojure |
planned | 15 |
java.lang.ProcessHandle$Info |
glojure |
planned | 3 |
java.lang.Runnable |
glojure |
planned | 6 |
java.lang.Runtime |
glojure |
planned | 12 |
java.lang.RuntimeException |
glojure |
supported | 4 |
java.lang.SecurityException |
glojure |
planned | 3 |
java.lang.Short |
glojure |
planned | 3 |
java.lang.StackOverflowError |
glojure |
planned | 3 |
java.lang.StackTraceElement |
glojure |
planned | 8 |
java.lang.String |
glojure |
supported | 141 |
java.lang.StringBuilder |
glojure |
supported | 14 |
java.lang.System |
glojure |
supported | 146 |
java.lang.Thread |
glojure |
partial | 76 |
java.lang.Thread$Builder |
glojure |
planned | 4 |
java.lang.Thread$Builder$OfPlatform |
glojure |
planned | 2 |
java.lang.Thread$UncaughtExceptionHandler |
glojure |
planned | 3 |
java.lang.ThreadDeath |
glojure |
planned | 3 |
java.lang.ThreadLocal |
glojure |
planned | 6 |
java.lang.Throwable |
glojure |
supported | 44 |
java.lang.UnsupportedOperationException |
glojure |
supported | 4 |
java.lang.VirtualMachineError |
glojure |
planned | 3 |
java.lang.ref.Cleaner |
glojure |
planned | 2 |
java.lang.ref.ReferenceQueue |
glojure |
planned | 1 |
java.lang.ref.SoftReference |
glojure |
planned | 1 |
java.lang.ref.WeakReference |
glojure |
planned | 2 |
java.lang.reflect.AccessibleObject |
glojure |
planned | 1 |
java.lang.reflect.Array |
glojure |
planned | 8 |
java.lang.reflect.Constructor |
glojure |
planned | 4 |
java.lang.reflect.Executable |
glojure |
planned | 5 |
java.lang.reflect.Field |
glojure |
planned | 17 |
java.lang.reflect.Member |
glojure |
planned | 3 |
java.lang.reflect.Method |
glojure |
planned | 13 |
java.lang.reflect.Modifier |
glojure |
planned | 2 |
java.nio.file.CopyOption |
go-adapter |
planned | 6 |
java.nio.file.DirectoryNotEmptyException |
go-adapter |
planned | 1 |
java.nio.file.DirectoryStream$Filter |
go-adapter |
planned | 3 |
java.nio.file.FileAlreadyExistsException |
go-adapter |
planned | 2 |
java.nio.file.FileSystem |
go-adapter |
planned | 8 |
java.nio.file.FileSystemNotFoundException |
go-adapter |
planned | 3 |
java.nio.file.FileSystems |
go-adapter |
planned | 6 |
java.nio.file.FileVisitOption |
go-adapter |
planned | 1 |
java.nio.file.FileVisitResult |
go-adapter |
planned | 6 |
java.nio.file.FileVisitor |
go-adapter |
planned | 3 |
java.nio.file.Files |
go-adapter |
supported | 23 |
java.nio.file.LinkOption |
go-adapter |
planned | 13 |
java.nio.file.NoSuchFileException |
go-adapter |
planned | 1 |
java.nio.file.OpenOption |
go-adapter |
planned | 6 |
java.nio.file.Path |
go-adapter |
supported | 90 |
java.nio.file.PathMatcher |
go-adapter |
planned | 4 |
java.nio.file.Paths |
go-adapter |
supported | 1 |
java.nio.file.StandardCopyOption |
go-adapter |
planned | 2 |
java.nio.file.StandardOpenOption |
go-adapter |
planned | 5 |
java.nio.file.attribute.BasicFileAttributes |
go-adapter |
planned | 5 |
java.nio.file.attribute.FileAttribute |
go-adapter |
planned | 3 |
java.nio.file.attribute.FileTime |
go-adapter |
planned | 1 |
java.nio.file.attribute.GroupPrincipal |
go-adapter |
planned | 5 |
java.nio.file.attribute.PosixFileAttributes |
go-adapter |
planned | 7 |
java.nio.file.attribute.PosixFilePermission |
go-adapter |
planned | 2 |
java.nio.file.attribute.PosixFilePermissions |
go-adapter |
planned | 1 |
java.nio.file.attribute.UserDefinedFileAttributeView |
go-adapter |
planned | 6 |
java.nio.file.attribute.UserPrincipal |
go-adapter |
planned | 5 |
Highest-demand classes¶
| Rank | Class | Owner | State | References | Evidence |
|---|---|---|---|---|---|
| 1 | java.lang.Exception |
glojure |
supported | 233 | src/babashka/impl/classes.clj (77)test/babashka/error_test.clj (29)test/babashka/main_test.clj (18)src/babashka/main.clj (13)test/babashka/impl/repl_test.clj (10) |
| 2 | java.util.Map |
go-adapter |
planned | 150 | test/babashka/deftype_map_test.clj (91)src/babashka/impl/classes.clj (25)test/babashka/proxy_test.clj (9)src/babashka/impl/deftype.clj (8)src/babashka/impl/repl.clj (7) |
| 3 | java.lang.System |
glojure |
supported | 146 | src/babashka/impl/features.clj (24)src/babashka/main.clj (17)test/babashka/bb_edn_test.clj (12)test/babashka/main_test.clj (10)src/babashka/impl/classes.clj (6) |
| 4 | java.lang.String |
glojure |
supported | 141 | src/babashka/impl/repl.clj (23)src/babashka/impl/classes.clj (14)test/babashka/interop_test.clj (13)test/babashka/jline_test.clj (11)test/babashka/reify_test.clj (9) |
| 5 | java.util.stream.Stream |
go-adapter |
planned | 130 | src/babashka/impl/classes.clj (47)test/babashka/interop_test.clj (18)test/babashka/jline_test.clj (9)src/babashka/impl/proxy.clj (8)test/babashka/main_test.clj (7) |
| 6 | java.io.File |
go-adapter |
supported | 122 | test/babashka/main_test.clj (35)test/babashka/uberjar_test.clj (18)src/babashka/impl/classes.clj (17)test/babashka/reify_test.clj (9)src/babashka/impl/clojure/java/io.clj (6) |
| 7 | java.io.Reader |
go-adapter |
supported | 97 | src/babashka/impl/repl.clj (28)src/babashka/impl/classes.clj (23)test/babashka/jline_test.clj (9)test/babashka/main_test.clj (6)src/babashka/impl/clojure/core/server.clj (5) |
| 8 | java.nio.file.Path |
go-adapter |
supported | 90 | test/babashka/main_test.clj (32)test/babashka/interop_test.clj (9)src/babashka/impl/classes.clj (8)test/babashka/reify_test.clj (7)test/babashka/uberscript_test.clj (7) |
| 9 | java.lang.Thread |
glojure |
partial | 76 | src/babashka/impl/classes.clj (20)test/babashka/interop_test.clj (17)test/babashka/bb_edn_test.clj (7)test/babashka/impl/socket_repl_test.clj (6)src/babashka/main.clj (4) |
| 10 | java.io.InputStream |
go-adapter |
supported | 56 | src/babashka/impl/classes.clj (18)test/babashka/jline_test.clj (7)src/babashka/impl/proxy.clj (4)test/babashka/impl/nrepl_server_test.clj (4)test/babashka/main_test.clj (4) |
| 11 | java.lang.Class |
glojure |
planned | 54 | src/babashka/impl/classes.clj (28)test/babashka/error_test.clj (4)src/babashka/impl/clojure/java/javadoc.clj (3)src/babashka/impl/deftype.clj (3)src/babashka/main.clj (3) |
| 12 | java.net.http.HttpClient |
go-adapter |
planned | 52 | test/babashka/java_net_http_test.clj (48)src/babashka/impl/classes.clj (4) |
| 13 | java.io.Writer |
go-adapter |
supported | 47 | src/babashka/impl/pprint.clj (7)src/babashka/impl/classes.clj (6)src/babashka/impl/clojure/core/server.clj (6)test/babashka/impl/repl_test.clj (6)test/babashka/main_test.clj (6) |
| 14 | org.jline.reader.LineReader |
glojure |
planned | 45 | src/babashka/impl/repl.clj (26)test/babashka/jline_test.clj (8)src/babashka/impl/classes.clj (7)test/babashka/impl/repl_test.clj (4) |
| 15 | java.lang.Throwable |
glojure |
supported | 44 | src/babashka/impl/clojure/core/server.clj (6)test/babashka/java_net_http_test.clj (6)src/babashka/impl/classes.clj (5)src/babashka/impl/clojure/main.clj (4)src/babashka/impl/clojure/core.clj (3) |
| 16 | java.net.URI |
go-adapter |
planned | 44 | test/babashka/java_net_http_test.clj (36)src/babashka/impl/classes.clj (3)test/babashka/interop_test.clj (2)src/babashka/impl/clojure/java/javadoc.clj (1)src/babashka/impl/clojure/repl.clj (1) |
| 17 | java.net.http.HttpRequest |
go-adapter |
planned | 44 | test/babashka/java_net_http_test.clj (40)src/babashka/impl/classes.clj (4) |
| 18 | java.lang.Error |
glojure |
planned | 43 | src/babashka/impl/classes.clj (22)test/babashka/error_test.clj (10)src/babashka/impl/repl.clj (3)src/babashka/impl/tasks.clj (2)examples/htmx_todoapp.clj (1) |
| 19 | java.lang.Object |
glojure |
planned | 42 | test/babashka/reify_test.clj (11)src/babashka/impl/classes.clj (5)test/babashka/proxy_test.clj (5)src/babashka/impl/clojure/data.clj (4)src/babashka/impl/proxy.clj (3) |
| 20 | java.net.Socket |
go-adapter |
planned | 40 | src/babashka/impl/classes.clj (11)src/babashka/impl/clojure/core/server.clj (7)test/babashka/java_net_http_test.clj (4)test/babashka/scripts/socket_server.bb (3)test/babashka/test_utils.clj (3) |
| 21 | java.io.OutputStream |
go-adapter |
supported | 39 | src/babashka/impl/classes.clj (16)test/babashka/interop_test.clj (6)src/babashka/impl/proxy.clj (4)test/babashka/proxy_test.clj (3)test/babashka/impl/nrepl_server_test.clj (2) |
| 22 | java.net.http.HttpResponse |
go-adapter |
planned | 34 | test/babashka/java_net_http_test.clj (31)src/babashka/impl/classes.clj (3) |
| 23 | java.net.URL |
go-adapter |
planned | 32 | src/babashka/impl/classes.clj (9)src/babashka/impl/classpath.clj (8)src/babashka/impl/clojure/repl.clj (4)test/babashka/scripts/download_and_extract_zip.bb (3)src/babashka/main.clj (2) |
| 24 | sci.lang.Type |
glojure |
planned | 32 | test/babashka/error_test.clj (10)src/babashka/impl/classes.clj (7)test/babashka/java_net_http_test.clj (4)src/babashka/impl/repl.clj (3)src/babashka/impl/proxy.clj (2) |
| 25 | java.net.http.HttpResponse$BodyHandlers |
go-adapter |
planned | 32 | test/babashka/java_net_http_test.clj (31)src/babashka/impl/classes.clj (1) |
| 26 | java.lang.Iterable |
glojure |
planned | 31 | test/babashka/deftype_map_test.clj (23)src/babashka/impl/classes.clj (4)test/babashka/main_test.clj (3)src/babashka/impl/deftype.clj (1) |
| 27 | java.lang.Integer |
glojure |
supported | 29 | src/babashka/impl/classes.clj (7)examples/htmx_todoapp.clj (6)src/babashka/impl/clojure/spec/alpha.clj (3)examples/image-viewer.clj (2)src/babashka/impl/socket_repl.clj (2) |
| 28 | java.util.jar.Attributes |
go-adapter |
planned | 28 | src/babashka/impl/classes.clj (12)test/babashka/interop_test.clj (6)test/babashka/jline_test.clj (6)test/babashka/main_test.clj (3)src/babashka/impl/classpath.clj (1) |
| 29 | org.jline.terminal.Attributes |
glojure |
planned | 28 | src/babashka/impl/classes.clj (12)test/babashka/interop_test.clj (6)test/babashka/jline_test.clj (6)test/babashka/main_test.clj (3)src/babashka/impl/classpath.clj (1) |
| 30 | org.jsoup.nodes.Attributes |
glojure |
planned | 28 | src/babashka/impl/classes.clj (12)test/babashka/interop_test.clj (6)test/babashka/jline_test.clj (6)test/babashka/main_test.clj (3)src/babashka/impl/classpath.clj (1) |
| 31 | java.lang.ClassLoader |
glojure |
planned | 26 | src/babashka/impl/classes.clj (11)src/babashka/impl/classpath.clj (6)src/babashka/impl/clojure/repl.clj (3)src/babashka/main.clj (3)test/babashka/classpath_test.clj (2) |
| 32 | java.util.concurrent.Executor |
go-adapter |
planned | 26 | src/babashka/impl/classes.clj (14)test/babashka/interop_test.clj (5)src/babashka/impl/clojure/core/async.clj (4)src/babashka/impl/clojure/core.clj (1)src/babashka/main.clj (1) |
| 33 | java.io.StringWriter |
go-adapter |
supported | 25 | test/babashka/impl/repl_test.clj (6)test/babashka/main_test.clj (6)src/babashka/impl/pprint.clj (2)test/babashka/test_test.clj (2)test/babashka/test_utils.clj (2) |
| 34 | clojure.lang.MapEntry |
glojure |
planned | 24 | test/babashka/deftype_map_test.clj (12)src/babashka/impl/classes.clj (3)src/babashka/impl/proxy.clj (2)test/babashka/interop_test.clj (2)test/babashka/main_test.clj (2) |
| 35 | sci.lang.Var |
glojure |
planned | 24 | test/babashka/interop_test.clj (10)src/babashka/impl/clojure/test.clj (4)test/babashka/main_test.clj (4)src/babashka/impl/classes.clj (3)src/babashka/impl/clojure/repl.clj (1) |
| 36 | java.util.Set |
go-adapter |
planned | 24 | src/babashka/impl/classes.clj (15)src/babashka/main.clj (3)examples/notes.clj (2)src/babashka/impl/clojure/data.clj (2)src/babashka/impl/clojure/spec/alpha.clj (1) |
| 37 | org.jline.terminal.Terminal |
glojure |
planned | 24 | test/babashka/jline_test.clj (17)src/babashka/impl/classes.clj (7) |
| 38 | java.nio.file.Files |
go-adapter |
supported | 23 | test/babashka/interop_test.clj (8)test/babashka/main_test.clj (5)test/babashka/reify_test.clj (5)test/babashka/java_net_http_test.clj (2)examples/tree.clj (1) |
| 39 | java.lang.Process |
glojure |
planned | 23 | src/babashka/impl/classes.clj (14)test/babashka/main_test.clj (4)test/babashka/interop_test.clj (3)test/babashka/impl/nrepl_server_test.clj (1)test/babashka/scripts/kill_child_processes.bb (1) |
| 40 | clojure.lang.Associative |
glojure |
planned | 23 | test/babashka/deftype_map_test.clj (12)test/babashka/error_test.clj (9)src/babashka/impl/classes.clj (1)src/babashka/impl/deftype.clj (1) |
| 41 | org.jline.reader.Buffer |
glojure |
planned | 22 | src/babashka/impl/classes.clj (11)test/babashka/main_test.clj (7)src/babashka/impl/repl.clj (4) |
| 42 | clojure.lang.RT |
glojure |
planned | 20 | test/babashka/classpath_test.clj (4)test/babashka/interop_test.clj (4)src/babashka/impl/clojure/core.clj (3)src/babashka/impl/clojure/spec/alpha.clj (3)examples/http-server.clj (1) |
| 43 | org.jline.reader.ParsedLine |
glojure |
planned | 20 | src/babashka/impl/repl.clj (10)test/babashka/jline_test.clj (5)src/babashka/impl/classes.clj (3)src/babashka/impl/proxy.clj (2) |
| 44 | java.util.Collection |
go-adapter |
planned | 20 | test/babashka/deftype_map_test.clj (11)src/babashka/impl/classes.clj (7)test/babashka/interop_test.clj (2) |
| 45 | org.jline.utils.AttributedString |
glojure |
planned | 20 | test/babashka/jline_test.clj (10)src/babashka/impl/repl.clj (8)src/babashka/impl/classes.clj (2) |
| 46 | clojure.lang.Fn |
glojure |
planned | 19 | src/babashka/impl/classes.clj (5)src/babashka/impl/clojure/spec/alpha.clj (4)src/babashka/impl/clojure/spec/test/alpha.clj (4)test/babashka/deftype_map_test.clj (2)test/babashka/reify_test.clj (2) |
| 47 | java.io.PushbackReader |
go-adapter |
planned | 18 | src/babashka/impl/classes.clj (3)src/babashka/impl/clojure/core/server.clj (3)src/babashka/impl/clojure/core.clj (2)src/babashka/impl/clojure/main.clj (2)src/babashka/impl/clojure/tools/reader.clj (2) |
| 48 | java.lang.ProcessBuilder |
glojure |
planned | 18 | src/babashka/impl/classes.clj (5)examples/process_builder.clj (4)test/babashka/impl/nrepl_server_test.clj (4)test/babashka/main_test.clj (2)examples/vim.clj (1) |
| 49 | java.util.List |
go-adapter |
planned | 18 | src/babashka/impl/classes.clj (9)src/babashka/impl/clojure/data.clj (2)test/babashka/interop_test.clj (2)test/babashka/jline_test.clj (2)test/babashka/scripts/kill_child_processes.bb (2) |
| 50 | java.time.Instant |
gojava |
supported | 18 | test/babashka/interop_test.clj (9)test/babashka/cheshire_test.clj (5)test/babashka/reify_test.clj (2)examples/pst.clj (1)src/babashka/impl/classes.clj (1) |
The complete 583-class ledger is tracked in compat/java-classes.edn.
Regenerate it with: