Par défaut méthodes nécessitent de tels changements sur le bytecode et la JVM qu'ils auraient été impossible à faire sur l'île de Java 7. Le vérificateur de bytecode de Java 7 et au-dessous de rejeter les interfaces avec le corps de méthode (sauf pour l'initialiseur statique de la méthode). En essayant d'imiter méthodes par défaut avec des méthodes statiques de l'appelant n'allait pas produire les mêmes résultats, parce que les méthodes par défaut peut être remplacée dans les sous-classes.
Lambda peut s'exécuter sur Java 7, si les classes de l'API juste existerait-il. Le invokedynamic instruction existe sur Java 7, mais il aurait été possible de mettre en œuvre des lambdas de sorte qu'il génère le lambda classes au moment de la compilation (début du JDK 8 reprend l'a fait ainsi) et dans ce cas serait de travailler sur n'importe quel version de Java.
Répéter les Annotations est juste sucre syntaxique. Ils sont bytecode compatible avec les versions précédentes.
IIRC, les Annotations de Type n'existent qu'au moment de la compilation, de sorte qu'ils ne devraient pas nécessiter de bytecode changements.
Méthode noms des paramètres peuvent exister dans le bytecode Java 7, donc, qui est également compatible. Avec Java 7, ils n'existent pas dans les interfaces, mais je ne suis pas sûr qu'ils existent, avec Java 8. Je ferais mieux d'aller vérifier cela - j'ai un cas d'utilisation qui en bénéficieraient.
Les autres nouveautés sont pour la plupart de nouvelles Api, des améliorations pour HotSpot et de l'outillage.