Can I distribute a JDK with my application?

2019-04-30 06:12发布

问题:

I am working on an application called Enchanting. The application, based on Scratch, emits Java source code and compiles it for uploading onto LEGO Mindstorms NXT Robots.

While the application is very early, users have a hard time installing it.

Right now Windows users have to:

  • download and install a Java Developer Kit
  • download and install LeJOS (a java library for the NXT)
  • possibly tweak environment variables
  • then they can download, install, and run Enchanting itself

If I could provide an installer that would include the JDK, and LeJOS, I could figure out the environment variables at run time, and the process becomes:

  • Download, install, and run Enchanting

Is there a way to redistribute a JDK?

(Incidentally, Processing (a simplified text-based programming environment) seems to offer a version that comes with the JDK, so it appears that there is a legitimate way to do so).

Addendum: I would like a Windows user who does not have java installed to be able to run a single .exe file to install the JDK, LeJOS, and Enchanting.

回答1:

The information regarding redistribution is here for Java 10 JDK and here for Java 8 JDK. Currently Java 8's is substantially more detailed than Java 10's.

and you can use PackJacket, to package all the files you need and create an installer.



回答2:

Assuming you satisfy all the legal terms required to distribute stuff, you can use izpack to install all the prerequisites, including a JDK/JVM and configuration of environment variables.



回答3:

Quite a number of IBM Eclipse based tools have JDKs with them.



回答4:

Or you could just emit bytecode directly. You could bundle a much smaller (than the JDK) JVM dynamic language then use it to compile to bytecode or use libraries made for that purpose.

(I got the following from the Projects using Kawa page)

App Inventor for Android uses Kawa to translate its visual blocks language.

...The Nice compiler (nicec) uses Kawa's gnu.expr and gnu.bytecode packages to generate Java bytecode. ...

It's this last one is the one that uses the Kawa language framework to generate bytecode.

Don't forget about Groovy, Jython, Clojure, and Ruby. Interesting fact about Groovy, the interpreter can compile Java code since Groovy is (more or less) a superset of Java.