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

avec Java Discussion :

Rendre une application Java indépendante de la présence ou non d'une JVM ?


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Profil pro
    professeur des universités à la retraite
    Inscrit en
    Août 2008
    Messages
    364
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : professeur des universités à la retraite

    Informations forums :
    Inscription : Août 2008
    Messages : 364
    Par défaut Rendre une application Java indépendante de la présence ou non d'une JVM ?
    Bonjour,
    il me semble avoir vu quelque part qu'il était possible de compiler une appli Java de telle sorte qu'elle puisse s'exécuter même dans le cas
    où la JVM serait absente de la machine sur laquelle serait exécutée l'appli, ou dans le cas où la version de la JVM de la machine
    ne conviendrait pas (par exemple une appli programmée en Java 8 s'exécuterait sur une machine ne contenant que Java 7).

    Merci pour toutes infos sur cette possibilité, notamment via Eclipse et Netbeans.

  2. #2
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Janvier 2008
    Messages
    623
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 623
    Par défaut
    Salut,

    Est-ce que c'est launch4j que tu cherche ?

  3. #3
    Membre très actif
    Profil pro
    professeur des universités à la retraite
    Inscrit en
    Août 2008
    Messages
    364
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : professeur des universités à la retraite

    Informations forums :
    Inscription : Août 2008
    Messages : 364
    Par défaut
    Je ne sais pas mais je vais regarder.
    Peut-être plutôt quelque chose qui s'appelle 'native package' ou un nom de ce genre? des liens avec une bonne doc et surtout une doc récente là-dessus pourraient être intéressants...

    A vrai dire mon problème principal est celui que je mentionnais plus haut : programmer sous Java 8 et livrer une appli qui soit exécutable sur une machine sous Java 7 sans exiger l'installation de Java 8 sur la machine qui exécutera l'application. Bien que je programme sous Linux la machine cible sur laquelle exécuter l'appli serait plutôt sous Windows.

  4. #4
    Membre Expert Avatar de Nico02
    Homme Profil pro
    Developpeur Java/JEE
    Inscrit en
    Février 2011
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Developpeur Java/JEE
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2011
    Messages : 728
    Par défaut
    Salut,

    Il est impossible (a ma connaissance) d'exécuter du code Java sans JVM. C'est elle qui est chargé de convertir le bytecode généré lors de la compilation de ton code source en code machine, et d'assurer ainsi la compatibilité de ton code sur toute les plateformes. Sans cette JVM, la machine est incapable d'interpréter le bytecode et donc de faire fonctionner ton programme.

    Il existe la JNI qui permet de faire appel à du code natif depuis du code Java, mais ce code Java lui nécessite bien de s’exécuter dans une JVM.

    Pour ce qui est de la compatibilité en version du JRE, Oracle assure une compatibilité ascendante. C'est à dire qu'une application développée pour Java 1.2 fonctionnera aussi avec le tout dernier JRE, mais l'inverse évidement n'est pas vrai. Tu ne pourras pas utiliser les lambas de Java 8 avec une vielle version de ton JRE.

    Pour ce qui est de lunch4J, c'est juste un moyen d'encapsuler des .jar dans un .exe, cela ne l'affranchie pas de l'utilisation d'une JVM.

    Après il existe la technologie JavaWebStart qui permet (entre autre) de contrôler la version d'une JVM présente sur le poste client. Elle offre aussi la possibilité de la télécharger si nécessaire.

  5. #5
    Membre très actif
    Profil pro
    professeur des universités à la retraite
    Inscrit en
    Août 2008
    Messages
    364
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : professeur des universités à la retraite

    Informations forums :
    Inscription : Août 2008
    Messages : 364
    Par défaut
    Impossible donc d'encapsuler dans un .jar tout ce qui est nécessaire pour faire exécuter l'application (sur un système donné, disons Windows 7 etc.), par conséquent. Impossible d'encapsuler l'application + le JRE qui va bien et le JVM qui va bien, pour qu'une appli compilée sous Java 8 puisse tourner sur un Windows sans Java ou un Windows avec Java 7...

    .

  6. #6
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Disons que si un éditeur de JVM voulait faire des outils pour intégrer sa propre JVM avec un seul .jar à lancer avec, le tout encapsulé dans un seul .exe, ce serait possible. Ou alors une JVM Opensource qui fournisse un outil de ce genre.

    Mais alors l'exe en question aurait déjà la taille de la JVM, plus la bibliothèque de base Java, plus la taille du programme. En l'état ce n'est pas très intéressant. Pour le coup, des évolutions pour arranger ça sont prévues depuis longtemps (l'idée étant qu'on a pas besoin d'une JVM entière avec toute la bibliothèque de base si on en n'utilise que 10%, et qu'il faudrait donc pouvoir économiser tout ça.) Mais pour l'instant on en voit pas le début de la queue.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Janvier 2008
    Messages
    623
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 623
    Par défaut
    Citation Envoyé par ptyxs Voir le message
    Impossible donc d'encapsuler dans un .jar tout ce qui est nécessaire pour faire exécuter l'application (sur un système donné, disons Windows 7 etc.), par conséquent. Impossible d'encapsuler l'application + le JRE qui va bien et le JVM qui va bien, pour qu'une appli compilée sous Java 8 puisse tourner sur un Windows sans Java ou un Windows avec Java 7...

    .
    As-tu regardé de plus prêt Launch4j?

    La première phrase de leur site :
    Launch4j is a cross-platform tool for wrapping Java applications distributed as jars in lightweight Windows native executables. The executable can be configured to search for a certain JRE version or use a bundled one
    N'est-ce pas ce que tu recherche ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 17/12/2013, 10h31
  2. Rendre une application Java exécutable
    Par kortobi dans le forum Débuter avec Java
    Réponses: 6
    Dernier message: 22/03/2013, 11h34
  3. Réponses: 0
    Dernier message: 27/12/2007, 16h48
  4. Réponses: 6
    Dernier message: 25/05/2007, 18h10
  5. Rendre une application Java exécutable
    Par kiminfor dans le forum Eclipse Java
    Réponses: 13
    Dernier message: 06/04/2007, 15h16

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