• Save
Java Scripting - Linguagens Interpretadas pelo Java
Upcoming SlideShare
Loading in...5
×
 

Java Scripting - Linguagens Interpretadas pelo Java

on

  • 6,458 views

 

Statistics

Views

Total Views
6,458
Views on SlideShare
6,325
Embed Views
133

Actions

Likes
5
Downloads
5
Comments
0

7 Embeds 133

http://www.jeveaux.com 98
http://dinamicas.emvideos.com.br 19
http://www.slideshare.net 9
http://www.linkedin.com 3
http://feeds.feedburner.com 2
http://localhost 1
http://rnnadaf.ubdtcse.in 1
More...

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

CC Attribution-NonCommercial-ShareAlike LicenseCC Attribution-NonCommercial-ShareAlike LicenseCC Attribution-NonCommercial-ShareAlike License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Java Scripting - Linguagens Interpretadas pelo Java Java Scripting - Linguagens Interpretadas pelo Java Presentation Transcript

    • Java Scripting Linguagens interpretados pelo Java por Paulo César M. Jeveaux
    • Agenda
      • Introdução;
      • Linguagens: Compiladas, Interpretadas e híbridas;
      • JSR 223: Scripting para a plataforma Java;
        • Bean Scripting Framework (BSF);
      • Linguagens de Script:
        • Groovy;
        • JRuby;
        • Jython;
        • JUDOScript;
        • ECMAScript e Rhino;
        • BeanShell;
      • Prós e Contras;
      04/10/2007 Java Scripting
    • Paulo César M. Jeveaux
      • Javanês desde [+-] 2000/01;
      • Mantenedor do Portal Java e do ESJUG
        • http://www.portaljava.com
        • https://esjug.dev.java.net
      • Arquiteto de Sistemas Java EE;
      • Palestrante nos principais eventos Java do país. Participante de diversos grupos e comunidades de Java, Linux e Software Livre em geral.
      04/10/2007 Java Scripting
    • Introdução 04/10/2007 Java Scripting
    • Introdução
      • Escrever código elegante e eficiente em Java não é tarefa das mais simples;
      • Manter a qualidade dos códigos e não distorcer o design especificado para a aplicação é uma tarefa ainda mais difícil;
      • Resolver problemas que exigem solução rápida utlizando APIs Java cujo uso não é tão frequente, geralmente demora mais tempo ou é mais trabalhoso do que o desejado;
      04/10/2007 Java Scripting
    • Introdução
      • Para simplificar e aumentar a produtividade podemos escrever scripts para estas tarefas, que podem ser executados manual ou automaticamente, dentro ou fora da aplicação;
      • Estes scripts podem ser atualizados com maior frequência e mais facilidade, e a performance não é um ponto crítico ;
      04/10/2007 Java Scripting
    • Introdução
      • O processo de escrever um script funcional pode fazer muita diferença na produtividade durante o desenvolvimento de aplicações. Imagine que um simples comando de um determinado script pode ser capaz de “abstrair” parcialmente, ou até mesmo integralmente toda uma API ou framework Java;
      04/10/2007 Java Scripting
    • Domain Specific Languages
      • São criadas com a intenção de remover a complexidade computacional envolvida na resolução de alguma atividade e/ou operação específica para aproximá-las de um determinado domínio do mundo real;
        • Criteria (Hibernate);
        • Regras do IPTABLES;
        • E muitas outras;
      04/10/2007 Java Scripting
      • Compiladas, Interpretadas e Híbridas
      Linguagens 04/10/2007 Java Scripting
    • Linguagens
      • Processo de compilação e execução de uma linguagem compilada
      04/10/2007 Java Scripting
    • Linguagens
      • Processo de execução de uma linguagem interpretada
      04/10/2007 Java Scripting
    • Linguagens
      • Processo de compilação e execução de uma linguagem híbrida
      04/10/2007 Java Scripting
    • Unindo os mundos
      • O que ganhamos com APIs de Scripting no Java?
        • União de linguagens de script com uma linguagem de sistema híbrida (Java);
        • Estas linguagens podem continuar sendo interpretadas dentro ou fora do Java;
        • Podem ser compiladas para bytecodes Java;
      04/10/2007 Java Scripting
      • Scripting API
      JSR 223 04/10/2007 Java Scripting
    • Scripting na plataforma Java
      • JSR 223: Scripting for the Java Platform;
      • A JSR 223 é um framework de scripting que fornece acesso a linguagem de criação de scripts ao Java;
      • Através da JSR 223 é possível localizar maquinas de scripting e invocá-las para rodar scripts em tempo de execução;
      04/10/2007 Java Scripting
    • Scripting na plataforma Java
      • A Scripting API provê suporte Java via a linguagem de criação de scripts de nossa escolha;
      • Há também o Web Scripting Framework que permite que o código script gere o conteúdo Web dentro de qualquer container Servlet;
      04/10/2007 Java Scripting
      • BSF
      Bean Scripting Framework 04/10/2007 Java Scripting
    • Bean Scripting Framework
      • Assim como a especificação da JSR 223, a BSF provê a capacidade de integração de scripts na linguagem Java;
      • Com BSF é possível que a aplicação Java use as máquinas de scripts e que estas máquinas de script também usem os objetos definidos na aplicação Java;
      04/10/2007 Java Scripting
    • Bean Scripting Framework
      • Das diversas linguagens de script que rodam sobre a JVM, muitas geralmente implementam seu próprio modo de interagir com a plataforma Java, criando assim uma dependência entre a aplicação que faz uso de scripts e este modo de interação;
      • O BSF estabelece uma camada comum de ligação entre a plataforma Java e os Scripts sem criar qualquer tipo de dependência entre as partes;
      04/10/2007 Java Scripting
    • Bean Scripting Framework
      • JavaScript (Rhino ECMAScript);
      • NetRexx;
      • Python (Jython);
      • TCL (Jacl);
      • XSLT (Xerces e Xalan);
      • Groovy;
      • PROLOG (JLog);
      • JRuby;
      • JUDOScript;
      • ObjectScript;
      • Linguagens cujo suporte é mantido pelo próprio projeto BSF
      • Linguagens que mantém seu próprio suporte ao BSF
      04/10/2007 Java Scripting
    • Groovy 04/10/2007 Java Scripting
    • Groovy
      • Groovy é uma linguagem de programação, desenvolvida em Java e para a plataforma Java com o propósito de ser uma alternativa a própria linguagem Java;
      • Padronizada na JSR 241;
      • Groovy possui sintaxe similar a de Java, mas baseia-se em características importantes de Python, Ruby e Smalltalk;
      04/10/2007 Java Scripting
    • Groovy
      • Diferente do Java, Groovy possui:
        • Tipagem dinâmica e estática;
        • Suporte nativo a listas, arrays, vetores e expressões regulares;
        • Closures;
        • Sobrecarga de operadores;
        • Suporte e acesso completo a API de Java SE e Java EE;
        • Integrável a programas Java;
      04/10/2007 Java Scripting
    • Groovy
      • Groovy da suporte a outros recursos também, por exemplo:
        • Groovlets: criação de Servlets;
        • GSP: templates semelhantes a JSPs;
        • Grails: Groovy on Rails, framework implementado baseado no Ruby on Rails;
        • Processamento de XML: trata em scripts de forma simples e direta o processamento de arquivos XML;
      04/10/2007 Java Scripting
    • Groovy
      • Sobrecarga de operadores
      • class Numero{
      • def plus(n){
      • print "nao sei somar este numero: "+n }
      • }
      • numero = new Numero();
      • numero+2;
      04/10/2007 Java Scripting
    • Groovy
      • Utilizando um Script Groovy dentro de uma aplicação Java
      • #script.goovy
      • def helloWorld(){println "Hello Groovy";}
      • #alguma classe Java
      • public void metodoExemplo() throws Exception {
      • GroovyClassLoader groovyLoader = new GroovyClassLoader();
      • Class classeProxy = groovyLoader.parseClass( new File("script.groovy"));
      • GroovyObject proxy = (GroovyObject) classeProxy.newInstance();
      • proxy.invokeMethod("helloWorld", null);
      • }
      04/10/2007 Java Scripting
    • JRuby 04/10/2007 Java Scripting
    • Ruby Lang
      • Ruby é uma linguagem de script interpretada que foi projetada para programação OO focando agilidade e rapidez.
        • Sintaxe simples e clara (inspirada em Eiffel e Ada);
        • Possui tratamento de exceções e erros;
        • Totalmente (100%) orientada a objetos;
        • Suporte pleno a Expressões regulares, portável, validação dinâmica de código, etc;
        • “ Princípio de pouca surpresa”, ou seja, as coisas acontecem como você espera;
      04/10/2007 Java Scripting
    • Ruby Lang
      • # Ruby sabe o que voce quer dizer
      • cidades = %w[ Vitoria
      •                Porto Alegre
      •                Porto Seguro
      •                Rio de Janeiro
      •                Blumenau ]
      • conhecidas = %w[Vitoria
      • Porto Alegre]
      • puts "Ainda nao conheco: ",
      •       cities - visited
      04/10/2007 Java Scripting
    • JRuby
      • Implementação 100% Pure-Java da linguagem Ruby para ser executada na JVM;
      • Mantida sob três licenças: CPL, GPL e LGPL;
      • Código JRuby capaz de acessar classes definidas em Java;
      • Código Java capaz de acessar código definido em JRuby, através de Bean Scripting Framework (BSF);
      • JRuby (1.0) 100% compatível com Ruby (1.8.5) e 98% compatível com Ruby on Rails;
      04/10/2007 Java Scripting
    • Jython 04/10/2007 Java Scripting
    • Jython
      • Jython é uma implementação 100% Pure-Java da linguagem de alto nível Python, que pode ser executada na JVM;
      • Jython é uma continuação baseada no antigo projeto JPython, que também era 100% Pure-Java ;
      • Com Jython é possível utilizar recursos do Python diretamente das aplicações Java;
      04/10/2007 Java Scripting
    • Jython
      • Com Jython é possível enriquecer o desenvolvimento de aplicações Java adicionando:
        • Produtividade
          • É possível utilizar as bibliotecas e funcionalidades do Python, além de sua sintaxe simples e fácil dentro da sua aplicação Java, reduzindo complexidade e quantidade de código;
        • Experimentação Interativa
          • Jython fornece um interpretador interativo que pode ser usado para interagir com aplicações Java em execução. Isto permite aos programadores experimentar e depurar qualquer sistema Java usando Jython.
      04/10/2007 Java Scripting
    • Jython
      • Características que diferenciam Jython de outras implementações de linguaguens de script para a JVM:
        • Compilação dinâmina ou estática
          • É possível definir se a compilação dos scripts será feita em tempo de execução ou estaticamente;
        • Herança
          • Permite o uso de classes abstratas do Java para realizar herança nas classes em Jython;
        • Bean Properties
          • Facilita o uso de pacotes Java (packages);
      04/10/2007 Java Scripting
    • Jython
      • D:Developmentjython2.2b2>jython
      • Jython 2.2b2 on java1.6.0
      • Type "copyright", "credits" or "license" for more information.
      • >>> from javax import swing
      • >>> win = swing.JFrame("Janela")
      • >>> label = swing.JLabel("Exemplo Jython")
      • >>> win.add(label)
      • >>> win.size = (200,200)
      • >>> win.show()
      04/10/2007 Java Scripting
    • JUDOScript 04/10/2007 Java Scripting
    • JUDOScript
      • JUDOScript é uma linguagem de script poderosa, fácil, eficiente e, principalmente, moderna, projetada e implementada em 100% Pure-Java;
      • JUDOScript nasceu da necessidade de usar diretamente os recursos da plataforma Java de modo mais fácil. Seu propósito é ser uma linguagem de script mais simples e fácil de usar do que as demais existentes;
      • JUDOScript possui acesso ilimitado aos recursos da plataforma Java;
      04/10/2007 Java Scripting
    • JUDOScript
      • JUDOScript é excelente para combinar e trabalhar com processamento de dados de diversas fontes e formatos diferentes, como processadores de dados e relatórios;
      • JUDOScript está sempre acompanhando as mais novas tendências e novidades do Java;
      04/10/2007 Java Scripting
    • JUDOScript
      • Conectando a um banco de dados e listando uma tabela com JUDOScript
      • const #url = "jdbc:mysql://127.0.0.1/banco";
      • const #user = "usuario";
      • const #pass = "senha";
      • connect to #url, #user, #pass;
      • executeQuery query:
      • select * from tabela;
      • while query.next() {
      • . query.campo;
      • }
      04/10/2007 Java Scripting
    • ECMAScript e Rhino 04/10/2007 Java Scripting
    • ECMAScript
      • European Computer Manufecturers Association – ECMA – é um órgão internacional que estabelece padrões para os formatos utlizados na computação;
      • ECMAScript talvez seja mais conhecida por alguma de suas variantes: JavaScript, Jscript, Rhino, FESI, etc;
      • O ECMAScript é a base de várias linguagens de script, entre elas o JavaScript (Netscape) e Jscript (Microsoft);
      04/10/2007 Java Scripting
    • ECMAScript
      • Usando ECMAScript ou uma de suas variantes, como o JavaScript, por exemplo, é possível desenvolver de modo Orientado a Objetos ou Procedural;
      • Apesar das possibilidades a maior presença e uso massivo das linguagens de script basedas em ECMAScript são feitos de forma procedural, em páginas Web;
      04/10/2007 Java Scripting
    • Rhino
      • Rhino é uma implementação totalmente em Java da linguagem JavaScript;
      • Apesar de ser uma implementação de JavaScript, Rhino implementa o Standard ECMAScript, ou seja, não existem objetos de JavaScript como: window, document e form;
      04/10/2007 Java Scripting
    • Rhino
      • Atualmente o projeto Rhino, mantido pela Mozilla, mantém:
        • Compatibilidade com JavaScript 1.5;
        • Shell para execução de scripts;
        • Manipulação direta de objetos Java;
        • Compilar arquivos JS para bytecodes Java;
      • Executando um script JS com Rhino:
        • java org.mozilla.javascript.tools.shell.Main script.js
      04/10/2007 Java Scripting
    • BeanShell 04/10/2007 Java Scripting
    • BeanShell
      • BeanShell é um interpretador de comandos de script 100% pure-Java ;
      • BeanShell é capaz de interpretar tanto comandos de script quanto comandos de Java;
      • BeanShell também é capaz de tratar em tempo de execução os métodos como objetos, assim como Python;
      • BeanShell pode ser resumidamente chamado de a Linguagem Java dinâmica e interpretada;
      04/10/2007 Java Scripting
    • BeanShell
      • Possui acesso ilimitado a toda API Java
        • Usa a API de Reflection para interpretação de comandos e expressões Java;
      • Funciona com aplicações, console, applets, etc;
      • Tipagem dinâmica;
      • Suporta também o BSF;
      04/10/2007 Java Scripting
    • Outras linguagens de script 04/10/2007 Java Scripting E muitas outras… Linguagem Implementação em Java Awk Jawk JavaScript Rhino Python Jython Ruby JRuby Scheme SISC TCL JACL PHP Quercus JavaScript Templates (JST) TrimPath JST
    • Vantagens e desvantagens 04/10/2007 Java Scripting
    • Vantagens e desvantagens
      • Linguagens de script geralmente são encaradas como ferramentas perfeitas para trabalhos do tipo “rápido, porém sujo” (“quick’n dirty”) de todo tipo.
      • Outra grande utilidade das linguagens de Script é na customização de sistemas, permitindo colocar boa parte das regras de negócio em scripts, separados da base do sistema, que continuará em Java;
      04/10/2007 Java Scripting
    • Vantagens
      • Diversidade de opções
        • Vasta quantidade de linguagens de scripts suportadas;
      • Simplicidade;
      • Redução da curva de aprendizado;
      • Produtividade
        • Com as linguagens de script em quase todos os casos a quantidade de código escrito é significativamente reduzida, além disso, pode-se unir isso com um prévio conhecimento da linguagem de script pelo desenvolvedor, aumentando ainda mais a produtividade;
      04/10/2007 Java Scripting
    • Desvantagens
      • Performance
        • Apesar de muitas das linguagens de script já darem suporte a compilação estática e/ou com o JIT, o desempenho não é como uma implementação em Java;
      • Dificuldade para encontrar erros;
      • Sintaxe não tão clara (às vezes, às vezes)
        • Em algumas situações, por algum comando de script ter muitas funcionalidades implícitas, as leitura do código pode ficar consideravelmente prejudicada;
      04/10/2007 Java Scripting
    • Referências
      • [1] Portal Java – http://www.portaljava.com
      • [2] GUJ – http://www.guj.com.br
      • [3] JVMScript – http://jvmscript.hpg.com.br
        • por Marcio Alexandre Barbosa
      • [4] Ruby Lang – http://www.ruby-lang.org
      • [5] JRuby – http://jruby.org
      • [6] Groovy – http://groovy.codehaus.org
      04/10/2007 Java Scripting
    • Ok. Podem acordar!
      • Muito Obrigado a todos;
      • Contatos:
        • Paulo César M. Jeveaux ( Jevô )
        • [email_address] / [email_address]
        • www.portaljava.com / www.jeveaux.com
      04/10/2007 Java Scripting
    • Java Scripting Linguagens interpretados pelo Java por Paulo César M. Jeveaux