Scripting for the JavaTM Platform

325 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
325
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
1
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • Muitas scripting languages são dinamicamente tipadas. Você pode criar uma variável sem pré-determinar o tipo e reusar a variável para armazenar valores de diferentes “tipos” Também scripting languages tende a executar muitas converções automaticamente, ex: 10 para texto “10”. Essas qualidades de scripting languages ajuda a escrever mais rapidamente aplicações. Processo tradicional “editar-compilar-relacionar-rodar”, sendo interpretada o processo de “compilação” é eliminado.
  • A manutenção pode ser uma situação custosa se o scripting for muito complexo. Separação dos scripts em diretórios, inclusive cada linguagem deve ter seu diretório. Padronização? O suporte a scripting no Java permite você usar no mesmo projeto várias linguagens scripts. Exemplos!!!
  • O java SE 6 lançado recentimente vem com diversas novidades. Mais funcionalidades, mais performance e SUPORTE A SCRIPT. Falar a famosa frase, “Scripting in Java basicamente permite acessar e controlar objetos Java dentro de um ambiente scripting, ou seja embutindo ambietes scripting dentro de aplicações Java”.
  • ScriptEngineManager é a classe que implementa um mecanismo de pesquisa e inicialização de uma determinada ScriptEngine. ScriptEngine é a interface fundamental que cujo os métodos devem ser funcionais. Estes métodos fornece a funcionalidade básica de scripting. Todas Script Engine deve fornecer a implemetação dessa interface. Isto é obedecer a especificação.
  • ScriptEngineManager é a classe que implementa um mecanismo de pesquisa e inicialização de uma ScriptEngine. ScriptEngine é a interface fundamental, cujo os métodos são métodos funcionais e que cada ScriptEngine de uma linguagem deve implementar. ScriptContext é a interface que permite ligar diversos bindings e escopos para uma determinada ScriptEngine. Bindings é a interface que permite a ligação entre variáveis script com objetos Java.
  • ScriptEngine é a interface fundamental que cujo os métodos devem ser funcionais. Estes métodos fornece a funcionalidade básica de scripting. Todas Script Engine deve fornecer a implemetação dessa interface. Isto é obedecer a especificação. - Invocable é a interface que permite invocar funções e métodos em scripts.
  • Scripting for the JavaTM Platform

    1. 1. Scripting for the JavaTM Platform Summa Technologies Renato Câmara www.summa-tech.com Março 13, 2007
    2. 2. Agenda • Introdução • Linguagens de Script • Motivações para Scripting • Scripting for the Java Platform • Demonstração • Referências12/02/07
    3. 3. Linguagens de Script • Interpretadas • Dinamicamente tipadas • Conversões automáticas • Codificação rápida • Simplicidade12/02/07 Application Modernization. Proprietary to Summa Technologies, (c) 2005. 3
    4. 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. 4
    5. 5. Motivações para Scripting • Customizável  Clientes alteram regras voláteis  Usuários melhoram a aplicação • Edição em tempo real  Desenvolvedores aceleram construção12/02/07 Application Modernization. Proprietary to Summa Technologies, (c) 2005. 5
    6. 6. Usos de Scripting • Regras de negócio  Cálculos  Validações  Fluxos • Para desenvolvedores  Tarefas comuns e repetitivas  Produtividade12/02/07 Application Modernization. Proprietary to Summa Technologies, (c) 2005. 6
    7. 7. Usos de Scripting • Para usuários  Tuning12/02/07 Application Modernization. Proprietary to Summa Technologies, (c) 2005. 7
    8. 8. Usos de Scripting • Antes12/02/07 Application Modernization. Proprietary to Summa Technologies, (c) 2005. 8
    9. 9. Usos de Scripting • Depois12/02/07 Application Modernization. Proprietary to Summa Technologies, (c) 2005. 9
    10. 10. Desvantagens? • Uso versus Abuso  Manutençã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. 10
    11. 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. 11
    12. 12. Scripting for the Java Platformimport javax.script.*;public class ScriptUsage { public static void main(String[] args) throwsScriptException { // 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)"); }}12/02/07 Application Modernization. Proprietary to Summa Technologies, (c) 2005. 12
    13. 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 script12/02/07 Application Modernization. Proprietary to Summa Technologies, (c) 2005. 13
    14. 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 scripts12/02/07 Application Modernization. Proprietary to Summa Technologies, (c) 2005. 14
    15. 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 Scope12/02/07 Application Modernization. Proprietary to Summa Technologies, (c) 2005. 15
    16. 16. Demonstração • Ferramentas do SDK  jrunscript • Console para testes • Execução de scripts12/02/07 Application Modernization. Proprietary to Summa Technologies, (c) 2005. 16
    17. 17. Demonstração • Exemplos  JavaScript  Ruby12/02/07
    18. 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/rhino12/02/07 Application Modernization. Proprietary to Summa Technologies, (c) 2005. 18
    19. 19. Perguntas? camara@summa-tech.com http://blog.renatocamara.com.br www.summa-tech.com12/02/07 Application Modernization. Proprietary to Summa Technologies, (c) 2005. 19

    ×