Avantages et inconvénients du packaging.
Résolu/Fermé
benoit_28
Messages postés
42
Date d'inscription
vendredi 20 mars 2020
Statut
Membre
Dernière intervention
11 juin 2023
-
10 déc. 2021 à 17:53
benoit_28 Messages postés 42 Date d'inscription vendredi 20 mars 2020 Statut Membre Dernière intervention 11 juin 2023 - 17 déc. 2021 à 19:42
benoit_28 Messages postés 42 Date d'inscription vendredi 20 mars 2020 Statut Membre Dernière intervention 11 juin 2023 - 17 déc. 2021 à 19:42
A voir également:
- Jpackage download
- Texte argumentatif sur les avantages et les inconvénients du téléphone portable - Forum Hotmail / Outlook.com
- Téléphone portable avantage ou inconvénient - Forum Mobile
- Conclusion sur les avantages et les inconvénients de l'internet ✓ - Forum Loisirs / Divertissements
- Avantages et inconvenients du telephone mobil - Forum Mobile
- Conclusion sur les avantages et les inconvénients de linternet ✓ - Forum Réseaux sociaux
2 réponses
KX
Messages postés
16755
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
12 février 2025
3 020
11 déc. 2021 à 09:09
11 déc. 2021 à 09:09
Bonjour,
Question 1. Est-ce que ce packaging dispense la personne, qui télécharge mon programme, d'avoir téléchargé au préalable le Java, dans sa bonne version de préférence
Oui, Java est embarqué dans le package, c'est même le but premier du packaging.
Question 2 Serait-il possible d'enlever des éléments inutiles dans ce runtime?
Dans ton cas en Java 8, non. Mais à partir de Java 9 c'est possible (rappel : la dernière version est Java 17), car la JVM est découpée en modules et les modules qui ne sont pas utilisés ne sont pas packagés.
Question 3. Est-il possible d'avoir le même runtime pour deux ou plusieurs programmes différents
Ce n'est pas impossible dans l'absolu, c'est ce que propose Java historiquement où on télécharge la JVM sur son poste une fois pour toute les applications à côté, mais la philosophie du packaging est à l'opposé, chaque application est unitaire et peut être utilisée indépendamment les unes des autres.
Question 4. Pourquoi les dimensions de mes fenêtres (de type Windows) apparaissent elles environ 10% plus grandes pour le mon_programme.exe (avec package) que pour le mon_programme.jar (sans)?
Je pense que le problème est dans le code. Pour avoir fait le HelloWorldSwing ensemble, il n'y avait pas ce problème.
Remarque : depuis Java 8 (en 2014), la librairie recommandée pour les applis desktop c'est Java FX, la technologie Swing n'est plus maintenue. Le packaging a été pensé initialement pour Java FX et les dernières évolutions des modules et des outils de packaging sont fait d'abord pour supporter Java FX, pas Swing.
En résumé : proposer un packaging d'une application Java FX en Java 17 serait bien plus léger que ton application Swing en Java 8.
Question 1. Est-ce que ce packaging dispense la personne, qui télécharge mon programme, d'avoir téléchargé au préalable le Java, dans sa bonne version de préférence
Oui, Java est embarqué dans le package, c'est même le but premier du packaging.
Question 2 Serait-il possible d'enlever des éléments inutiles dans ce runtime?
Dans ton cas en Java 8, non. Mais à partir de Java 9 c'est possible (rappel : la dernière version est Java 17), car la JVM est découpée en modules et les modules qui ne sont pas utilisés ne sont pas packagés.
Question 3. Est-il possible d'avoir le même runtime pour deux ou plusieurs programmes différents
Ce n'est pas impossible dans l'absolu, c'est ce que propose Java historiquement où on télécharge la JVM sur son poste une fois pour toute les applications à côté, mais la philosophie du packaging est à l'opposé, chaque application est unitaire et peut être utilisée indépendamment les unes des autres.
Question 4. Pourquoi les dimensions de mes fenêtres (de type Windows) apparaissent elles environ 10% plus grandes pour le mon_programme.exe (avec package) que pour le mon_programme.jar (sans)?
Je pense que le problème est dans le code. Pour avoir fait le HelloWorldSwing ensemble, il n'y avait pas ce problème.
Remarque : depuis Java 8 (en 2014), la librairie recommandée pour les applis desktop c'est Java FX, la technologie Swing n'est plus maintenue. Le packaging a été pensé initialement pour Java FX et les dernières évolutions des modules et des outils de packaging sont fait d'abord pour supporter Java FX, pas Swing.
En résumé : proposer un packaging d'une application Java FX en Java 17 serait bien plus léger que ton application Swing en Java 8.
benoit_28
Messages postés
42
Date d'inscription
vendredi 20 mars 2020
Statut
Membre
Dernière intervention
11 juin 2023
11 déc. 2021 à 10:17
11 déc. 2021 à 10:17
Merci, KX.
Je vais passer à Java 19,cela me parait en effet nécessaire.
Pour ce qui est de FX, est-ce que la syntaxe de production du package est la même que pour Swing. Autrement dit, peut on transformer ce que tu m'as enseigné:
C:\workspace\monProgramme\src\start\HelloWorldSwing.java
C:\workspace\monProgramme\src> javac start\HelloWorldSwing.java
C:\workspace\monProgramme\src> java start.HelloWorldSwing
C:\workspace\monProgramme> javapackager -makeall -appclass start.HelloWorldSwing -name monProgramme
C:\workspace\monProgramme\dist\bundles\monProgramme> monProgramme.exe
en
C:\workspace\monProgramme\src\start\FX.java
C:\workspace\monProgramme\src> javac start\FX.java
C:\workspace\monProgramme\src> java start.FX
C:\workspace\monProgramme> javapackager -makeall -appclass start.FX -name monProgramme
C:\workspace\monProgramme\dist\bundles\monProgramme> monProgramme.exe
et, en particulier, a-t-on le même résultat, avec les répertoires dist et bundles?
Je vais passer à Java 19,cela me parait en effet nécessaire.
Pour ce qui est de FX, est-ce que la syntaxe de production du package est la même que pour Swing. Autrement dit, peut on transformer ce que tu m'as enseigné:
C:\workspace\monProgramme\src\start\HelloWorldSwing.java
C:\workspace\monProgramme\src> javac start\HelloWorldSwing.java
C:\workspace\monProgramme\src> java start.HelloWorldSwing
C:\workspace\monProgramme> javapackager -makeall -appclass start.HelloWorldSwing -name monProgramme
C:\workspace\monProgramme\dist\bundles\monProgramme> monProgramme.exe
en
C:\workspace\monProgramme\src\start\FX.java
C:\workspace\monProgramme\src> javac start\FX.java
C:\workspace\monProgramme\src> java start.FX
C:\workspace\monProgramme> javapackager -makeall -appclass start.FX -name monProgramme
C:\workspace\monProgramme\dist\bundles\monProgramme> monProgramme.exe
et, en particulier, a-t-on le même résultat, avec les répertoires dist et bundles?
KX
Messages postés
16755
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
12 février 2025
3 020
11 déc. 2021 à 10:38
11 déc. 2021 à 10:38
Javapackager n'a existé qu'en Java 8, c'était le successeur de javafxpackager en Java 7, et a été remplacé en Java 9 par jlink pour prendre en charge les modules.
Depuis Java 14 on a un outil beaucoup plus riche, jpackage, dont la documentation est ici :
https://docs.oracle.com/en/java/javase/17/jpackage/toc.htm
Depuis Java 14 on a un outil beaucoup plus riche, jpackage, dont la documentation est ici :
https://docs.oracle.com/en/java/javase/17/jpackage/toc.htm
benoit_28
Messages postés
42
Date d'inscription
vendredi 20 mars 2020
Statut
Membre
Dernière intervention
11 juin 2023
>
KX
Messages postés
16755
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
12 février 2025
Modifié le 16 déc. 2021 à 15:48
Modifié le 16 déc. 2021 à 15:48
Bonjour KX.
J'ai donc déchargé je java17, et ai copié le C:\Program Files\Java\jdk-17 dans un répertoire où je pouvais écrire: C:\Users\MASTER\java\jdk-17 créé auparavant. J' ai transféré mon programme optique.java dans le C:\Users\MASTER\java\jdk-17\bin et l'ai compilé et exécuté: tout s'est bien passé. J'ai donc bien un optique.jar sur ce \bin
Puis j'ai fait la ligne de commande suivante, comme je pense que le demande la documentation que tu m'as indiquée:
C:\Users\MASTER\java\jdk-17\bin> ./jpackage --input C:\Users\MASTER\Java\jdk-17\bin --main-jar optique.jar.
La première fois on m'a dit d'aller télécharger WIX, ce que j'ai fait, et je l'ai installé, tout s'est bien passé. J'ai alors refait la ligne de commande ci-dessus, et là ça a mis une minute sans répondre, puis le prompt est revenu sans commentaire. J'ai en effet trouvé sur mon répertoire le optique-1.0.exe ou plutôt ...optique-1.0.exe (avec 3 signes peu visibles devant). J'ai cliqué dessus, et cela m'a généré C:\Program Files\optique.exe avec deux fichiers runtime et app en parallèle; donc je pensais n'avoir qu'à cliquer deux fois dessus. Mais quand le le fais, rien ne se passe et si j'enlève les 3 petits signes devant, on me dit que le nom du fichier source et destination sont identiques et on remet les 3 signes.
Donc, je suis proche de la solution, mais il y a encore un hic. As tu une idée sur ce qui ne marche pas?
J'ai donc déchargé je java17, et ai copié le C:\Program Files\Java\jdk-17 dans un répertoire où je pouvais écrire: C:\Users\MASTER\java\jdk-17 créé auparavant. J' ai transféré mon programme optique.java dans le C:\Users\MASTER\java\jdk-17\bin et l'ai compilé et exécuté: tout s'est bien passé. J'ai donc bien un optique.jar sur ce \bin
Puis j'ai fait la ligne de commande suivante, comme je pense que le demande la documentation que tu m'as indiquée:
C:\Users\MASTER\java\jdk-17\bin> ./jpackage --input C:\Users\MASTER\Java\jdk-17\bin --main-jar optique.jar.
La première fois on m'a dit d'aller télécharger WIX, ce que j'ai fait, et je l'ai installé, tout s'est bien passé. J'ai alors refait la ligne de commande ci-dessus, et là ça a mis une minute sans répondre, puis le prompt est revenu sans commentaire. J'ai en effet trouvé sur mon répertoire le optique-1.0.exe ou plutôt ...optique-1.0.exe (avec 3 signes peu visibles devant). J'ai cliqué dessus, et cela m'a généré C:\Program Files\optique.exe avec deux fichiers runtime et app en parallèle; donc je pensais n'avoir qu'à cliquer deux fois dessus. Mais quand le le fais, rien ne se passe et si j'enlève les 3 petits signes devant, on me dit que le nom du fichier source et destination sont identiques et on remet les 3 signes.
Donc, je suis proche de la solution, mais il y a encore un hic. As tu une idée sur ce qui ne marche pas?
KX
Messages postés
16755
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
12 février 2025
3 020
>
benoit_28
Messages postés
42
Date d'inscription
vendredi 20 mars 2020
Statut
Membre
Dernière intervention
11 juin 2023
17 déc. 2021 à 17:10
17 déc. 2021 à 17:10
Bonjour,
Avec cette commande, tu lui dis que l'input de ton programme c'est tout le répertoire bin du JDK (y compris la commande jpackage elle même !) ce qui signifie que le résultat de ton programme va se mélanger avec les fichiers du JDK !!
La commande de base est celle-ci :
Ce qu'il pourrait manquer c'est donc la déclaration de la classe main, celle qui permet de dire comment exécuter le programme. C'est optionnel si la main-class est déjà précisée dans le Manifest du main-jar, mais est ce bien le cas ?
Quant à ces "3 petits signes" ? Est-ce que tu peux être plus précis ? Par exemple faire une capture d'écran, pour voir à quoi cela ressemble...
C:\Users\MASTER\java\jdk-17\bin> ./jpackage --input C:\Users\MASTER\Java\jdk-17\bin --main-jar optique.jarOn a déjà parlé du fait que tu ne devrais pas travailler directement dans le JDK mais plutôt dans un répertoire de travail dédié.
Avec cette commande, tu lui dis que l'input de ton programme c'est tout le répertoire bin du JDK (y compris la commande jpackage elle même !) ce qui signifie que le résultat de ton programme va se mélanger avec les fichiers du JDK !!
La commande de base est celle-ci :
jpackage --input app-directory --main-jar jar-file [--main-class main-class]
Ce qu'il pourrait manquer c'est donc la déclaration de la classe main, celle qui permet de dire comment exécuter le programme. C'est optionnel si la main-class est déjà précisée dans le Manifest du main-jar, mais est ce bien le cas ?
Quant à ces "3 petits signes" ? Est-ce que tu peux être plus précis ? Par exemple faire une capture d'écran, pour voir à quoi cela ressemble...
benoit_28
Messages postés
42
Date d'inscription
vendredi 20 mars 2020
Statut
Membre
Dernière intervention
11 juin 2023
>
KX
Messages postés
16755
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
12 février 2025
Modifié le 17 déc. 2021 à 19:12
Modifié le 17 déc. 2021 à 19:12
Bonsoir.
Bon, j'ai fait un répertoire C:\Users\MASTER\java\jdk-17\programmes_optique, dans lequel j'ai mis mon application_optique_plus.java que j'ai compilé avec le MANIFEST.MF et éxécuté: pas de problème. Puis j'ai fait la ligne de commande:
C:\Users\MASTER\java\jdk-17\bin> ./jpackage --input ../programmes_optique --main-jar application_optique_plus.jar
et j'ai bien récupéré dans le C:\Users\MASTER\Java\jdk-17\bin l'élément application_optique_plus-1.0.exe mais quand je clique dessus, une fenêtre s'ouvre puis se referme illico avec un avertissement sonore, et rien n'est fait dans le répertoire Program files.
En fait; j'ai toujours les trois petits blancs dans mon exe:comme tu peux le constater sur ce qui suit, mais sans commentaire cette fois:
PS C:\Users\MASTER\java\jdk-17\bin> dir *applicatio*
Répertoire : C:\Users\MASTER\java\jdk-17\bin
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 17/12/2021 18:26 52371968 bbbapplication_optique_plus-1.0.exe
-a---- 19/11/2021 18:31 1273505 application_optique_plus.zip
les trois blancs sont remplacés par des b parce que le traitement de texte de comment ça marche élimine les blancs!
Bon, j'ai fait un répertoire C:\Users\MASTER\java\jdk-17\programmes_optique, dans lequel j'ai mis mon application_optique_plus.java que j'ai compilé avec le MANIFEST.MF et éxécuté: pas de problème. Puis j'ai fait la ligne de commande:
C:\Users\MASTER\java\jdk-17\bin> ./jpackage --input ../programmes_optique --main-jar application_optique_plus.jar
et j'ai bien récupéré dans le C:\Users\MASTER\Java\jdk-17\bin l'élément application_optique_plus-1.0.exe mais quand je clique dessus, une fenêtre s'ouvre puis se referme illico avec un avertissement sonore, et rien n'est fait dans le répertoire Program files.
En fait; j'ai toujours les trois petits blancs dans mon exe:comme tu peux le constater sur ce qui suit, mais sans commentaire cette fois:
PS C:\Users\MASTER\java\jdk-17\bin> dir *applicatio*
Répertoire : C:\Users\MASTER\java\jdk-17\bin
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 17/12/2021 18:26 52371968 bbbapplication_optique_plus-1.0.exe
-a---- 19/11/2021 18:31 1273505 application_optique_plus.zip
les trois blancs sont remplacés par des b parce que le traitement de texte de comment ça marche élimine les blancs!
benoit_28
Messages postés
42
Date d'inscription
vendredi 20 mars 2020
Statut
Membre
Dernière intervention
11 juin 2023
>
KX
Messages postés
16755
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
12 février 2025
17 déc. 2021 à 19:30
17 déc. 2021 à 19:30
Encore une info: j'ai essayé de supprimer application_optique_plus-1.0.exe Impossible car "il est ouvert dans installer de application_optique_plus". Je l'avais pourtant éliminé avant de faire ce que je t'ai écrit précédemment. .