Not sure what you've tried, but here are a few more options with the Java version:
Try ProGuard, which can remove classes that aren't being used from your fat JAR. Sometimes you'll have to tweak the configuration to keep classes that it doesn't realize are being used, though (due to reflection use or whatever).
Try GraalVM, which can compile the entire thing to a native binary without a dependency on a JVM, even. I believe this will mean a separate build for each platform you want to support, though.
Not sure if these will lower the size of the download, but they're worth a try.
Try ProGuard, which can remove classes that aren't being used from your fat JAR. Sometimes you'll have to tweak the configuration to keep classes that it doesn't realize are being used, though (due to reflection use or whatever).
Try GraalVM, which can compile the entire thing to a native binary without a dependency on a JVM, even. I believe this will mean a separate build for each platform you want to support, though.
Not sure if these will lower the size of the download, but they're worth a try.