Forum des développeurs  

Le forum de référence en programmation et développement. Articles, cours et tutoriels du débutant au chef de projet et DBA confirmé.
Précédent   Forum des développeurs > Java > Développement Web en Java > Applets

Applets Vos questions sur les Applets

Réponse
 
Outils de la discussion
Vieux 06/11/2008, 14h23   #1 (permalink)
Membre du Club
 
Date d'inscription: mai 2007
Messages: 98
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
gomodo est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 06/11/2008, 15h02   #2 (permalink)
Modérateur
 
Date d'inscription: septembre 2007
Localisation: Pays des fourmis géantes, Belgique
Âge: 29
Messages: 3 087
Envoyer un message via MSN à tchize_ Envoyer un message via Skype™ à tchize_
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")

Citation:
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 :
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)
__________________
Journaux de développement
Apprenez a poser vos questions, si vous voulez que j'y réponde!
Pas de Stacktrace, pas de chocolat!
Questions techniques en privé lettre morte
tchize_ est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 06/11/2008, 18h20   #3 (permalink)
Membre du Club
 
Date d'inscription: mai 2007
Messages: 98
Par défaut

Merci pour cette réponse détaillée.

gomodo est déconnecté   Envoyer un message privé Réponse avec citation
NEWS JAVAFAQsTUTORIELSJAVASEARCHSOURCESLIVRESOUTILS, EDI & APIECLIPSENETBEANSBLOGDISCUSSIONSTV

Réponse

Précédent   Forum des développeurs > Java > Développement Web en Java > Applets



Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are non
Pingbacks are non
Refbacks are non
Navigation rapide


Fuseau horaire GMT +1. Il est actuellement 02h19.


Publiez vos articles, tutoriels et cours et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones. Nous contacter
Copyright 2000-2009 www.developpez.com - Legal informations