IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Discussion :

Comment lancer une application Java autonome, c'est à dire avec une JVM intégrée ?


Sujet :

Windows

  1. #1
    Membre régulier
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Novembre 2016
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Novembre 2016
    Messages : 8
    Par défaut Comment lancer une application Java autonome, c'est à dire avec une JVM intégrée ?
    Bonjour,

    J'ai réalisé un jeu vidéo de 25 000 lignes de code en JavaFX (son nom Hyper Galactica). Je veux le faire distribuer par Steam. Mais Steam n'accepte pas, a priori, de lancer un fichier de commandes .bat qui installe (avec un programme d'installation ou "installer") un JRE (JVM) spécifique, puis lance mon application dessus.

    Donc, pour contourner ce problème, je voudrais créer un "emballage d'application autonome" et fournir un fichier "simple" (.jar ou .exe) à Steam, ce fichier comprenant le JRE et mon application.

    Q1: Je développe sous Eclipse et je n'ai pas vu de moyen de générer, avec cet IDE, un package complet incluant le JRE et mon application. Mais peut-être est-ce possible. Dans ce cas, comment?

    Q2: Connaitriez-vous un moyen simple de générer une application autonome comportant le JRE et le jeu à lancer? J'ai bien vu javafxpackager ou innosetup, mais çà me parait bien compliqué. Avez-vous d'autres idées ou pouvez-vous m'éclairez dans l'utilisation d'un de ces deux outils pour effectuer cette génération?

    Merci d'avance
    Pascal


    Pour information, le fichier .bat que Steam rejette (et qui est pourtant basique) est:
    @echo off

    REM The game only works on 64 bits
    reg Query "HKLM\Hardware\Description\System\CentralProcessor\0" | find /i "x86" > NUL && set OS=32BIT || set OS=64BIT
    echo %OS%
    if %OS%==32BIT echo Windows is a 32bits operating system. Hyper Galactica only works on Windows 64 bits
    if %OS%==32BIT goto fin
    if %OS%==64BIT echo Hyper Galactica for Windows 64bits.

    REM JRE installer, if it is necessary
    if exist jre1.8.0 (echo jre already installed in the jre1.8.0 folder)
    if not exist jre1.8.0 (
    echo installer command for 1.8.0.191 jre
    jre-8u191-windows-x64 /s INSTALLDIR=%~dp0jre1.8.0
    )

    REM launch rhe game
    start %~dp0jre1.8.0\bin\java.exe -classpath %~dp0 -jar hg.jar

    :fin

  2. #2
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    18 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 18 160
    Par défaut
    Voir peut-être du coté de InnoSetup.
    Le principe : Tu vérifie la présence de la JVM, et tu l'installe si besoin.

    Tu installes un icône appelant ton .jar via la JVM.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  3. #3
    Membre Expert
    Avatar de Mickael_Istria
    Homme Profil pro
    Développeur Expert Eclipse IDE/RCP, pour Red Hat
    Inscrit en
    Juillet 2008
    Messages
    1 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Expert Eclipse IDE/RCP, pour Red Hat
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 478
    Par défaut
    Questions et commentaires preliminaires:
    0. Est-ce que tu es sur que Steam accepte un `.jar` comme launcher? Si oui, alors ca veut dire qu'il comprend un peu le Java, suffisamment pour peut-etre automatiquement resource ton probleme. Si non, alors il te faut un .exe; et donc c'est Q2 et rien d'autre.
    0.5: Puisque tu codes en Java, ton jeu est surement multi-platforme, donc tu devrais eviter de te focaliser sur Windows et les .bat et chercher quelque chose de multi-platforme.

    Q1: Embarquer un JRE dans l'appli, ce n'est malheureusement pas un cas bien outille par les IDEs. Il faut passer par des outils externes. Mais c'est un cas interessant, et tu peux toujours ouvrir de bugs aux IDEs pour leur demander de mieux supporter ca; car au final ca doit etre assez commun.
    Q1.5: Certains frameworks (generalement des frameworks RCP) fournissent nativement cette capacite d'inclure un JRE; mais je ne crois pas que JavaFX le fasse.
    Q2. Plutot qu'un installeur (qui rajoute une etape d'installation), je te conseille d'utiliser un wrapper type launch4j. Il y a moyen de mettre le JRE dans l'executable qu'il cree et dans ce cas ca fera exactement ce que tu veux.

  4. #4
    Membre régulier
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Novembre 2016
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Novembre 2016
    Messages : 8
    Par défaut c'est bien Q2 que je dois résoudre - Ah, Steam et la sécurité ...!
    Citation Envoyé par Mickael_Istria Voir le message
    Questions et commentaires preliminaires:
    0. Est-ce que tu es sur que Steam accepte un `.jar` comme launcher? Si oui, alors ca veut dire qu'il comprend un peu le Java, suffisamment pour peut-etre automatiquement resource ton probleme. Si non, alors il te faut un .exe; et donc c'est Q2 et rien d'autre.
    0.5: Puisque tu codes en Java, ton jeu est surement multi-platforme, donc tu devrais eviter de te focaliser sur Windows et les .bat et chercher quelque chose de multi-platforme.

    Q1: Embarquer un JRE dans l'appli, ce n'est malheureusement pas un cas bien outille par les IDEs. Il faut passer par des outils externes. Mais c'est un cas interessant, et tu peux toujours ouvrir de bugs aux IDEs pour leur demander de mieux supporter ca; car au final ca doit etre assez commun.
    Q1.5: Certains frameworks (generalement des frameworks RCP) fournissent nativement cette capacite d'inclure un JRE; mais je ne crois pas que JavaFX le fasse.
    Q2. Plutot qu'un installeur (qui rajoute une etape d'installation), je te conseille d'utiliser un wrapper type launch4j. Il y a moyen de mettre le JRE dans l'executable qu'il cree et dans ce cas ca fera exactement ce que tu veux.
    Merci pour ta réponse précise.

    C'était si simple de fournir à Steam le fichier .bat faisant l'install de la JVM (en cas d'inexistence sur le PC) puis de lancer l'application .... Steam veut certainement éviter les pbs de sécurité avec les batchs ...

    Je vais donc partir sur la solution Q2, comme tu l'indiques. Quelle est la différence entre launch4j et javapackager? Je cherche la facilité dans l'utilisation de l'outil me permettant de créer le "tout en 1", à savoir un exécutable qui lance la JVM que j'ai choisie puis mon application dessus.

  5. #5
    Membre Expert
    Avatar de Mickael_Istria
    Homme Profil pro
    Développeur Expert Eclipse IDE/RCP, pour Red Hat
    Inscrit en
    Juillet 2008
    Messages
    1 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Expert Eclipse IDE/RCP, pour Red Hat
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 478
    Par défaut
    Citation Envoyé par dutpas Voir le message
    Je vais donc partir sur la solution Q2, comme tu l'indiques. Quelle est la différence entre launch4j et javapackager? Je cherche la facilité dans l'utilisation de l'outil me permettant de créer le "tout en 1", à savoir un exécutable qui lance la JVM que j'ai choisie puis mon application dessus.
    Je n'ai pas d'experience avec javapackager.
    J'ai utilise launch4j une fois il y a longtemps pour le meme genre de choses, et j'en ai ete satisfait.

    javapackager, si on parle bien du meme, c'est quand meme un outil Oracle JDK, non open-source, et potentiellement bientot commercial; comme Oracle JDK lui-meme d'ailleurs. En gros, un jour ou l'autre, tu devras surement payer pour utiliser ca et embarquer une JVM Oracle dans ton produit.
    La solution c'est d'utiliser OpenJDK a la place d'Oracle JDK. Sauf qu'OpenJDK ne fournit pas javapackager il me semble; alors que launch4j lui marche avec n'importe que JVM.

  6. #6
    Membre régulier
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Novembre 2016
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Novembre 2016
    Messages : 8
    Par défaut merci pour ton éclairage
    Citation Envoyé par Mickael_Istria Voir le message
    Je n'ai pas d'experience avec javapackager.
    J'ai utilise launch4j une fois il y a longtemps pour le meme genre de choses, et j'en ai ete satisfait.

    javapackager, si on parle bien du meme, c'est quand meme un outil Oracle JDK, non open-source, et potentiellement bientot commercial; comme Oracle JDK lui-meme d'ailleurs. En gros, un jour ou l'autre, tu devras surement payer pour utiliser ca et embarquer une JVM Oracle dans ton produit.
    La solution c'est d'utiliser OpenJDK a la place d'Oracle JDK. Sauf qu'OpenJDK ne fournit pas javapackager il me semble; alors que launch4j lui marche avec n'importe que JVM.
    Merci pour tes réponses très précises. Maintenant, je n'ai plus qu'à retrousser les manches

    Bonne journée

Discussions similaires

  1. Réponses: 0
    Dernier message: 29/09/2011, 01h53
  2. Comment je peut lire un plan vectoriel avec une application java
    Par herguem dans le forum Interfaces Graphiques en Java
    Réponses: 3
    Dernier message: 02/11/2010, 17h34
  3. comment se connecter a oracle 10XE avec une application java
    Par BAMOUNE dans le forum Connexions aux bases de données
    Réponses: 0
    Dernier message: 21/02/2010, 09h00
  4. Comment ouvrir un fichier avec une application java ?
    Par chihaoui_med dans le forum Général Java
    Réponses: 3
    Dernier message: 05/11/2009, 13h58
  5. [Son] Faire des bruits avec une application java
    Par mammistegon dans le forum Multimédia
    Réponses: 6
    Dernier message: 22/01/2005, 17h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo