java scripting linguagens interpretados pelo java por paulo césar m. jeveaux

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

Upload: internet

Post on 18-Apr-2015

110 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Java Scripting Linguagens interpretados pelo Java por Paulo César M. Jeveaux

Java ScriptingLinguagens interpretados pelo Java

por Paulo César M. Jeveaux

Page 2: Java Scripting Linguagens interpretados pelo Java por Paulo César M. Jeveaux

Java Scripting

2

Agenda

04/10/2007

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;

Page 3: Java Scripting Linguagens interpretados pelo Java por Paulo César M. Jeveaux

Java Scripting

3

Paulo César M. Jeveaux

04/10/2007

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.

Page 4: Java Scripting Linguagens interpretados pelo Java por Paulo César M. Jeveaux

4

Java Scripting

Introdução

04/10/2007

Page 5: Java Scripting Linguagens interpretados pelo Java por Paulo César M. Jeveaux

Java Scripting

5

Introdução

04/10/2007

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;

Page 6: Java Scripting Linguagens interpretados pelo Java por Paulo César M. Jeveaux

Java Scripting

6

Introdução

04/10/2007

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;

Page 7: Java Scripting Linguagens interpretados pelo Java por Paulo César M. Jeveaux

Java Scripting

7

Introdução

04/10/2007

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;

Page 8: Java Scripting Linguagens interpretados pelo Java por Paulo César M. Jeveaux

Java Scripting

8

Domain Specific Languages

04/10/2007

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;

Page 9: Java Scripting Linguagens interpretados pelo Java por Paulo César M. Jeveaux

9

Java Scripting

Compiladas, Interpretadas e Híbridas

Linguagens

04/10/2007

Page 10: Java Scripting Linguagens interpretados pelo Java por Paulo César M. Jeveaux

Java Scripting

10

Linguagens

04/10/2007

Processo de compilação e execução de uma linguagem compilada

Har

dwar

eSist

ema

Ope

raci

onal

Código Fonte Com

pila

dor

Exec

utáv

el

Page 11: Java Scripting Linguagens interpretados pelo Java por Paulo César M. Jeveaux

Java Scripting

11

Linguagens

04/10/2007

Processo de execução de uma linguagem interpretada

Har

dwar

eSist

ema

Ope

raci

onal

Código Fonte Inte

rpre

tad

or

Page 12: Java Scripting Linguagens interpretados pelo Java por Paulo César M. Jeveaux

Java Scripting

12

Linguagens

04/10/2007

Processo de compilação e execução de uma linguagem híbrida

Har

dwar

eSist

ema

Ope

raci

onal

Código Fonte

Com

pila

dor

Inte

rpre

tado

r

Exec

utáv

el

Page 13: Java Scripting Linguagens interpretados pelo Java por Paulo César M. Jeveaux

Java Scripting

13

Unindo os mundos

04/10/2007

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;

Page 14: Java Scripting Linguagens interpretados pelo Java por Paulo César M. Jeveaux

14

Java Scripting

Scripting API

JSR 223

04/10/2007

Page 15: Java Scripting Linguagens interpretados pelo Java por Paulo César M. Jeveaux

Java Scripting

15

Scripting na plataforma Java

04/10/2007

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;

Page 16: Java Scripting Linguagens interpretados pelo Java por Paulo César M. Jeveaux

Java Scripting

16

Scripting na plataforma Java

04/10/2007

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;

Page 17: Java Scripting Linguagens interpretados pelo Java por Paulo César M. Jeveaux

17

Java Scripting

BSF

Bean Scripting Framework

04/10/2007

Page 18: Java Scripting Linguagens interpretados pelo Java por Paulo César M. Jeveaux

Java Scripting

18

Bean Scripting Framework

04/10/2007

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;

Page 19: Java Scripting Linguagens interpretados pelo Java por Paulo César M. Jeveaux

Java Scripting

19

Bean Scripting Framework

04/10/2007

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;

Page 20: Java Scripting Linguagens interpretados pelo Java por Paulo César M. Jeveaux

20

Java Scripting

Bean Scripting Framework

JavaScript (Rhino ECMAScript);

NetRexx; Python (Jython); TCL (Jacl); XSLT (Xerces e

Xalan);

Groovy; PROLOG (JLog); JRuby; JUDOScript; ObjectScript;

04/10/2007

Linguagens cujo suporte é mantido pelo próprio projeto BSF

Linguagens que mantém seu próprio suporte ao BSF

Page 21: Java Scripting Linguagens interpretados pelo Java por Paulo César M. Jeveaux

21

Java Scripting

Groovy

04/10/2007

Page 22: Java Scripting Linguagens interpretados pelo Java por Paulo César M. Jeveaux

Java Scripting

22

Groovy

04/10/2007

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;

Page 23: Java Scripting Linguagens interpretados pelo Java por Paulo César M. Jeveaux

Java Scripting

23

Groovy

04/10/2007

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;

Page 24: Java Scripting Linguagens interpretados pelo Java por Paulo César M. Jeveaux

Java Scripting

24

Groovy

04/10/2007

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;

Page 25: Java Scripting Linguagens interpretados pelo Java por Paulo César M. Jeveaux

Java Scripting

25

Groovy

04/10/2007

Sobrecarga de operadores

class Numero{

def plus(n){

print "nao sei somar este numero: "+n }

}

numero = new Numero();

numero+2;

Page 26: Java Scripting Linguagens interpretados pelo Java por Paulo César M. Jeveaux

Java Scripting

26

Groovy

04/10/2007

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);

}

Page 27: Java Scripting Linguagens interpretados pelo Java por Paulo César M. Jeveaux

27

Java Scripting

JRuby

04/10/2007

Page 28: Java Scripting Linguagens interpretados pelo Java por Paulo César M. Jeveaux

Java Scripting

28

Ruby Lang

04/10/2007

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;

Page 29: Java Scripting Linguagens interpretados pelo Java por Paulo César M. Jeveaux

Java Scripting

29

Ruby Lang

04/10/2007

# 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

Page 30: Java Scripting Linguagens interpretados pelo Java por Paulo César M. Jeveaux

Java Scripting

30

JRuby

04/10/2007

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;

Page 31: Java Scripting Linguagens interpretados pelo Java por Paulo César M. Jeveaux

31

Java Scripting

Jython

04/10/2007

Page 32: Java Scripting Linguagens interpretados pelo Java por Paulo César M. Jeveaux

Java Scripting

32

Jython

04/10/2007

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;

Page 33: Java Scripting Linguagens interpretados pelo Java por Paulo César M. Jeveaux

Java Scripting

33

Jython

04/10/2007

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.

Page 34: Java Scripting Linguagens interpretados pelo Java por Paulo César M. Jeveaux

Java Scripting

34

Jython

04/10/2007

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);

Page 35: Java Scripting Linguagens interpretados pelo Java por Paulo César M. Jeveaux

Java Scripting

35

Jython

04/10/2007

D:\Development\jython2.2b2>jythonJython 2.2b2 on java1.6.0Type "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()

Page 36: Java Scripting Linguagens interpretados pelo Java por Paulo César M. Jeveaux

36

Java Scripting

JUDOScript

04/10/2007

Page 37: Java Scripting Linguagens interpretados pelo Java por Paulo César M. Jeveaux

Java Scripting

37

JUDOScript

04/10/2007

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;

Page 38: Java Scripting Linguagens interpretados pelo Java por Paulo César M. Jeveaux

Java Scripting

38

JUDOScript

04/10/2007

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;

Page 39: Java Scripting Linguagens interpretados pelo Java por Paulo César M. Jeveaux

Java Scripting

39

JUDOScript

04/10/2007

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;}

Page 40: Java Scripting Linguagens interpretados pelo Java por Paulo César M. Jeveaux

40

Java Scripting

ECMAScript e Rhino

04/10/2007

Page 41: Java Scripting Linguagens interpretados pelo Java por Paulo César M. Jeveaux

Java Scripting

41

ECMAScript

04/10/2007

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);

Page 42: Java Scripting Linguagens interpretados pelo Java por Paulo César M. Jeveaux

Java Scripting

42

ECMAScript

04/10/2007

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;

Page 43: Java Scripting Linguagens interpretados pelo Java por Paulo César M. Jeveaux

Java Scripting

43

Rhino

04/10/2007

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;

Page 44: Java Scripting Linguagens interpretados pelo Java por Paulo César M. Jeveaux

Java Scripting

44

Rhino

04/10/2007

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

Page 45: Java Scripting Linguagens interpretados pelo Java por Paulo César M. Jeveaux

45

Java Scripting

BeanShell

04/10/2007

Page 46: Java Scripting Linguagens interpretados pelo Java por Paulo César M. Jeveaux

Java Scripting

46

BeanShell

04/10/2007

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;

Page 47: Java Scripting Linguagens interpretados pelo Java por Paulo César M. Jeveaux

Java Scripting

47

BeanShell

04/10/2007

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;

Page 48: Java Scripting Linguagens interpretados pelo Java por Paulo César M. Jeveaux

Java Scripting

48

Outras linguagens de script

04/10/2007

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…

Page 49: Java Scripting Linguagens interpretados pelo Java por Paulo César M. Jeveaux

49

Java Scripting

Vantagens e desvantagens

04/10/2007

Page 50: Java Scripting Linguagens interpretados pelo Java por Paulo César M. Jeveaux

Java Scripting

50

Vantagens e desvantagens

04/10/2007

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;

Page 51: Java Scripting Linguagens interpretados pelo Java por Paulo César M. Jeveaux

Java Scripting

51

Vantagens

04/10/2007

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;

Page 52: Java Scripting Linguagens interpretados pelo Java por Paulo César M. Jeveaux

Java Scripting

52

Desvantagens

04/10/2007

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;

Page 53: Java Scripting Linguagens interpretados pelo Java por Paulo César M. Jeveaux

Java Scripting

53

Referências

04/10/2007

[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

Page 54: Java Scripting Linguagens interpretados pelo Java por Paulo César M. Jeveaux

Java Scripting

54

Ok. Podem acordar!

04/10/2007

Muito Obrigado a todos;

Contatos:

Paulo César M. Jeveaux (Jevô)

[email protected] / [email protected]

www.portaljava.com / www.jeveaux.com

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

Java ScriptingLinguagens interpretados pelo Java

por Paulo César M. Jeveaux