9
votes

Comment créer des fichiers binaires natifs pour votre application Java?

Je me demande comment emballer une application Java dans un binaire natif pour Windows, Linux et Mac OS X.

Je sais que Minecraft le fait, mais je ne peux pas comprendre comment. C'est ce que j'aimerais faire:

  • de NetBeans (de préférence) ou de l'éclipse, construisez automatiquement les trois fichiers binaires.
  • inclure des bibliothèques indigènes pour OpenGL et. tous.
  • obfusez mon code si possible.

    S'il y a un moyen d'imiter la fonctionnalité Minecraft Auto-Updater, ce serait totalement génial.

    Alors, y a-t-il des outils disponibles pour vous pour vous ou dois-je écrire une grosse gros volume de XML pour accomplir cela?


2 commentaires

Voulez-vous simplement envelopper votre .jar à l'intérieur d'un binaire, comme ce que launch4j fait ou voulez-vous un "compilateur AOT" comme excelsior jet Cela fait vraiment produit un binaire autonome et, par conséquent, n'a pas besoin d'un JRE pour courir plus? (BTW concernant l'obfuscation, j'utilise proguard et cela ne peut pas faire mal)


Vous pouvez utiliser ROBOVM mais cela ne fonctionnera que pour les applications Linux. Avec le sous-système Windows pour Linux, vous ne manqueriez que le support OSX.


5 Réponses :


1
votes

Jetez un coup d'œil à Plugin GCJBuilder pour Eclipse. Je ne sais pas si elle prend en charge la compilation croisée comme la commande compiler gcj compiler.


1 commentaires

C'est la seule réponse valide que j'ai trouvée. La question parle clairement de créer des fichiers binaires natifs et non d'une enveloppe d'invocation de la JVM.



0
votes

Si l'application. A une interface graphique et peut être distribuée à partir d'un site Web, regarde Java Web Démarrer . JWS est fourni par Oracle et fournit une mise à jour automatique entre autres caractéristiques.

Notez que JWS utilise des fichiers JAR, donc aucune conversion n'est nécessaire.


0 commentaires

6
votes

Pour faire un binaire natif pour Windows, vous utiliseriez un outil tel que Launch4J . Sur OSX, vous pouvez utiliser Jarbundler . Minecraft distribue simplement le fichier JAR pour Linux. Je ne suis pas au courant d'un emballeur binaire natif pour Linux.

Vous pouvez également compiler votre code Java via GCJ, mais ce n'est probablement pas ce que vous voulez, car il existe des limitations et une compatibilité les préoccupations. Les baunleurs natifs tels que Launch4j et Jarbundler enveloppent simplement votre fichier JAR et utilisent un vrai JRE pour l'exécuter.

En ce qui concerne l'intégration de Netbeans ou Eclipse, vous devrez probablement écrire votre propre fichier de construction de fourmis, d'autant plus que la solution varie d'une plate-forme à l'autre.


0 commentaires

0
votes

J'ai utilisé JSMooth pour cela dans le passé: http://jsmooth.sourceforge.net/ Comme mentionné précédemment, ce wrapper cherche simplement une vraie jre pour le faire fonctionner - il ne vient pas avec une jre groupée.


0 commentaires

3
votes

Si vous utilisez Java 9, vous pouvez aussi Utilisez Java 9 Modularisation & JLINK Pour expédier une application native de dépendance zéro .

Il y a aussi maven-jlink-plugin qui pourrait aider ici.


0 commentaires