Академический Документы
Профессиональный Документы
Культура Документы
Agenda
2
Introduo; Linguagens: Compiladas, Interpretadas e hbridas; JSR 223: Scripting para a plataforma Java; Bean Scripting Framework (BSF); Linguagens de Script:
Prs e Contras;
Java Scripting 04/10/2007
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
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
Java Scripting
04/10/2007
Linguagens
Compiladas, Interpretadas e Hbridas
Java Scripting
04/10/2007
Linguagens
10
Java Scripting
04/10/2007
Linguagens
11
Java Scripting
04/10/2007
Linguagens
12
Java Scripting
04/10/2007
Unindo os mundos
13
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
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
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
Java Scripting
04/10/2007
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
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
JavaScript (Rhino ECMAScript); NetRexx; Python (Jython); TCL (Jacl); XSLT (Xerces e Xalan);
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
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
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
#script.goovy
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
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
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
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
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
com JavaScript 1.5; Shell para execuo de scripts; Manipulao direta de objetos Java; Compilar arquivos JS para bytecodes Java;
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
Funciona com aplicaes, console, applets, etc; Tipagem dinmica; Suporta tambm o BSF;
Java Scripting
04/10/2007
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
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;
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
[4] Ruby Lang http://www.ruby-lang.org [5] JRuby http://jruby.org [6] Groovy http://groovy.codehaus.org
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