A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Java Scripting Linguagens interpretados pelo Java

Apresentações semelhantes


Apresentação em tema: "Java Scripting Linguagens interpretados pelo Java"— Transcrição da apresentação:

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; Java Scripting 04/10/2007

3 Paulo César M. Jeveaux Javanês desde [+-] 2000/01;
Mantenedor do Portal Java e do ESJUG 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. Java Scripting 04/10/2007

4 Introdução Java Scripting 04/10/2007

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; Java Scripting 04/10/2007

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; Java Scripting 04/10/2007

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; Java Scripting 04/10/2007

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; Java Scripting 04/10/2007

9 Linguagens Compiladas, Interpretadas e Híbridas Java Scripting
04/10/2007

10 Linguagens Compilador Código Fonte Executável Sistema Operacional
Processo de compilação e execução de uma linguagem compilada Executável Sistema Operacional Hardware Java Scripting 04/10/2007

11 Linguagens Interpretador Código Fonte Sistema Operacional Hardware
Processo de execução de uma linguagem interpretada Sistema Operacional Hardware Java Scripting 04/10/2007

12 Linguagens Compilador Código Fonte Executável Interpretador
Processo de compilação e execução de uma linguagem híbrida Executável Interpretador Sistema Operacional Hardware Java Scripting 04/10/2007

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; Java Scripting 04/10/2007

14 JSR 223 Scripting API Java Scripting 04/10/2007

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; Java Scripting 04/10/2007

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; Java Scripting 04/10/2007

17 Bean Scripting Framework
BSF Java Scripting 04/10/2007

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; Java Scripting 04/10/2007

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; Java Scripting 04/10/2007

20 Bean Scripting Framework
Linguagens cujo suporte é mantido pelo próprio projeto BSF Linguagens que mantém seu próprio suporte ao BSF JavaScript (Rhino ECMAScript); NetRexx; Python (Jython); TCL (Jacl); XSLT (Xerces e Xalan); Groovy; PROLOG (JLog); JRuby; JUDOScript; ObjectScript; Java Scripting 04/10/2007

21 Groovy Java Scripting 04/10/2007

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; Java Scripting 04/10/2007

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; Java Scripting 04/10/2007

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; Java Scripting 04/10/2007

25 Groovy Sobrecarga de operadores class Numero{ def plus(n){ print "nao sei somar este numero: "+n } } numero = new Numero(); numero+2; Java Scripting 04/10/2007

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); } Java Scripting 04/10/2007

27 JRuby Java Scripting 04/10/2007

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; Java Scripting 04/10/2007

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 Java Scripting 04/10/2007

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; Java Scripting 04/10/2007

31 Jython Java Scripting 04/10/2007

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; Java Scripting 04/10/2007

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. Java Scripting 04/10/2007

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); Java Scripting 04/10/2007

35 Jython D:\Development\jython2.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() Java Scripting 04/10/2007

36 JUDOScript Java Scripting 04/10/2007

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; Java Scripting 04/10/2007

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; Java Scripting 04/10/2007

39 JUDOScript Conectando a um banco de dados e listando uma tabela com JUDOScript const #url = "jdbc:mysql:// /banco" ; const #user = "usuario"; const #pass = "senha"; connect to #url, #user, #pass; executeQuery query: select * from tabela; while query.next() { . query.campo; } Java Scripting 04/10/2007

40 ECMAScript e Rhino Java Scripting 04/10/2007

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); Java Scripting 04/10/2007

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; Java Scripting 04/10/2007

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; Java Scripting 04/10/2007

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 Java Scripting 04/10/2007

45 BeanShell Java Scripting 04/10/2007

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; Java Scripting 04/10/2007

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; Java Scripting 04/10/2007

48 Outras linguagens de script
Linguagem Implementação em Java Awk Jawk JavaScript Rhino Python Jython Ruby JRuby Scheme SISC TCL JACL PHP Quercus JavaScript Templates (JST) TrimPath JST E muitas outras… Java Scripting 04/10/2007

49 Vantagens e desvantagens
Java Scripting 04/10/2007

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; Java Scripting 04/10/2007

51 Vantagens Diversidade de opções Simplicidade;
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; Java Scripting 04/10/2007

52 Desvantagens Performance Dificuldade para encontrar erros;
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; Java Scripting 04/10/2007

53 Referências [1] Portal Java – http://www.portaljava.com
[2] GUJ – [3] JVMScript – por Marcio Alexandre Barbosa [4] Ruby Lang – [5] JRuby – [6] Groovy – Java Scripting 04/10/2007

54 Ok. Podem acordar! Muito Obrigado a todos; Contatos:
Paulo César M. Jeveaux (Jevô) / / Java Scripting 04/10/2007

55 Java Scripting Linguagens interpretados pelo Java
por Paulo César M. Jeveaux


Carregar ppt "Java Scripting Linguagens interpretados pelo Java"

Apresentações semelhantes


Anúncios Google