Scripting for the JavaTM Platform
-
Upload
renato-camara -
Category
Documents
-
view
253 -
download
3
Transcript of Scripting for the JavaTM Platform
Scripting for the JavaTM Platform
Summa Technologies
Renato Câmara
www.summa-tech.comMarço 13, 2007
12/02/07
Agenda
• Introdução
• Linguagens de Script
• Motivações para Scripting
• Scripting for the Java Platform
• Demonstração
• Referências
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
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...
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
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
12/02/07 Application Modernization. Proprietary to Summa Technologies, (c) 2005. 7
Usos de Scripting
• Para usuáriosTuning
12/02/07 Application Modernization. Proprietary to Summa Technologies, (c) 2005. 8
Usos de Scripting
• Antes
12/02/07 Application Modernization. Proprietary to Summa Technologies, (c) 2005. 9
Usos de Scripting
• Depois
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?
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”
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
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
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
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
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
12/02/07
Demonstração
• Exemplos
JavaScript
Ruby
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
12/02/07 Application Modernization. Proprietary to Summa Technologies, (c) 2005. 19
Perguntas?
http://blog.renatocamara.com.br
www.summa-tech.com