En regardant le Rhino to Nashorn migration guide, je vois plusieurs façons possibles.
Si vous n'êtes pas en utilisant le script de compatibilité Rhino, ce serait le faire:
var usingNashorn = typeof importClass !== "function";
... depuis importClass
est défini pour Rhino, mais pas pour Nashorn (sauf si vous incluez le script de compatibilité).
Je pense que Java.type
est Nashorn spécifique, donc:
var usingNashorn = typeof Java !== "undefined" && Java && typeof Java.type === "function";
Vous pouvez vérifier pour l'emballage des exceptions:
var usingNashorn;
try {
// Anything that will throw an NPE from the Java layer
java.lang.System.loadLibrary(null);
} catch (e) {
// false!
usingNashorn = e instanceof java.lang.NullPointerException;
}
... depuis le guide de migration dit que sera true
pour Nashorn mais false
pour Rhino. Cela implique de lancer une exception, ce qui est regrettable.
Intéressant. Pourquoi avez-vous besoin du chèque? –
Si vous demandez à propos de rhino vs nashorn, ne vous posez pas simplement des questions sur JDK SE 8 vs> 8? –
@JohnGreen: * "... à propos de JDK SE 8 vs> 8?" * Nashorn a été ajouté dans JDK8 (pas> 8). Et il est [encore possible d'exécuter Rhino dans JDK8] (https://wiki.openjdk.java.net/display/Nashorn/Using+Rhino+JSR-223+engine+with+JDK8) (mais vous devez ajouter un pot et faites-le exprès). –