TrabalhosGratuitos.com - Trabalhos, Monografias, Artigos, Exames, Resumos de livros, Dissertações
Pesquisar

Nashorn Em Java 8

Dissertações: Nashorn Em Java 8. Pesquise 860.000+ trabalhos acadêmicos

Por:   •  6/10/2014  •  2.037 Palavras (9 Páginas)  •  333 Visualizações

Página 1 de 9

Nashorn Javascript Engine

Antes do lançamento do Java 8, dentro do Java 7 já existia implementação de motores que conseguiam “rodar” linguagens em script dentro do Java, a ferramenta utilizada era o Rhino, projeto desenvolvido pela Mozilla, que já utilizava a tecnologia invokedynamic. Com o lançamento do Java 8 essa ferramenta foi substituída pelo Nashorn, que foi implementado totalmente do zero.

Este hand-out irá abordar um dos aspectos do Java 8, que é o Oracle Nashorn. O Nashorn irá executar em um tempo muito mais eficaz do que o baseado no motor Mozilla Rhino, porque utiliza o novo bytecode invokedynamic adicionado ao novo JDK o que permite explorar melhor o poder da máquina virtual Java. Nashorn além de ser baseado na máquina da Vinci (JSR 292) -projeto com o objetivo de protótipo a extensão do JVM para adicionar suporte para linguagens dinâmicas – é baseado também em ECMAScript-262 - linguagem de programação baseada em scripts - e é totalmente compatível, o que pode torná-lo único no mundo dos motores de JavaScript. Vamos abordar detalhadamente sobre o seu conceito, as funcionalidades, a implementação, o desempenho e exemplos de sua codificação.

1 - INTRODUÇÃO

O Java 8 foi lançado no dia 25 de março de 2014, nessa nova versão vários novos recursos foram desenvolvidos, como as Expressões Lambdas, Interfaces Funcionais, Stream entre outros. Este hand-out apresenta o conteúdo do Oracle Nashorn (JSR 223, PEC 174).

O Oracle Nashorn tem como objetivo implementar um tempo de execução leve e de alto desempenho do JavaScript em Java com uma JVM ativa. Este projeto tem como intenção permitir que os desenvolvedores Java incorporem a linguagem JavaScript em aplicações Java via JSR-223 e para o desenvolvimento livre diretamente em JavaScript.

2 - NASHORN EM JAVA 8

Nashorn, é um motor de JavaScript, totalmente implementado em Java. Tem como principal funcionalidade, fornecer a capacidade de interligar o Java com o JavaScript, mas em um sentido mais amplo, pode ser mais facilmente entendida como o mais recente esforço da Oracle para abrir a JVM para linguagens diferentes do Java e atrair mais desenvolvedores.

Todos nós sabemos o quão bem estabelecida é a linguagem Java, mas a popularidade das linguagens dinâmicas vão continuar crescendo, e as fraquezas do Java estão sendo ressaltadas, sua digitação formal e rígida leva a um código detalhado e a um desenvolvimento lento. Com a implementação de um motor de JavaScript em Java, a Oracle está fornecendo aos programadores acesso a todos os benefícios do Java, como bibliotecas extensas, otimização de código, vastas redes de apoio e etc, para uso em uma linguagem flexível, dinamicamente tipada que muitos desenvolvedores já estão familiarizados.

Não é algo novo a implementação do JavaScript no Java. Rhino, desenvolvido pela Netscape em 1997 e posteriormente retomadas pelo Mozilla, fornecido com o Java SE 6, concedeu muitas das mesmas características do Nashorn, porém, era lento em comparação com outros motores de JavaScript. Seu desempenho melhorou com o lançamento do Java SE 7, fazendo uso parcial da instrução invokedynamic, que é uma instrução que consegue “invocar” um método sem a obrigatoriedade de conhecer os tipos envolvidos, mas ainda não foi nada em comparação com o V8 da Google. Nashorn, sendo construído a partir do zero e fazendo pleno uso dos invokedynamic, era o que supostamente devia ser do Rhino. Testes de velocidade iniciais sugerem que ele ainda não pode coincidir com o desempenho do V8, mas é cerca de 3 a 5 vezes mais rápido que o Rhino, é, no mínimo, um concorrente viável neste momento.

Antes de entrar em várias oportunidades que o Nashorn abre, é melhor demonstrar primeiro como ele permite que você interligue o JavaScript em Java.

2.1 - JAVASCRIPT EM JAVA

A API Java Scripting pode ser usado para executar JavaScript a partir de uma classe Java. Um simples programa: Hello world, por exemplo, pode ser escrito como:

1. import javax.script.*;

2. ScriptEngineManager m = new ScriptEngineManager();

3. ScriptEngine nashorn = m.getEngineByName("nashorn");

4. try {

5. nashorn.eval("print('Hello, world')");

6. } catch (ScriptException e) {

7. }

Enquanto este é um caso de uso comum, pode-se facilmente modificar o código para ler um arquivo qualquer de JavaScript pelo método. eval(), para isso basta modificar da seguinte forma a linha 5:

1. nashorn.eval(new java.io.FileReader(“TestScript.js”));

Com esta funcionalidade o desenvolvedor pode, por exemplo, chamar modelo de motores de JavaScript de dentro de seu código Java ou usar o mesmo código de validação no cliente e no servidor. Ele também abre algumas interessantes possibilidades de multithreading.

2.2 - JAVA EM JAVASCRIPT

Indo para o outro lado, o Nashorn vem com um objeto global 'Java' predefinido com diversas funções para trabalhar com classes Java diretamente no JavaScript. Por exemplo, considere uma classe Java simples que recebe um nome de usuário de seu construtor, e tem um método que retorna uma saudação:

1. package com.credera.example;

2. public class HelloUser {

3. private String name;

4. public HelloUser(String name) {

5. this.name = name;

6. }

7. public String getMessage() {

8. return "Hello, " + this.name;

9. }

10. }

O objeto Java pode ser usado para importar a classe HelloUser em um JavaScript por

1. var HelloUser = Java.type("com.credera.example.HelloUser");

e então podemos criar um novo objeto HelloUser e invocar o método. getMessage () por

1. var helloUser = new HelloUser("John");

...

Baixar como (para membros premium)  txt (11.9 Kb)  
Continuar por mais 8 páginas »
Disponível apenas no TrabalhosGratuitos.com