A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

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

Apresentações semelhantes


Apresentação em tema: "Java Scripting Linguagens interpretados pelo Java por Paulo César M. Jeveaux."— Transcrição da apresentação:

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

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

3 Paulo César M. Jeveaux 04/10/2007 Java Scripting 3 Javanês desde [+-] 2000/01; Mantenedor do Portal Java e do ESJUG 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.

4 Introdução 04/10/ Java Scripting

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

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

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

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

9 Compiladas, Interpretadas e Híbridas Linguagens 04/10/ Java Scripting

10 Linguagens 04/10/2007 Java Scripting 10 Processo de compilação e execução de uma linguagem compilada

11 Linguagens 04/10/2007 Java Scripting 11 Processo de execução de uma linguagem interpretada

12 Linguagens 04/10/2007 Java Scripting 12 Processo de compilação e execução de uma linguagem híbrida

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

14 Scripting API JSR /10/ Java Scripting

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

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

17 BSF Bean Scripting Framework 04/10/ Java Scripting

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

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

20 Bean Scripting Framework JavaScript (Rhino ECMAScript); NetRexx; Python (Jython); TCL (Jacl); XSLT (Xerces e Xalan); Groovy; PROLOG (JLog); JRuby; JUDOScript; ObjectScript; 04/10/ Java Scripting Linguagens cujo suporte é mantido pelo próprio projeto BSF Linguagens que mantém seu próprio suporte ao BSF

21 Groovy 04/10/ Java Scripting

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

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

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

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

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

27 JRuby 04/10/ Java Scripting

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

29 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

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

31 Jython 04/10/ Java Scripting

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

33 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.

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

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

36 JUDOScript 04/10/ Java Scripting

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

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

39 JUDOScript 04/10/2007 Java Scripting 39 Conectando a um banco de dados e listando uma tabela com JUDOScript const #url = "jdbc:mysql:// /banco" ; const #user = "usuario"; const #pass = "senha"; connect to #url, #user, #pass; executeQuery query: select * from tabela; while query.next() {. query.campo; }

40 ECMAScript e Rhino 04/10/ Java Scripting

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

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

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

44 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

45 BeanShell 04/10/ Java Scripting

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

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

48 Outras linguagens de script 04/10/2007 Java Scripting 48 LinguagemImplementação em Java AwkJawk JavaScriptRhino PythonJython RubyJRuby SchemeSISC TCLJACL PHPQuercus JavaScript Templates (JST)TrimPath JST E muitas outras…

49 Vantagens e desvantagens 04/10/ Java Scripting

50 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 (quickn 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;

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

52 Desvantagens 04/10/2007 Java Scripting 52 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;

53 Referências 04/10/2007 Java Scripting 53 [1] Portal Java – [2] GUJ – [3] JVMScript – por Marcio Alexandre Barbosa [4] Ruby Lang – [5] JRuby – [6] Groovy –

54 Ok. Podem acordar! 04/10/2007 Java Scripting 54 Muito Obrigado a todos; Contatos: Paulo César M. Jeveaux (Jevô) / /

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


Carregar ppt "Java Scripting Linguagens interpretados pelo Java por Paulo César M. Jeveaux."

Apresentações semelhantes


Anúncios Google