9
votes

Était-il déjà un "changement de rupture" dans la spécification de langue Java?

Avec l'exception de manière permanente largement connue de l'introduction du mot-clé "ASSERT", a déjà été une modification de la spécification de langue Java, qui a provoqué un code ancien pour ne plus compatible avec les niveaux source plus récents du JDK?


Résumé jusqu'à présent (merci beaucoup pour les commentaires):

Le code Java "plus ancien" peut provoquer des erreurs de compilation, lors de la mise à niveau vers une version ultérieure, si le code utilise des déclarations à l'aide de l'un des mots-clés qui introduits dans une version ultérieure de la spécification de langue Java (JLS):

  • Assert
  • Enum
  • strictfp

8 commentaires

Enum vient à l'esprit aussi.


strictfp . C'était défaut avant 1.2


Voir docs.oracle.com/javase/7/docs / TECHNOTES / GUIDES / LANGUE / ...


Le Java Nio sauve beaucoup de code


@Dima Goltsman, Nio n'a introduit aucune modification de Langue . affirmer et Enum sont des mots-clés, leur introduction a donc brisé l'ancien code qui a utilisé ces mots comme identifiants. Par exemple Enums Bibliothèque de Jakarta Commons.


En outre, il y avait un changement de comportement de @override Annotation.


Réponse créée pour résumer, ne peut pas vraiment penser à autre chose pour le moment (bon point pour Java). @javadéveloppeur Changement de comportement de remplacement n'a pas cassé la compatibilité.


@javadeveloper Le changement de remplacement @ n'a pas brisé le code existant.


3 Réponses :


7
votes

Java 1.2
  • strictfp mot-clé.

    Java 1.4
    • affirme mot-clé.

      Java 1.5
      • Enum Mot clé.


0 commentaires

3
votes

0 commentaires

2
votes

Java 10 fabriqué var un mot clé. C'est toujours un nom de variable valide mais un nom de classe illégale.


0 commentaires