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

Langage Java Discussion :

Différentes version du JRE


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné Avatar de Dinytro
    Profil pro
    Inscrit en
    Août 2003
    Messages
    402
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 402
    Par défaut Différentes version du JRE
    Bonjour,

    J'ai une question technique :

    hypothèse :
    Je récupére une appli compilé avec un J2SDK en version 1.3
    je la recompile en version 1.4.2.11 sans toucher au code et je génére un war cortrespondant.

    Cette appli peut elle être réutilisé avec une version de JAVA plus ancienne que celle avec laquelle elle a été recompilé sans soucis ?

    je me pose ces quetsion surtout par rapport au comportement de l'ancienne JVM (dans mon cas la 1.3) en tritant le code de la 1.4...

    par avance merci

  2. #2
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    La retro compatibilité ne fait pas partie des caractéristiques de java

    Par contre avec n'importe quel versio de java le compilateur peut compiler en destination d'une certaine version avec l'option -target, tapper javac -help pour plus d'infos

  3. #3
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,


    Il y a deux points à prendre en compte :
    • La compatibilité du bytecode.
    • Les classes/méthodes de l'API.
    En ce qui concerne la compatibilité du bytecode, il faut utilisé l'option -target de javac. A titre d'info le JDK 1.4 utilise comme valeur par défaut 1.2, c'est à dire que le bytecode peut être exécuté sur une JVM 1.2 au minimum.

    Le JDK 1.5 utilise la valeur par défaut 1.5, et nécessite donc impérativement une JVM 1.5 ou supérieur...





    Le second point est plus complexe. En effet, si tu utilises par exemple l'option -target 1.2 avec un JDK supérieur, le compilateur générera bien du bytecode compatible avec une JVM 1.2. Toutefois, ton code pourrait très bien utiliser des classes ou des méthodes inexistantes dans l'API de cette JVM... ce qui pourrait provoquer des erreurs (NoClassDefFoundError, NoSuchMethodeError, etc.).

    Il est donc impératif lorsque tu utilises l'option -target d'utiliser l'API correspondante, en utilisant directement les classes de la bonne version de la JVM.

    Pour cela il faut utiliser deux autres options de javac :
    • -bootclasspath qui correspond au classpath des classes de l'API, et d'y indiquer le fichier rt.jar de la JVM cible (ou classes.zip pour les anciennes JVM).
    • -extdirs pour redéfinir le répertoire d'extension (répertoire lib/ext de la JVM par défaut). Tu peux laisser ceci vide dans la plupart des cas.

    Dans ton cas cela pourrait donner ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    javac -target 1.3 -bootclasspath ...jre1.3/lib/classes.zip -extdirs ""  *.java
    (mais je ne sais plus si la JVM 1.3 utilisait un rt.jar ou un classes.zip)

    a++

Discussions similaires

  1. Forcer IE à utiliser la version du JRE de mon choix
    Par Nomade95000 dans le forum Applets
    Réponses: 7
    Dernier message: 18/08/2017, 19h10
  2. Réponses: 2
    Dernier message: 30/06/2005, 14h58
  3. [DOM] Problème entre différentes versions de java
    Par scorpiwolf dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 17/03/2005, 11h40
  4. [version] Requete Update avec différentes versions de mySQL
    Par regbegpower dans le forum Requêtes
    Réponses: 2
    Dernier message: 26/01/2004, 17h19
  5. Appli devant tourner sous différentes versions de Windows?
    Par AnneOlga dans le forum C++Builder
    Réponses: 4
    Dernier message: 12/11/2003, 10h48

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