Hoje vamos mostrar aplicações simples para introduzir e apresentar esse conceito. Lembre que estamos usando a mais nova versão do Java, o Java 8.
* É requerido ter feito pelo menos o "Olá mundo" do JavaFX para seguir nessa postagem
Carregando javascript a partir do Java
Através de sua aplicação, você pode colocar variáveis visíveis para o Javascript e do seu código Java chamar Javascript. O código abaixo é uma aplicação JavaFX que usa a engine para colocar o Stage principal no escopo do script Javascript e então chamamos um script do nosso sistema de arquivos com o resto do código da view:import javafx.application.Application; import javafx.stage.Stage; import javax.script.*; import java.io.FileReader; public class CarregaJS extends Application{ @Override public void start(Stage stage){ try{ ScriptEngine engine = new ScriptEngineManager().getEngineByName("nashorn"); engine.put("stage", stage); engine.eval(new FileReader("/opt/helloJavaFX.js")); }catch(Exception e){ e.printStackTrace(); } } }
Veja o uso da classe ScriptEngineManager para carregar a engine do Nashorn. Logo, carregamos o conteúdo do arquivo em um FileReader e interpretamos o script usando o método eval, mas antes disso colocamos o objeto stage no escopo do Javascript. Veja como ficou nosso script:
var txtOla = new javafx.scene.control.Label(">> Olá Mundo! <<") txtOla.font = new javafx.scene.text.Font(50) stage.scene = new javafx.scene.Scene(txtOla) stage.width = 500 stage.title = "Olá JavaFX + Javascript" stage.show()
Note que se você quiser alterar a view, você simplesmente pode modificar o script sem ter que recompilar o seu código Java! Resultado:
Carregando scripts usando a linha de comando
É possível usar a ferramenta jjs e escrever somente javascript. Para JavaFX especificamente, há um parâmetro que, quando usado, o Nashorn irá colocar uma variável chamada $STAGE para ser usada no seu script. Ela representa o stage principal da sua aplicação. Veja um "Olá Mundo" só com Javascript:var txtOla = new javafx.scene.control.Label(">> Olá Mundo! <<") txtOla.font = new javafx.scene.text.Font(50) $STAGE.scene = new javafx.scene.Scene(txtOla) $STAGE.width = 500 $STAGE.title = "Olá JavaFX + Javascript" $STAGE.show()
Para executar ele, tenha o JDK 8 instalado e no seu "path", ou navegue até o diretório $JAVA_HOME/bin/ e encontre o executável do jjs e execute o seguinte comando:
$ jjs -fx helloJavaFX.js
Esse script produz o mesmo resultado do código anterior.
Conclusão
Com Java 8 temos uma nova alternativa para escrever aplicações. Claro que o "Olá Mundo" é só o começo, mas teríamos que explorar a nova engine e sua compatibilidade com as APIs Java para construirmos grandes aplicações.Caso você não queira escrever Java, nem Javascript, lembre-se que você poderá usar FXML e a ferramenta Scene Builder.
O código Javascript do Olá mundo está no github
Nenhum comentário:
Postar um comentário