Java Scripting - Linguagens Interpretadas pelo Java - Presentation Transcript
Java Scripting Linguagens interpretados pelo Java por Paulo César M. Jeveaux
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;
04/10/2007 Java Scripting
Paulo César M. Jeveaux
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.
04/10/2007 Java Scripting
Introdução 04/10/2007 Java Scripting
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;
04/10/2007 Java Scripting
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 ;
04/10/2007 Java Scripting
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;
04/10/2007 Java Scripting
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;
04/10/2007 Java Scripting
Compiladas, Interpretadas e Híbridas
Linguagens 04/10/2007 Java Scripting
Linguagens
Processo de compilação e execução de uma linguagem compilada
04/10/2007 Java Scripting
Linguagens
Processo de execução de uma linguagem interpretada
04/10/2007 Java Scripting
Linguagens
Processo de compilação e execução de uma linguagem híbrida
04/10/2007 Java Scripting
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;
04/10/2007 Java Scripting
Scripting API
JSR 223 04/10/2007 Java Scripting
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;
04/10/2007 Java Scripting
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;
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;
04/10/2007 Java Scripting
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;
04/10/2007 Java Scripting
Bean Scripting Framework
JavaScript (Rhino ECMAScript);
NetRexx;
Python (Jython);
TCL (Jacl);
XSLT (Xerces e Xalan);
Groovy;
PROLOG (JLog);
JRuby;
JUDOScript;
ObjectScript;
Linguagens cujo suporte é mantido pelo próprio projeto BSF
Linguagens que mantém seu próprio suporte ao BSF
04/10/2007 Java Scripting
Groovy 04/10/2007 Java Scripting
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;
04/10/2007 Java Scripting
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;
04/10/2007 Java Scripting
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;
04/10/2007 Java Scripting
Groovy
Sobrecarga de operadores
class Numero{
def plus(n){
print "nao sei somar este numero: "+n }
}
numero = new Numero();
numero+2;
04/10/2007 Java Scripting
Groovy
Utilizando um Script Groovy dentro de uma aplicação Java
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;
04/10/2007 Java Scripting
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
04/10/2007 Java Scripting
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;
04/10/2007 Java Scripting
Jython 04/10/2007 Java Scripting
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;
04/10/2007 Java Scripting
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.
04/10/2007 Java Scripting
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);
04/10/2007 Java Scripting
Jython
D:Developmentjython2.2b2>jython
Jython 2.2b2 on java1.6.0
Type "copyright", "credits" or "license" for more information.
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;
04/10/2007 Java Scripting
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;
04/10/2007 Java Scripting
JUDOScript
Conectando a um banco de dados e listando uma tabela com JUDOScript
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);
04/10/2007 Java Scripting
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;
04/10/2007 Java Scripting
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;
04/10/2007 Java Scripting
Rhino
Atualmente o projeto Rhino, mantido pela Mozilla, mantém:
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;
04/10/2007 Java Scripting
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;
04/10/2007 Java Scripting
Outras linguagens de script 04/10/2007 Java Scripting E muitas outras… Linguagem Implementação em Java Awk Jawk JavaScript Rhino Python Jython Ruby JRuby Scheme SISC TCL JACL PHP Quercus JavaScript Templates (JST) TrimPath JST
Vantagens e desvantagens 04/10/2007 Java Scripting
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;
04/10/2007 Java Scripting
Vantagens
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;
04/10/2007 Java Scripting
Desvantagens
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;
04/10/2007 Java Scripting
Referências
[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
04/10/2007 Java Scripting
Ok. Podem acordar!
Muito Obrigado a todos;
Contatos:
Paulo César M. Jeveaux ( Jevô )
[email_address] / [email_address]
www.portaljava.com / www.jeveaux.com
04/10/2007 Java Scripting
Java Scripting Linguagens interpretados pelo Java por Paulo César M. Jeveaux
2 comments
Comments 1 - 2 of 2 previous next Post a comment