Вы находитесь на странице: 1из 55

Java Scripting

Linguagens interpretados pelo Java


por Paulo Csar M. Jeveaux

Agenda
2

Introduo; Linguagens: Compiladas, Interpretadas e hbridas; JSR 223: Scripting para a plataforma Java; Bean Scripting Framework (BSF); Linguagens de Script:

Groovy; JRuby; Jython; JUDOScript; ECMAScript e Rhino; BeanShell;

Prs e Contras;
Java Scripting 04/10/2007

Paulo Csar M. Jeveaux


3

Javans 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 pas. Participante de diversos grupos e comunidades de Java, Linux e Software Livre em geral.
Java Scripting 04/10/2007

Introduo

Java Scripting

04/10/2007

Introduo
5

Escrever cdigo elegante e eficiente em Java no tarefa das mais simples; Manter a qualidade dos cdigos e no distorcer o design especificado para a aplicao uma tarefa ainda mais difcil; Resolver problemas que exigem soluo rpida utlizando APIs Java cujo uso no to frequente, geralmente demora mais tempo ou mais trabalhoso do que o desejado;
Java Scripting 04/10/2007

Introduo
6

Para simplificar e aumentar a produtividade podemos escrever scripts para estas tarefas, que podem ser executados manual ou automaticamente, dentro ou fora da aplicao; Estes scripts podem ser atualizados com maior frequncia e mais facilidade, e a performance no um ponto crtico;

Java Scripting

04/10/2007

Introduo
7

O processo de escrever um script funcional pode fazer muita diferena na produtividade durante o desenvolvimento de aplicaes. 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

Domain Specific Languages


8

So criadas com a inteno de remover a complexidade computacional envolvida na resoluo de alguma atividade e/ou operao especfica para aproxim-las de um determinado domnio do mundo real;
Criteria

(Hibernate); Regras do IPTABLES; E muitas outras;

Java Scripting

04/10/2007

Linguagens
Compiladas, Interpretadas e Hbridas

Java Scripting

04/10/2007

Linguagens
10

Processo de compilao e execuo de uma linguagem compilada

Java Scripting

04/10/2007

Linguagens
11

Processo de execuo de uma linguagem interpretada

Java Scripting

04/10/2007

Linguagens
12

Processo de compilao e execuo de uma linguagem hbrida

Java Scripting

04/10/2007

Unindo os mundos
13

O que ganhamos com APIs de Scripting no Java?


Unio

de linguagens de script com uma linguagem de sistema hbrida (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

Scripting na plataforma Java


15

JSR 223: Scripting for the Java Platform; A JSR 223 um framework de scripting que fornece acesso a linguagem de criao de scripts ao Java; Atravs da JSR 223 possvel localizar maquinas de scripting e invoc-las para rodar scripts em tempo de execuo;

Java Scripting

04/10/2007

Scripting na plataforma Java


16

A Scripting API prov suporte Java via a linguagem de criao de scripts de nossa escolha; H tambm o Web Scripting Framework que permite que o cdigo script gere o contedo Web dentro de qualquer container Servlet;

Java Scripting

04/10/2007

17

Bean Scripting Framework


BSF

Java Scripting

04/10/2007

Bean Scripting Framework


18

Assim como a especificao da JSR 223, a BSF prov a capacidade de integrao de scripts na linguagem Java; Com BSF possvel que a aplicao Java use as mquinas de scripts e que estas mquinas de script tambm usem os objetos definidos na aplicao Java;

Java Scripting

04/10/2007

Bean Scripting Framework


19

Das diversas linguagens de script que rodam sobre a JVM, muitas geralmente implementam seu prprio modo de interagir com a plataforma Java, criando assim uma dependncia entre a aplicao que faz uso de scripts e este modo de interao; O BSF estabelece uma camada comum de ligao entre a plataforma Java e os Scripts sem criar qualquer tipo de dependncia entre as partes;
Java Scripting 04/10/2007

Bean Scripting Framework


20

Linguagens cujo suporte mantido pelo prprio projeto BSF

Linguagens que mantm seu prprio 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

Groovy
22

Groovy uma linguagem de programao, desenvolvida em Java e para a plataforma Java com o propsito de ser uma alternativa a prpria linguagem Java; Padronizada na JSR 241; Groovy possui sintaxe similar a de Java, mas baseia-se em caractersticas importantes de Python, Ruby e Smalltalk;

Java Scripting

04/10/2007

Groovy
23

Diferente do Java, Groovy possui:


Tipagem

dinmica e esttica; Suporte nativo a listas, arrays, vetores e expresses regulares; Closures; Sobrecarga de operadores; Suporte e acesso completo a API de Java SE e Java EE; Integrvel a programas Java;
Java Scripting 04/10/2007

Groovy
24

Groovy da suporte a outros recursos tambm, por exemplo:


Groovlets:

criao 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

Groovy
25

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

Groovy
26

Utilizando um Script Groovy dentro de uma aplicao 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

Ruby Lang
28

Ruby uma linguagem de script interpretada que foi projetada para programao OO focando agilidade e rapidez.
Sintaxe

simples e clara (inspirada em Eiffel e

Ada); Possui tratamento de excees e erros; Totalmente (100%) orientada a objetos; Suporte pleno a Expresses regulares, portvel, validao dinmica de cdigo, etc; Princpio de pouca surpresa, ou seja, as coisas acontecem como voc espera;
Java Scripting 04/10/2007

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

JRuby
30

Implementao 100% Pure-Java da linguagem Ruby para ser executada na JVM; Mantida sob trs licenas: CPL, GPL e LGPL; Cdigo JRuby capaz de acessar classes definidas em Java; Cdigo Java capaz de acessar cdigo definido em JRuby, atravs de Bean Scripting Framework (BSF); JRuby (1.0) 100% compatvel com Ruby (1.8.5) e 98% compatvel com Ruby on Rails; Java Scripting 04/10/2007

31

Jython

Java Scripting

04/10/2007

Jython
32

Jython uma implementao 100% Pure-Java da linguagem de alto nvel Python, que pode ser executada na JVM; Jython uma continuao baseada no antigo projeto JPython, que tambm era 100% PureJava; Com Jython possvel utilizar recursos do Python diretamente das aplicaes Java;

Java Scripting

04/10/2007

Jython
33

Com Jython possvel enriquecer o desenvolvimento de aplicaes Java adicionando:


Produtividade

possvel utilizar as bibliotecas e funcionalidades do Python, alm de sua sintaxe simples e fcil dentro da sua aplicao Java, reduzindo complexidade e quantidade de cdigo;

Experimentao
Jython

Interativa

fornece um interpretador interativo que pode ser usado para interagir com aplicaes Java em execuo. Isto permite aos programadores experimentar e depurar qualquer sistema Java Java Scripting 04/10/2007 usando Jython.

Jython
34

Caractersticas que diferenciam Jython de outras implementaes de linguaguens de script para a JVM:
Compilao

dinmina ou esttica

possvel definir se a compilao dos scripts ser feita em tempo de execuo ou estaticamente; o uso de classes abstratas do Java para realizar herana nas classes em Jython;

Herana
Permite

Bean

Properties
o uso de pacotes Java (packages);
Java Scripting 04/10/2007

Facilita

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

Java Scripting

04/10/2007

36

JUDOScript

Java Scripting

04/10/2007

JUDOScript
37

JUDOScript uma linguagem de script poderosa, fcil, 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 fcil. Seu propsito ser uma linguagem de script mais simples e fcil de usar do que as demais existentes; JUDOScript possui acesso ilimitado aos recursos da plataforma Java;
Java Scripting 04/10/2007

JUDOScript
38

JUDOScript excelente para combinar e trabalhar com processamento de dados de diversas fontes e formatos diferentes, como processadores de dados e relatrios; JUDOScript est sempre acompanhando as mais novas tendncias e novidades do Java;

Java Scripting

04/10/2007

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

40

ECMAScript e Rhino

Java Scripting

04/10/2007

ECMAScript
41

European Computer Manufecturers Association ECMA um rgo internacional que estabelece padres para os formatos utlizados na computao; ECMAScript talvez seja mais conhecida por alguma de suas variantes: JavaScript, Jscript, Rhino, FESI, etc; O ECMAScript a base de vrias linguagens de script, entre elas o JavaScript (Netscape) e Jscript (Microsoft);
Java Scripting 04/10/2007

ECMAScript
42

Usando ECMAScript ou uma de suas variantes, como o JavaScript, por exemplo, possvel desenvolver de modo Orientado a Objetos ou Procedural; Apesar das possibilidades a maior presena e uso massivo das linguagens de script basedas em ECMAScript so feitos de forma procedural, em pginas Web;

Java Scripting

04/10/2007

Rhino
43

Rhino uma implementao totalmente em Java da linguagem JavaScript; Apesar de ser uma implementao de JavaScript, Rhino implementa o Standard ECMAScript, ou seja, no existem objetos de JavaScript como: window, document e form;

Java Scripting

04/10/2007

Rhino
44

Atualmente o projeto Rhino, mantido pela Mozilla, mantm:


Compatibilidade

com JavaScript 1.5; Shell para execuo de scripts; Manipulao 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

BeanShell
46

BeanShell um interpretador de comandos de script 100% pure-Java; BeanShell capaz de interpretar tanto comandos de script quanto comandos de Java; BeanShell tambm capaz de tratar em tempo de execuo os mtodos como objetos, assim como Python; BeanShell pode ser resumidamente chamado de a Linguagem Java dinmica e interpretada;
Java Scripting 04/10/2007

BeanShell
47

Possui acesso ilimitado a toda API Java


Usa

a API de Reflection para interpretao de comandos e expresses Java;

Funciona com aplicaes, console, applets, etc; Tipagem dinmica; Suporta tambm o BSF;

Java Scripting

04/10/2007

Outras linguagens de script


48

Linguagem Awk JavaScript Python Ruby Scheme TCL PHP JavaScript Templates (JST)

Implementao em Java Jawk Rhino Jython JRuby SISC JACL Quercus TrimPath JST

E muitas outras
Java Scripting 04/10/2007

49

Vantagens e desvantagens

Java Scripting

04/10/2007

Vantagens e desvantagens
50

Linguagens de script geralmente so encaradas como ferramentas perfeitas para trabalhos do tipo rpido, porm sujo (quickn dirty) de todo tipo. Outra grande utilidade das linguagens de Script na customizao de sistemas, permitindo colocar boa parte das regras de negcio em scripts, separados da base do sistema, que continuar em Java;
Java Scripting 04/10/2007

Vantagens
51

Diversidade de opes

Vasta quantidade de linguagens de scripts suportadas;

Simplicidade; Reduo da curva de aprendizado; Produtividade

Com as linguagens de script em quase todos os casos a quantidade de cdigo escrito significativamente reduzida, alm disso, pode-se unir isso com um prvio conhecimento da linguagem de script pelo desenvolvedor, aumentando ainda mais a Java Scripting 04/10/2007 produtividade;

Desvantagens
52

Performance
Apesar

de muitas das linguagens de script j darem suporte a compilao esttica e/ou com o JIT, o desempenho no como uma implementao em Java;

Dificuldade para encontrar erros; Sintaxe no to clara (s vezes, s vezes)


Em

algumas situaes, por algum comando de script ter muitas funcionalidades implcitas, as leitura do cdigo pode ficar consideravelmente prejudicada; Java Scripting 04/10/2007

Referncias
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

Java Scripting 04/10/2007

Ok. Podem acordar!


54

Muito Obrigado a todos; Contatos:


Paulo

Csar M. Jeveaux (Jev)


/ paulo@jeveaux.com

jeveaux@portaljava.com

www.portaljava.com

/ www.jeveaux.com

Java Scripting

04/10/2007

Java Scripting
Linguagens interpretados pelo Java
por Paulo Csar M. Jeveaux

Вам также может понравиться