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 :

Java 1.5 et Java 1.4


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juillet 2006
    Messages
    143
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 143
    Par défaut Java 1.5 et Java 1.4
    Bonjour à tous.

    Je dois reprendre une application web (Struts 1.1) développée en Java 1.4 fonctionnant sur Tomcat 4.4.

    Afin de pouvoir utiliser la vue Servers, faire du debogage pas à pas etc, j'ai choisi de monter mon environnement de dev avec Java 1.5, Tomcat 4.1 et Eclipse 3.3.2 (j'utilise WTP, qui n'accepte que du Java 1.5 ou supérieur).

    Est-ce que je peux compiler (compliance level 5.0) et générer mon war sous mon environnement de dév puis le faire tourner sur un environnement avec Java 1.4 et Tomcat 4.4 ?

    Est-ce que la compatibilité entre java 1.4 et 1.5 est ascendante ? Descendante ? Ou bien il faut avoir la même version de Java entre la compilation/génération du war et l'environnement d'exécution ?

    Ou encore mieux, y t-il la possibilité d'utiliser la même chose proposée dans WTP, à savoir un monitoring avec possibilité de debugging pas à pas tout en ayant un Eclipse tournant sur Java 1.4 (je précise que ce n'est pas ce que propose le Tomcat Plugin de Sysdeo)

    En gros, si vous m'avez compris, j'ai besoin de quelques infos et précisions sur le sujet, merci !

  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
    si tu développe avec java 1.5, tu aura du code qui pourra s'exécuter sur des jvm 1.5 et supérieures. Tu peux donner l'instruction au compilateur de faire des .class compatible 1.4, 1.3 meme 1.2 il me semble. Par contre, le gros problème, c'est que les api ne sont pas les meme. Avoir du code capable de tourner sur jvm 1.4 mais qui dépend de classes ou méthodes apparues en 1.5 ne sera pas utile -> faudra bien choisir tes classes. De plus le compiltateur refusera la compilation vers des ancienne version si tu utilise des options de la nouvelles jvm (exemple un code avec des Generics ne pourra jamais etre compilé avec comme target jvm 1.4)

    PS: pourquoi tomcat 4 pour un nouveau developpement? Cette version est antédéluvienne et bugguée.

  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,

    Citation Envoyé par tchize_ Voir le message
    Tu peux donner l'instruction au compilateur de faire des .class compatible 1.4, 1.3 meme 1.2 il me semble. Par contre, le gros problème, c'est que les api ne sont pas les meme. Avoir du code capable de tourner sur jvm 1.4 mais qui dépend de classes ou méthodes apparues en 1.5 ne sera pas utile -> faudra bien choisir tes classes.
    C'est même plutôt dangereux : le code compilera bien et le programme pourrait bien fonctionner jusqu'à l'appel d'une méthode anodine...

    Il est préférable d'utiliser le JDK correspondant à la version minimum sur laquelle on veut que l'application tourne !

    a++

  4. #4
    Membre confirmé
    Inscrit en
    Juillet 2006
    Messages
    143
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 143
    Par défaut
    Oui, finalement j'ai indiqué 1.4 au niveau des sources et des classes compilées.

    Je fais systématiquement des tests sur un environnement ou le jdk 1.4 est installé.

    A voir si les évolutions à réaliser dans l'application sont plus ou moins majeures mais bien évidemment, je ferai attention aux choix des classes (les développements resteront dans la veine de ceux déjà réalisés...).

    Eclipse ne génère pas une erreur ou un warning si on tente d'utiliser une fonctionnalité uniquement apparue depuis la 1.5 ?

    PS : ce n'est pas un nouveau développement mais une TMA sur une ancienne application, je préfère donc être au plus proche de l'environnement de production pour éviter toute surprise, d'où l'utilisation d'un Tomcat 4.

    @adiGuba : je suis d'accord mais sans l'utilisation de WTP (qui nécessite jdk 1.5 ou supérieur), je ne peux pas faire de pas à pas et si je dois recompiler puis redémarrer Tomcat toutes les 5 min, je te laisse imaginer la perte de temps...

  5. #5
    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
    Citation Envoyé par djalouk Voir le message
    Eclipse ne génère pas une erreur ou un warning si on tente d'utiliser une fonctionnalité uniquement apparue depuis la 1.5 ?
    Si on utilises une nouveauté du langage oui... Mais pas si on utilise une nouvelle méthode car il n'a aucun moyen de la savoir.
    Par exemple ceci compile en 1.4 avec un JDK 1.5 mais plantera en 1.4 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    String str = "Hello You !";
    str = str.replace("You", "World");
    Lors de la compilation si tu indique un target 1.4, le compilateur te génèrera bien un bytecode compatible 1.4.
    Par contre il va utiliser l'API de Java 1.5 pour vérifier les appels de méthode, et générer un appel à la méthode String.replace(CharSequence,CharSequence) qui n'existe pas en 1.4... et ce n'est qu'à l'exécution sur un vrai JRE 1.4 que tu va rencontrer le problème !!!


    Bref ce serait mieux si tu pouvais migrer ton serveur sur du Java5/Tomcat5...

    Sinon je te conseillerais d'utiler une tache Ant ou tout autre outils pour forcer une recompilation avec un vrai JDK 1.4 avant la mise en production, pour détecter ce type d'erreur...


    a++

  6. #6
    Membre confirmé
    Inscrit en
    Juillet 2006
    Messages
    143
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 143
    Par défaut
    J'ai commencé à prendre en main l'application, j'ai fait une recherche sur .replace et j'ai trouvé cette ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    valeur = ((Double)reponse).toString().replace('.',',');
    Le code serait finalement en Java 1.5 ?

  7. #7
    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
    Non car il ne s'agit pas de la même méthode :
    String.replace(char,char) existe depuis toujours,
    String.replace(java.lang.CharSequence,java.lang.CharSequence) est apparut avec Java 5...

    Il est inconcevable de gérer cela à la main, et le compilateur ne peut pas détecter ce type de problème. Donc la solution est bien de compiler avec un vrai 1.4

    a++

  8. #8
    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
    c'est pas la meme méthode.

    De plus, ok wtp exige java 5 pour fonctionner, mais est-ce qu'il exige que ton projet pointe sur un compilateur java 5? Parce qu'il faut faire la distrinction entre

    1) la jvm utilisée par eclipse pour fonctionner
    2) la jvm utilisée par eclipse pour compiler (spécifique au projet)
    3) éventuellement, la jvm utilisée par eclipse pour exécuter.

    Il me semblerait judicieux, au point 2, de faire pointer ton projet sur une jdk 1.4 si possible.

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

Discussions similaires

  1. Java 5.0 et java.util.Date
    Par Royd938 dans le forum Langage
    Réponses: 4
    Dernier message: 10/07/2006, 12h19
  2. Réponses: 12
    Dernier message: 02/05/2006, 16h31
  3. [Java] Livres de certification java 5
    Par garincha55 dans le forum Certifications
    Réponses: 2
    Dernier message: 13/04/2006, 15h20
  4. [PERL et JAVA] Appeler PERL depuis JAVA
    Par krusty dans le forum Modules
    Réponses: 4
    Dernier message: 05/04/2006, 21h49
  5. [Excel][VBA][Java] Appeler un objet java
    Par ay_pepito dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 29/07/2005, 15h46

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