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

JavaScript Discussion :

Nashorn : exécuter du JavaScript sur une JVM


Sujet :

JavaScript

  1. #1
    Expert éminent sénior

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Points : 79 912
    Points
    79 912
    Par défaut Nashorn : exécuter du JavaScript sur une JVM
    Nashorn : exécuter du JavaScript sur une JVM
    en combinant des codes Java et JavaScript

    Nashorn est un environnement d'exécution JavaScript de haute performance écrit en Java pour la JVM (Java Virtual Machine).

    Le projet a été mis en place à l'origine par Oracle qui l'a ensuite ouvert à la communauté via OpenJDK.

    Il permet aux développeurs d'intégrer le code JavaScript à l'intérieur de leurs applications Java et même d'utiliser les classes et méthodes Java à partir de leur code JavaScript. Il peut être conçu comme un substitut au moteur JavaScript V8 de Google. C'est un successeur de l'environnement d'exécution Rhino qui était fourni avec les versions antérieures du JDK. Nashorn est écrit à partir de zéro en utilisant les nouvelles fonctionnalités du langage comme JSR 292 (Supporting Dynamically Typed Languages) et invokedynamic.

    Actuellement, Nashorn supporte la spécification ECMAScript 5.1 et le support de ECMAScript 6 est bien entendu en cours.

    Voici un exemple qui utilise la classe Java HashMap en ligne de commande avec l'outil jjs :

    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    jjs> var HashMap = Java.type("java.util.HashMap")
    jjs> var userAndAge = new HashMap()
    jjs> userAndAge.put("shekhar",32)
    null
    jjs> userAndAge.put("rahul",33)
    null
    jjs> userAndAge.get("shekhar")

    Vous pouvez donc utiliser notamment :

    • des classes ;
    • des méthodes statiques ;
    • des bibliothèques JavaScript externes ;
    • des scripts personnalisés en utilisant les caractéristiques d'un shell Unix ;
    • les nouveautés de Java 8 ;
    • etc.


    Vous pouvez également utiliser Nashorn dans du code Java :

    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public static void main(String[] args) throws ScriptException {
        ScriptEngineManager manager = new ScriptEngineManager();
        ScriptEngine nashorn = manager.getEngineByName("nashorn");
        Integer eval = (Integer) nashorn.eval("10 + 20");
        System.out.println(eval);
    }

    Pour plus de détails, n'hésitez pas à lire ce tutoriel sur GitHub.

    Le blog officiel.


    Et vous ?

    Que pensez-vous de ce projet ?
    Connaissez-vous des outils similaires ?


    Découvrez également les cours et tutoriels Java de Developpez.com ainsi que ceux sur le JavaScript.

  2. #2
    Expert confirmé

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 065
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2 065
    Points : 4 229
    Points
    4 229
    Par défaut
    Je pense que si les devs ont l'occasion d'utiliser Java ou JS ils préféreront utiliser Java , je pense que l'utilité sera surtout la réutilisation de code JS ou pour un dev faisant principalement du JS mais au-delà de ça je vois pas pourquoi un dev se tournera vers cette solution, j'espère que ça ne sera pas pousser par les décideurs pour être dans le hype.

  3. #3
    Membre confirmé Avatar de heid
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    388
    Détails du profil
    Informations personnelles :
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Mai 2002
    Messages : 388
    Points : 597
    Points
    597
    Par défaut
    Ca permet par exemple d'ouvrir a des tiers via des script JS (plus grand public qu'un jar a livrer) des opération sur des données. Par exemple permettre à des personnes d'aller personnaliser des contrôles métier avant une opération lambda sur un bean.

  4. #4
    Expert confirmé Avatar de Zefling
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2007
    Messages
    1 174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 174
    Points : 4 690
    Points
    4 690
    Par défaut
    On utilise parfois une lib JS, comme celle de compilation du LESS. C'est dans ce genre de cas que Rhino ou Nashorn servent.

  5. #5
    Membre émérite

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2013
    Messages
    1 066
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 066
    Points : 2 569
    Points
    2 569
    Par défaut
    Peut on l'utiliser pour ajouter un outil de scripts à son application ? Comme on ferait du VBA...

    Dans ce cas là comment limiter le périmètre des classes disponibles aux utilisateurs ?
    Consultez mes articles sur l'accessibilité numérique :

    Comment rendre son application SWING accessible aux non voyants
    Créer des applications web accessibles à tous

    YES WE CAN BLANCHE !!!

    Rappelez-vous que Google est le plus grand aveugle d'Internet...
    Plus c'est accessible pour nous, plus c'est accessible pour lui,
    et meilleur sera votre score de référencement !

Discussions similaires

  1. Réponses: 3
    Dernier message: 05/04/2007, 10h57
  2. Localiser l'action du javascript sur une frame
    Par iks22 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 02/01/2007, 19h34
  3. [Debutant] Mettre 2 javascript sur une page
    Par hugo69 dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 06/07/2006, 12h26
  4. Lien javascript sur une image
    Par beegees dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 20/03/2006, 16h30
  5. javascript sur une page creation flash mx
    Par hadjplasma dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 17/08/2005, 12h06

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