SlideShare uma empresa Scribd logo
1 de 19
Scripting for the JavaTM
        Platform
     Summa Technologies
       Renato Câmara
     www.summa-tech.com
        Março 13, 2007
Agenda
       • Introdução
       • Linguagens de Script
       • Motivações para Scripting
       • Scripting for the Java Platform
       • Demonstração
       • Referências



12/02/07
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.   3
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
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ção




12/02/07            Application Modernization. Proprietary to Summa Technologies, (c) 2005.   5
Usos de Scripting
           • Regras de negócio
              Cálculos
              Validações
              Fluxos

           • Para desenvolvedores
              Tarefas comuns e repetitivas
              Produtividade




12/02/07            Application Modernization. Proprietary to Summa Technologies, (c) 2005.   6
Usos de Scripting
           • Para usuários
              Tuning




12/02/07            Application Modernization. Proprietary to Summa Technologies, (c) 2005.   7
Usos de Scripting
           • Antes




12/02/07             Application Modernization. Proprietary to Summa Technologies, (c) 2005.   8
Usos de Scripting
           • Depois




12/02/07              Application Modernization. Proprietary to Summa Technologies, (c) 2005.   9
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
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
Scripting for the Java Platform
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')");
      }
}

12/02/07                Application Modernization. Proprietary to Summa Technologies, (c) 2005.   12
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.   13
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.   14
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.   15
Demonstração
       • Ferramentas do SDK
            jrunscript
              • Console para testes
              • Execução de scripts




12/02/07           Application Modernization. Proprietary to Summa Technologies, (c) 2005.   16
Demonstração
           • Exemplos
              JavaScript
              Ruby




12/02/07
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.   18
Perguntas?

              camara@summa-tech.com
           http://blog.renatocamara.com.br
                www.summa-tech.com


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

Mais conteúdo relacionado

Destaque

Taller 1
Taller 1Taller 1
Taller 1eflopez
 
Estrenos de peliculas
Estrenos de peliculasEstrenos de peliculas
Estrenos de peliculasEmily Baldeon
 
Mito repaginado monet128 - novembro2013
Mito repaginado   monet128 - novembro2013Mito repaginado   monet128 - novembro2013
Mito repaginado monet128 - novembro2013Raquel Temistocles
 
Manu muñoz
Manu muñozManu muñoz
Manu muñozmamuuuuu
 
Independencia de américa latina
Independencia de américa latinaIndependencia de américa latina
Independencia de américa latinaritmoypoesiaa
 
Trastornosdelaconducta
TrastornosdelaconductaTrastornosdelaconducta
TrastornosdelaconductaYGLESIAS
 
Trabajo revista
Trabajo revistaTrabajo revista
Trabajo revistaAniss Cdlm
 
Olimpiadas 2012 Medicina del Viajero
Olimpiadas 2012 Medicina del ViajeroOlimpiadas 2012 Medicina del Viajero
Olimpiadas 2012 Medicina del Viajerocapvunam
 
Pneumopatias ocupacionais
Pneumopatias ocupacionaisPneumopatias ocupacionais
Pneumopatias ocupacionaisCosmo Palasio
 
Presentador local y en línea.
Presentador local y en línea.Presentador local y en línea.
Presentador local y en línea.Lucila Lopez
 
Gerenciamento de riscos em obra de construção
Gerenciamento de riscos em obra de construçãoGerenciamento de riscos em obra de construção
Gerenciamento de riscos em obra de construçãoCosmo Palasio
 
Herramientas web para periodistas
Herramientas web para periodistasHerramientas web para periodistas
Herramientas web para periodistasdennisearjona
 

Destaque (20)

Taller 1
Taller 1Taller 1
Taller 1
 
Modelo TPACK
Modelo TPACKModelo TPACK
Modelo TPACK
 
Estrenos de peliculas
Estrenos de peliculasEstrenos de peliculas
Estrenos de peliculas
 
Mito repaginado monet128 - novembro2013
Mito repaginado   monet128 - novembro2013Mito repaginado   monet128 - novembro2013
Mito repaginado monet128 - novembro2013
 
Halloween
HalloweenHalloween
Halloween
 
Paula
Paula Paula
Paula
 
Rvs -aula_02
Rvs  -aula_02Rvs  -aula_02
Rvs -aula_02
 
Manu muñoz
Manu muñozManu muñoz
Manu muñoz
 
El plagio
El plagioEl plagio
El plagio
 
Independencia de américa latina
Independencia de américa latinaIndependencia de américa latina
Independencia de américa latina
 
Trastornosdelaconducta
TrastornosdelaconductaTrastornosdelaconducta
Trastornosdelaconducta
 
Trabajo revista
Trabajo revistaTrabajo revista
Trabajo revista
 
Olimpiadas 2012 Medicina del Viajero
Olimpiadas 2012 Medicina del ViajeroOlimpiadas 2012 Medicina del Viajero
Olimpiadas 2012 Medicina del Viajero
 
Pneumopatias ocupacionais
Pneumopatias ocupacionaisPneumopatias ocupacionais
Pneumopatias ocupacionais
 
Presentador local y en línea.
Presentador local y en línea.Presentador local y en línea.
Presentador local y en línea.
 
El plagio
El plagioEl plagio
El plagio
 
Gerenciamento de riscos em obra de construção
Gerenciamento de riscos em obra de construçãoGerenciamento de riscos em obra de construção
Gerenciamento de riscos em obra de construção
 
1.apresenta sgpe
1.apresenta sgpe1.apresenta sgpe
1.apresenta sgpe
 
Como estudar
Como estudarComo estudar
Como estudar
 
Herramientas web para periodistas
Herramientas web para periodistasHerramientas web para periodistas
Herramientas web para periodistas
 

Semelhante a Scripting for the JavaTM Platform

Arquitetura de Microservicos
Arquitetura de MicroservicosArquitetura de Microservicos
Arquitetura de MicroservicosNorberto Enomoto
 
Plataforma Android: Produtividade Além do SDK
Plataforma Android: Produtividade Além do SDKPlataforma Android: Produtividade Além do SDK
Plataforma Android: Produtividade Além do SDKRyan Padilha
 
TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...
TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...
TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...tdc-globalcode
 
Jsf com hibernate, spring security e maven
Jsf com hibernate, spring security e mavenJsf com hibernate, spring security e maven
Jsf com hibernate, spring security e mavenLeandro Costa
 
Boas Práticas em Aplicações na Nuvem: Twelve-Factor App - Março-2021
Boas Práticas em Aplicações na Nuvem: Twelve-Factor App - Março-2021Boas Práticas em Aplicações na Nuvem: Twelve-Factor App - Março-2021
Boas Práticas em Aplicações na Nuvem: Twelve-Factor App - Março-2021Renato Groffe
 
Arquitetura de Microserviços
Arquitetura de MicroserviçosArquitetura de Microserviços
Arquitetura de MicroserviçosNorberto Enomoto
 
Frameworks Opensource: ferramentas para desenvolvimento rápido de aplicações Web
Frameworks Opensource: ferramentas para desenvolvimento rápido de aplicações WebFrameworks Opensource: ferramentas para desenvolvimento rápido de aplicações Web
Frameworks Opensource: ferramentas para desenvolvimento rápido de aplicações WebJairo Junior
 
Bancos de Dados em “Clouds”
Bancos de Dados em “Clouds”Bancos de Dados em “Clouds”
Bancos de Dados em “Clouds”elliando dias
 
Frameworks de desenvolvimento web
Frameworks de desenvolvimento webFrameworks de desenvolvimento web
Frameworks de desenvolvimento webArlindo Santos
 
Boas Práticas em Aplicações na Nuvem: Twelve-Factor App | TDC Connections 2021
Boas Práticas em Aplicações na Nuvem: Twelve-Factor App | TDC Connections 2021Boas Práticas em Aplicações na Nuvem: Twelve-Factor App | TDC Connections 2021
Boas Práticas em Aplicações na Nuvem: Twelve-Factor App | TDC Connections 2021Renato Groffe
 
Arquitetura de Microserviços
Arquitetura de MicroserviçosArquitetura de Microserviços
Arquitetura de MicroserviçosNorberto Enomoto
 
[JS EXPERIENCE 2018] Do jQuery aos microfrontends: os desafios de manter uma ...
[JS EXPERIENCE 2018] Do jQuery aos microfrontends: os desafios de manter uma ...[JS EXPERIENCE 2018] Do jQuery aos microfrontends: os desafios de manter uma ...
[JS EXPERIENCE 2018] Do jQuery aos microfrontends: os desafios de manter uma ...iMasters
 
Testes automatizados.pptx
Testes automatizados.pptxTestes automatizados.pptx
Testes automatizados.pptxCarlos Gonzaga
 

Semelhante a Scripting for the JavaTM Platform (20)

Arquitetura de Microservicos
Arquitetura de MicroservicosArquitetura de Microservicos
Arquitetura de Microservicos
 
Plataforma Android: Produtividade Além do SDK
Plataforma Android: Produtividade Além do SDKPlataforma Android: Produtividade Além do SDK
Plataforma Android: Produtividade Além do SDK
 
Front end architecture
Front end architectureFront end architecture
Front end architecture
 
TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...
TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...
TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...
 
Jsf com hibernate, spring security e maven
Jsf com hibernate, spring security e mavenJsf com hibernate, spring security e maven
Jsf com hibernate, spring security e maven
 
Java v1.1
Java v1.1Java v1.1
Java v1.1
 
Boas Práticas em Aplicações na Nuvem: Twelve-Factor App - Março-2021
Boas Práticas em Aplicações na Nuvem: Twelve-Factor App - Março-2021Boas Práticas em Aplicações na Nuvem: Twelve-Factor App - Março-2021
Boas Práticas em Aplicações na Nuvem: Twelve-Factor App - Março-2021
 
JavaME - Aula 1
JavaME - Aula 1JavaME - Aula 1
JavaME - Aula 1
 
Arquitetura de Microserviços
Arquitetura de MicroserviçosArquitetura de Microserviços
Arquitetura de Microserviços
 
Frameworks Opensource: ferramentas para desenvolvimento rápido de aplicações Web
Frameworks Opensource: ferramentas para desenvolvimento rápido de aplicações WebFrameworks Opensource: ferramentas para desenvolvimento rápido de aplicações Web
Frameworks Opensource: ferramentas para desenvolvimento rápido de aplicações Web
 
Bancos de Dados em “Clouds”
Bancos de Dados em “Clouds”Bancos de Dados em “Clouds”
Bancos de Dados em “Clouds”
 
B Ds Clouds
B Ds CloudsB Ds Clouds
B Ds Clouds
 
Frameworks de desenvolvimento web
Frameworks de desenvolvimento webFrameworks de desenvolvimento web
Frameworks de desenvolvimento web
 
Boas Práticas em Aplicações na Nuvem: Twelve-Factor App | TDC Connections 2021
Boas Práticas em Aplicações na Nuvem: Twelve-Factor App | TDC Connections 2021Boas Práticas em Aplicações na Nuvem: Twelve-Factor App | TDC Connections 2021
Boas Práticas em Aplicações na Nuvem: Twelve-Factor App | TDC Connections 2021
 
Java(2)
Java(2)Java(2)
Java(2)
 
2672853-apostila-completa-de-Java
2672853-apostila-completa-de-Java2672853-apostila-completa-de-Java
2672853-apostila-completa-de-Java
 
Arquitetura de Microserviços
Arquitetura de MicroserviçosArquitetura de Microserviços
Arquitetura de Microserviços
 
[JS EXPERIENCE 2018] Do jQuery aos microfrontends: os desafios de manter uma ...
[JS EXPERIENCE 2018] Do jQuery aos microfrontends: os desafios de manter uma ...[JS EXPERIENCE 2018] Do jQuery aos microfrontends: os desafios de manter uma ...
[JS EXPERIENCE 2018] Do jQuery aos microfrontends: os desafios de manter uma ...
 
Testes automatizados.pptx
Testes automatizados.pptxTestes automatizados.pptx
Testes automatizados.pptx
 
Mc1 JAVA
Mc1 JAVAMc1 JAVA
Mc1 JAVA
 

Scripting for the JavaTM Platform

  • 1. Scripting for the JavaTM Platform Summa Technologies Renato Câmara www.summa-tech.com Março 13, 2007
  • 2. Agenda • Introdução • Linguagens de Script • Motivações para Scripting • Scripting for the Java Platform • Demonstração • Referências 12/02/07
  • 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. 3
  • 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. 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ção 12/02/07 Application Modernization. Proprietary to Summa Technologies, (c) 2005. 5
  • 6. Usos de Scripting • Regras de negócio  Cálculos  Validações  Fluxos • Para desenvolvedores  Tarefas comuns e repetitivas  Produtividade 12/02/07 Application Modernization. Proprietary to Summa Technologies, (c) 2005. 6
  • 7. Usos de Scripting • Para usuários  Tuning 12/02/07 Application Modernization. Proprietary to Summa Technologies, (c) 2005. 7
  • 8. Usos de Scripting • Antes 12/02/07 Application Modernization. Proprietary to Summa Technologies, (c) 2005. 8
  • 9. Usos de Scripting • Depois 12/02/07 Application Modernization. Proprietary to Summa Technologies, (c) 2005. 9
  • 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. 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. Scripting for the Java Platform 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')"); } } 12/02/07 Application Modernization. Proprietary to Summa Technologies, (c) 2005. 12
  • 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. 13
  • 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. 14
  • 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. 15
  • 16. Demonstração • Ferramentas do SDK  jrunscript • Console para testes • Execução de scripts 12/02/07 Application Modernization. Proprietary to Summa Technologies, (c) 2005. 16
  • 17. Demonstração • Exemplos  JavaScript  Ruby 12/02/07
  • 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. 18
  • 19. Perguntas? camara@summa-tech.com http://blog.renatocamara.com.br www.summa-tech.com 12/02/07 Application Modernization. Proprietary to Summa Technologies, (c) 2005. 19

Notas do Editor

  1. 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.
  2. 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!!!
  3. 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”.
  4. 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.
  5. 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.
  6. 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.