Java Scripting - Sucesu SP

gayheadtibburInternet και Εφαρμογές Web

5 Φεβ 2013 (πριν από 4 χρόνια και 9 μήνες)

268 εμφανίσεις

Java Scripting

Linguagens

interpretados

pelo

Java

por

Paulo César M.
Jeveaux

Agenda

04/10/2007

Java Scripting

2


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;

Paulo César M.
Jeveaux

04/10/2007

Java Scripting

3


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.

Introdução

04/10/2007

4

Java Scripting

Introdução

04/10/2007

Java Scripting

5


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;

Introdução

04/10/2007

Java Scripting

6


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
;

Introdução

04/10/2007

Java Scripting

7


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;


Domain Specific Languages

04/10/2007

Java Scripting

8


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
;

Compiladas
,
Interpretadas

e
Híbridas

Linguagens

04/10/2007

9

Java Scripting

Linguagens

04/10/2007

Java Scripting

10

Processo

de
compilação

e
execução

de
uma

linguagem

compilada

Linguagens

04/10/2007

Java Scripting

11

Processo

de
execução

de
uma

linguagem

interpretada

Linguagens

04/10/2007

Java Scripting

12

Processo

de
compilação

e
execução

de
uma

linguagem

híbrida

Unindo

os

mundos

04/10/2007

Java Scripting

13


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;

Scripting API

JSR 223

04/10/2007

14

Java Scripting

Scripting
na

plataforma

Java

04/10/2007

Java Scripting

15


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;

Scripting
na

plataforma

Java

04/10/2007

Java Scripting

16


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
;


BSF

Bean Scripting Framework

04/10/2007

17

Java Scripting

Bean Scripting Framework

04/10/2007

Java Scripting

18


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;

Bean Scripting Framework

04/10/2007

Java Scripting

19


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
;

Bean Scripting Framework


JavaScript (Rhino
ECMAScript
);


NetRexx
;


Python (
Jython
);


TCL (
Jacl
);


XSLT (
Xerces

e
Xalan
);


Groovy;


PROLOG (
JLog
);


JRuby
;


JUDOScript
;


ObjectScript
;


04/10/2007

20

Java Scripting

Linguagens

cujo

suporte

é
mantido

pelo

próprio

projeto

BSF

Linguagens

que

mantém

seu

próprio

suporte

ao

BSF

Groovy

04/10/2007

21

Java Scripting

Groovy

04/10/2007

Java Scripting

22


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;

Groovy

04/10/2007

Java Scripting

23


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;

Groovy

04/10/2007

Java Scripting

24


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;

Groovy

04/10/2007

Java Scripting

25

Sobrecarga

de
operadores

class

Numero{


def

plus
(n){


print

"
nao

sei somar este
numero: "+n }

}


numero =
new

Numero();

numero+2;

Groovy

04/10/2007

Java Scripting

26

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

}

JRuby

04/10/2007

27

Java Scripting

Ruby Lang

04/10/2007

Java Scripting

28


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
;

Ruby Lang

04/10/2007

Java Scripting

29

# 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


JRuby

04/10/2007

Java Scripting

30


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;

Jython

04/10/2007

31

Java Scripting

Jython

04/10/2007

Java Scripting

32


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;


Jython

04/10/2007

Java Scripting

33


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
.

Jython

04/10/2007

Java Scripting

34


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

Jython

04/10/2007

Java Scripting

35

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

JUDOScript

04/10/2007

36

Java Scripting

JUDOScript

04/10/2007

Java Scripting

37


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;

JUDOScript

04/10/2007

Java Scripting

38


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;

JUDOScript

04/10/2007

Java Scripting

39

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
;

}

ECMAScript

e Rhino

04/10/2007

40

Java Scripting

ECMAScript

04/10/2007

Java Scripting

41


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


ECMAScript

04/10/2007

Java Scripting

42


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;

Rhino

04/10/2007

Java Scripting

43


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;

Rhino

04/10/2007

Java Scripting

44


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

BeanShell

04/10/2007

45

Java Scripting

BeanShell

04/10/2007

Java Scripting

46


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
;

BeanShell

04/10/2007

Java Scripting

47


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;

Outras

linguagens

de script

04/10/2007

Java Scripting

48

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


Vantagens

e
desvantagens

04/10/2007

49

Java Scripting

Vantagens

e
desvantagens

04/10/2007

Java Scripting

50


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;

Vantagens

04/10/2007

Java Scripting

51


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
;

Desvantagens

04/10/2007

Java Scripting

52


Performance


Apesar

de
muitas

das
linguagens

de script


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
;

Referências

04/10/2007

Java Scripting

53


[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



Ok.
Podem

acordar
!

04/10/2007

Java Scripting

54


Muito

Obrigado a
todos
;



Contatos
:



Paulo César M.
Jeveaux

(
Jevô
)



jeveaux@portaljava.com

/
paulo@jeveaux.com




www.portaljava.com

/
www.jeveaux.com


Java Scripting

Linguagens

interpretados

pelo

Java

por

Paulo César M.
Jeveaux