exch-bms2 / beatoraja

Cross-platform rhythm game based on Java and libGDX.
GNU General Public License v3.0
642 stars 148 forks source link

minimum JRE #691

Open elferia opened 2 years ago

elferia commented 2 years ago

jdepsjlinkを使い、配布JREを最小限のものにするのはどうでしょうか。

$ jdeps --list-deps --ignore-missing-deps beatoraja.jar
   JDK removed internal API/com.apple.eio
   JDK removed internal API/sun.reflect
   java.base
   java.datatransfer
   java.desktop
   java.logging
   java.management
   java.scripting
   java.sql
   java.xml
   javafx.base
   javafx.controls
   javafx.fxml
   javafx.graphics
   jdk.unsupported

JDK removed internal APIとあるのは無視して、また https://stackoverflow.com/questions/55439599/sslhandshakeexception-with-jlink-created-runtime によりjdk.crypto.ecが抜けるのでこれを足して

jlink --compress=2 --output jre --add-modules java.base,java.datatransfer,java.desktop,java.logging,java.management,java.scripting,java.sql,java.xml,javafx.base,javafx.controls,javafx.fxml,javafx.graphics,jdk.unsupported,jdk.crypto.ec

jreディレクトリに成果物ができます。

手元の環境では、オリジナルが208MBに対し、最小版が64MBとなりました。 自分で使っている限りでは特に問題は発生していません。

elferia commented 2 years ago

すみません、IR APIのようなサードパーティjarの依存性を考えると、安易に最小化できないですね。 とりあえずminirを含めるとこうなりました。

   JDK removed internal API/com.apple.eio
   JDK removed internal API/sun.reflect
   java.base/sun.security.util
   java.base/sun.security.x509
   java.datatransfer
   java.desktop
   java.logging
   java.management
   java.naming
   java.scripting
   java.security.jgss
   java.sql
   java.xml
   javafx.base
   javafx.controls
   javafx.fxml
   javafx.graphics
   jdk.unsupported