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

Like this? Share it with your network

Share

Java Scripting - Linguagens Interpretadas pelo Java

on

  • 6,534 views

 

Statistics

Views

Total Views
6,534
Views on SlideShare
6,401
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 Presentation Transcript

  • 1. Java Scripting Linguagens interpretados pelo Java por Paulo César M. Jeveaux
  • 2. 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
  • 3. 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
  • 4. Introdução 04/10/2007 Java Scripting
  • 5. 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
  • 6. 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
  • 7. 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
  • 8. 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
  • 9.
    • Compiladas, Interpretadas e Híbridas
    Linguagens 04/10/2007 Java Scripting
  • 10. Linguagens
    • Processo de compilação e execução de uma linguagem compilada
    04/10/2007 Java Scripting
  • 11. Linguagens
    • Processo de execução de uma linguagem interpretada
    04/10/2007 Java Scripting
  • 12. Linguagens
    • Processo de compilação e execução de uma linguagem híbrida
    04/10/2007 Java Scripting
  • 13. 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
  • 14.
    • Scripting API
    JSR 223 04/10/2007 Java Scripting
  • 15. 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
  • 16. 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
  • 17.
    • BSF
    Bean Scripting Framework 04/10/2007 Java Scripting
  • 18. 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
  • 19. 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
  • 20. 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
  • 21. Groovy 04/10/2007 Java Scripting
  • 22. 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
  • 23. 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
  • 24. 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
  • 25. 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
  • 26. 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
  • 27. JRuby 04/10/2007 Java Scripting
  • 28. 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
  • 29. 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
  • 30. 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
  • 31. Jython 04/10/2007 Java Scripting
  • 32. 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
  • 33. 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
  • 34. 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
  • 35. 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
  • 36. JUDOScript 04/10/2007 Java Scripting
  • 37. 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
  • 38. 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
  • 39. 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
  • 40. ECMAScript e Rhino 04/10/2007 Java Scripting
  • 41. 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
  • 42. 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
  • 43. 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
  • 44. 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
  • 45. BeanShell 04/10/2007 Java Scripting
  • 46. 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
  • 47. 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
  • 48. 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
  • 49. Vantagens e desvantagens 04/10/2007 Java Scripting
  • 50. 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
  • 51. 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
  • 52. 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
  • 53. 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
  • 54. 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
  • 55. Java Scripting Linguagens interpretados pelo Java por Paulo César M. Jeveaux