Scripting for the JavaTM Platform

19
Scripting for the JavaTM Platform Summa Technologies Renato Câmara www.summa-tech.com Março 13, 2007

Transcript of Scripting for the JavaTM Platform

Page 1: Scripting for the JavaTM Platform

Scripting for the JavaTM Platform

Summa Technologies

Renato Câmara

www.summa-tech.comMarço 13, 2007

Page 2: Scripting for the JavaTM Platform

12/02/07

Agenda

• Introdução

• Linguagens de Script

• Motivações para Scripting

• Scripting for the Java Platform

• Demonstração

• Referências

Page 3: Scripting for the JavaTM Platform

12/02/07 Application Modernization. Proprietary to Summa Technologies, (c) 2005. 3

Linguagens de Script

• Interpretadas

• Dinamicamente tipadas

• Conversões automáticas

• Codificação rápida

• Simplicidade

Page 4: Scripting for the JavaTM Platform

12/02/07 Application Modernization. Proprietary to Summa Technologies, (c) 2005. 4

Linguagens de Script

• Diversidade• Javascript• Ruby• PHP• Perl• Python• BeanShell• AWK• Groovy• TCL• Jelly• Outras...

Page 5: Scripting for the JavaTM Platform

12/02/07 Application Modernization. Proprietary to Summa Technologies, (c) 2005. 5

Motivações para Scripting

• CustomizávelClientes alteram regras voláteisUsuários melhoram a aplicação

• Edição em tempo realDesenvolvedores aceleram construção

Page 6: Scripting for the JavaTM Platform

12/02/07 Application Modernization. Proprietary to Summa Technologies, (c) 2005. 6

Usos de Scripting

• Regras de negócioCálculosValidaçõesFluxos

• Para desenvolvedoresTarefas comuns e repetitivasProdutividade

Page 7: Scripting for the JavaTM Platform

12/02/07 Application Modernization. Proprietary to Summa Technologies, (c) 2005. 7

Usos de Scripting

• Para usuáriosTuning

Page 8: Scripting for the JavaTM Platform

12/02/07 Application Modernization. Proprietary to Summa Technologies, (c) 2005. 8

Usos de Scripting

• Antes

Page 9: Scripting for the JavaTM Platform

12/02/07 Application Modernization. Proprietary to Summa Technologies, (c) 2005. 9

Usos de Scripting

• Depois

Page 10: Scripting for the JavaTM Platform

12/02/07 Application Modernization. Proprietary to Summa Technologies, (c) 2005. 10

Desvantagens?

• Uso versus AbusoManutenção

• É possível

Controle• Organize a infra-estrutura do projeto

Padronização• Escolher uma única linguagem?

Page 11: Scripting for the JavaTM Platform

12/02/07 Application Modernization. Proprietary to Summa Technologies, (c) 2005. 11

Scripting for the Java Platform

• JSR 223

• JSE 6: Mustang

Javascript: Mozilla Rhino

• JSE 5: Tiger

• Integração plugável

Terceiros implementam “engines”

Page 12: Scripting for the JavaTM Platform

12/02/07 Application Modernization. Proprietary to Summa Technologies, (c) 2005. 12

import javax.script.*;

public class ScriptUsage {

public static void main(String[] args) throws ScriptException { // cria um gerenciador de ScriptEngine. ScriptEngineManager sem = new ScriptEngineManager();

//cria o JavaScript Engine.

ScriptEngine engine = sem.getEngineByExtension("js"); //executa o script.

engine.eval("print('hello world')"); }}

Scripting for the Java Platform

Page 13: Scripting for the JavaTM Platform

12/02/07 Application Modernization. Proprietary to Summa Technologies, (c) 2005. 13

Scripting for the Java Platform

• API da Scripting Platform:

ScriptEngineManager

• Objetos que localizam e instanciam Script Engines

ScriptEngine

• Objeto que executa os scripts

Bindings

• Ligação entre variáveis do script e objetos Java

ScriptContext

• Aplicação Java acessa contexto do script

Page 14: Scripting for the JavaTM Platform

12/02/07 Application Modernization. Proprietary to Summa Technologies, (c) 2005. 14

Scripting for the Java Platform

• ScriptEngine

Principal interface do Scripting Framework

Executa os scripts: método eval

Mapeia (“bind”) objetos Java a variáveis do

script (put / get)

Engine Scope

• Invocable - opcional

Permite invocar funções e métodos em

scripts

Page 15: Scripting for the JavaTM Platform

12/02/07 Application Modernization. Proprietary to Summa Technologies, (c) 2005. 15

Scripting for the Java Platform

• ScriptEngineManager

Implementa mecanismo de pesquisa e

instanciação dos ScriptEngines• Mecanismo de serviço (service provider)

• Localiza por:

– Nome

– Extensão

– Tipo (MIME Type)

Mantém num escopo global, variáveis (binds)

de objetos: Global Scope

Page 16: Scripting for the JavaTM Platform

12/02/07 Application Modernization. Proprietary to Summa Technologies, (c) 2005. 16

Demonstração

• Ferramentas do SDK

jrunscript• Console para testes

• Execução de scripts

Page 17: Scripting for the JavaTM Platform

12/02/07

Demonstração

• Exemplos

JavaScript

Ruby

Page 18: Scripting for the JavaTM Platform

12/02/07 Application Modernization. Proprietary to Summa Technologies, (c) 2005. 18

Referências

• Scripting for Java: JSR 223

http://scripting.dev.java.net

http://jcp.org/en/jsr/detail?id=223

• Ruby for Java

http://jruby.sourceforge.net

• Javascript Rhino

http://www.mozilla.org/rhino

Page 19: Scripting for the JavaTM Platform

12/02/07 Application Modernization. Proprietary to Summa Technologies, (c) 2005. 19

Perguntas?

[email protected]

http://blog.renatocamara.com.br

www.summa-tech.com