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

Applets Java Discussion :

Coder en gérant les vieilles versions JAVA.


Sujet :

Applets Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mai 2007
    Messages
    183
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 183
    Par défaut Coder en gérant les vieilles versions JAVA.
    Bonjour a tous.

    Si un navigateur avec un Java 1.4 lance une page avec une applet compilé en Version 6, ça ne va pas marcher : ce n'est pas ça le problème.. (enfin quand même un peu..)
    ..mais plutot comment gérer les vieux clients. Le souci est apparu en particulier en testant avec des Mac Tiger (qui ne supporte pas les versions récentes de Java), mais la problématique reste valable avec des Windows avec des vielles JVM.

    On constatera au passage que par défaut aucun message ne s'affiche pour l'internaute lui indiquant que son JAVA est trop vieux (c'est pourtant le minimum que l'on devrait attendre de la JVM)... et après on va pleurer qu'il y a plus de Flash sur le web que d'Applet...

    Je ferme la parenthèse -> si l'on souhaite gérer le non-fonctionnement d'une applet récente sur une vieille JVM : Quel est le moyen le plus efficace (le plus utilisé) pour détecter la version de la JVM (tout OS confondu)?

    L'objectif est :
    - au pire d'afficher un message demandant à l'internaute la mise à Jour de sa JVM.
    - au mieux, proposer une alternative, par exemple une version de l'applet avec en moins les fonctionnalités évoluée des jdk supérieurs.

    J'ai lu lire sur un récent sujet (Applet : Bad version number ) que l'on peut spécifier des options à la compilation pour assurer le fonctionnement avec des versions inférieures. Qu'elle sont les limites de cette option ? Cela marche-t-il avec une applet codée avec des classes qui n'existe que dans la version supérieure ?

    Avec cette option peut-on envisager (dans la première classe chargée par exemple) de détecter la version courante de la JVM et de lancer ((toujours dans la même applet) la version la plus adaptée (instancier la bonne classe parmis plusieurs, chacune étant contruite pour une version spécifique d'un JDK)?

    Avant de modifier le code, je souhaiterais savoir ce qui ce fait, et connaitre les préconisations (les limites?) de codage dans ce contexte.

    Merci d'avance

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Citation Envoyé par gomodo Voir le message
    Quel est le moyen le plus efficace (le plus utilisé) pour détecter la version de la JVM (tout OS confondu)?
    en supposant que l'applet démare: System.getProperty("java.version") et System.getProperty("java.vendor")

    Cela marche-t-il avec une applet codée avec des classes qui n'existe que dans la version supérieure ?
    Oui et non. La classe démarrera sans soucis, mais dès que t'essaieras de toucher à des classes qui n'existe pas (dans la déclaration des champs, par exemple), ça va merder. même problème avec les nouvelles méthodes. Le mieux reste dans ce cas de compiler avec un jdk ancienne, c'est à dire non seulement en compatibilite mais aussi avec l'ancien api

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Avec cette option peut-on envisager (dans la première classe chargée par exemple) de détecter la version courante de la JVM et de lancer ((toujours dans la même applet) la version la plus adaptée (instancier la bonne classe parmis plusieurs, chacune étant contruite pour une version spécifique d'un JDK)?
    oui. Log4J faisait ça a une époque pour le logging. Il y avait une version java < 1.4 et java >=1.4 dans un meme jar. Le principe

    tu compile tout en compatibilité (1.4 par exemple). T'as trois parties à ton code. La générale (uniquement des classes de 1.4) qui détecte la jvm et déclare quelques interfaces. La version 6 qui implémente ces interfaces et une version 4 qui implémente aussi ces interfaces (avec des noms différents). Ensuite tu charge par exemple la bonne version via un Class.forName().

    Sinon le mieux reste de soit se coltiner à 1.4. Soit d'utiliser du javascript pour demander au user d'upgader la jvm (oui je sais, sous mac os x, l'upgrade jvm n'est possible qu'avec un upgrade de l'os)

  3. #3
    Membre confirmé
    Inscrit en
    Mai 2007
    Messages
    183
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 183
    Par défaut
    Merci pour cette réponse détaillée.


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

Discussions similaires

  1. Exposer les différentes versions de Java
    Par bm dans le forum Débuter avec Java
    Réponses: 5
    Dernier message: 03/11/2014, 10h52
  2. Générer un projet compatible avec les vieilles versions
    Par taorepoara dans le forum ActionScript 3
    Réponses: 1
    Dernier message: 30/10/2013, 00h25
  3. Comment upgrader Java sur une vieille version de Linux
    Par Romalafrite dans le forum Débuter avec Java
    Réponses: 8
    Dernier message: 26/07/2011, 21h22
  4. [Avis] Les meilleurs programmes Java ?
    Par christopheJ dans le forum ImageJ
    Réponses: 69
    Dernier message: 07/10/2008, 01h12
  5. [7RC3] Compatibilité avec les anciennes versions ...
    Par Sylvain Leray dans le forum XMLRAD
    Réponses: 3
    Dernier message: 15/05/2003, 16h46

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