Java Scripting Linguagens interpretados pelo Java

Slides:



Advertisements
Apresentações semelhantes
IFTO ESTRUTURA DE DADOS AULA 05 Prof. Manoel Campos da Silva Filho
Advertisements

Programação em Java Prof. Maurício Braga
UNICAMP Universidade Estadual de Campinas Centro Superior de Educação Tecnológica Divisão de Telecomunicações Propagação de Ondas e Antenas Prof.Dr. Leonardo.
O Modelo de Jesus para Crescimento e Serviço
Vamos contar D U De 10 até 69 Professor Vaz Nunes 1999 (Ovar-Portugal). Nenhuns direitos reservados, excepto para fins comerciais. Por favor, não coloque.
14/10/09 Uma animação possui: Início; Passo; Fim; 1.
Exercício do Tangram Tangram é um quebra-cabeças chinês no qual, usando 7 peças deve-se construir formas geométricas.
BD em.NET: Passo a passo conexão com SQL Server 1º Semestre 2010 > PUCPR > BSI Bruno C. de Paula.
Windows Forms 2º Semestre 2010 > PUCPR > TPU Bruno C. de Paula.
Pesquisa Bibliográfica Disciplina de Metodologia da Pesquisa Profª Tereza Yoshiko Kakehashi 1.
Nome : Resolve estas operações começando no centro de cada espiral. Nos rectângulos põe o resultado de cada operação. Comprova se no final.
ANÁLISE DE SOFTWARES APLICÁVEIS A UNIDADES E SERVIÇOS DE INFORMAÇÃO
Engenharia de Software
1 INQUÉRITOS PEDAGÓGICOS 2º Semestre 2003/2004 ANÁLISE GERAL DOS RESULTADOS OBTIDOS 1.Nº de RESPOSTAS ao inquérito 2003/2004 = (42,8%) 2.Comparação.
João Carlos Porto Orientadora: Prof.ª Dr.ª Junia Coutinho Anacleto 26/03/2010 Projeto de interceo.
Campus Curitiba Departamento Acadêmico de Matemática Angela Olandoski Barboza UTFPR – Damat.
Curso de ADMINISTRAÇÃO
PRDS - Programa de Residência em Desenvolvimento de Software Laboratório de Engenharia de Software (LES) da PUC-Rio Carlos Lucena
Análise de Requisitos Use Case Renata Araujo Ricardo Storino
1 MODELAGEM COM A UML (UNIFIED MODELING LANGUAGE) BREVE HISTÓRICO CARACTERÍSTICAS CONCEITOS DE PROGRAMAÇÃO ORIENTADA A OBJETOS MODELAGEM DE ANÁLISE E DE.
April 05 Prof. Ismael H. F. Santos - 1 Modulo II CheckStyle Professor Ismael H F Santos –
Linguagens de programação
Alexandre Parra Site: Linguagem Java Alexandre Parra Site:
FUNÇÃO MODULAR.
Curso Sistemas de Informação I Disciplina: Arquitetura de Software
Aula 2 Aspectos Preliminares
Aula 4 Nomes, Vinculações, Tipos e Escopos
Aula 8 Orientação à Objetos
Linguagens de Programação
Aula 10 Manipulação de Exceções
O que é 5(S)? ? 5(S) É a prática de hábitos que permitem mudanças nas relações... É a base de qualquer programa de qualidade. 1.
Laboratório de Programação de Computadores I
Java Persistence API (JPA) Eduardo Martins Guerra Instituto Tecnológico de Aeronáutica Curso de Pós-Graduação em Engenharia de Software Programação Distribuída.
Aula de reposição Prof. Grace e Ângela
Classes e objetos P. O. O. Prof. Grace.
Introdução a Programação Orientada a Objetos
Provas de Concursos Anteriores
Conhecendo o Visual Studio.NET
Desenvolvimento de Projetos e Aplicações Web
MECÂNICA - ESTÁTICA Cabos Cap. 7.
Engenharia de Requisitos
(CESPE/ Técnico Judiciário do TRT 17ª Região/ES) O Superior Tribunal de Justiça entende que o candidato aprovado em concurso público dentro do limite.
MECÂNICA - DINÂMICA Exercícios Cap. 13, 14 e 17. TC027 - Mecânica Geral III - Dinâmica © 2013 Curotto, C.L. - UFPR 2 Problema
PROGRAMAÇÃO I UNIDADE 1.
Aluno: Mário Monteiro Orientador: Sérgio Soares 1.
MECÂNICA - ESTÁTICA Vetores Forças Cap. 2.
Object Oriented Software Construction (MEYER, Bertrand)
Programação Avançada Prof. Natalia Castro Fernandes
JAVA Linguagem Ambiente de Desenvolvimento
Estruturas de Dados com Jogos
Estruturas de Dados com Jogos
Coordenação Geral de Ensino da Faculdade
Programação de SCRIPTS
Módulo: Gerenciamento de Incidentes e
Ritornello Um Framework para Representação de Conhecimento Musical
Semântica de Linguagens de Programação
1.
DIEGO RICARDO DE ARAUJO DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO INSTITUTO DE CIÊNCIA EXATAS UNIVERSIDADE FEDERAL DE JUIZ DE FORA Seleção de Características.
BPM BUSINESS PROCESS MANAGEMENT Projecto em Informática e Gestão de Empresas Lisboa, 20 de Junho de 2006.
Professor: Márcio Amador
1 Aplicações do Fecho Regular. 2 A interseção de uma linguagem livre de contexto e uma linguagem regular é uma linguagem livre de contexto livre de contexto.
Banco de Dados Parte 04 Ceça. Ceça Moraes 2 Conteúdo  Os três níveis da arquitetura  Mapeamentos  Arquitetura cliente-servidor.
Olhe fixamente para a Bruxa Nariguda
Máquina de Turing Universal
INTRODUÇÃO À ORIENTAÇÃO A OBJETOS EM JAVA
Paradigmas da Programação – Semestre 1 – Aula 9 Professor: Eduardo Mantovani )
Laboratório de Programação I Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Aula 1 – Profª Danielle Costa
Linguagem de programação. Histórico  Concebida em 1993 por Yukihiro Matsumoto  Primeiro livro em inglês saiu em setembro de 2000  Ruby on Rails é lançado.
Desenvolvimento WEB II Ajax – Utilização de Frameworks Javascript Professora: Kelly de Paula Cunha.
Transcrição da apresentação:

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

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

Introdução Java Scripting 04/10/2007

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

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

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

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

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

Linguagens Compilador Código Fonte Executável Sistema Operacional Processo de compilação e execução de uma linguagem compilada Executável Sistema Operacional Hardware Java Scripting 04/10/2007

Linguagens Interpretador Código Fonte Sistema Operacional Hardware Processo de execução de uma linguagem interpretada Sistema Operacional Hardware Java Scripting 04/10/2007

Linguagens Compilador Código Fonte Executável Interpretador Processo de compilação e execução de uma linguagem híbrida Executável Interpretador Sistema Operacional Hardware Java Scripting 04/10/2007

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

JSR 223 Scripting API Java Scripting 04/10/2007

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

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

Bean Scripting Framework BSF Java Scripting 04/10/2007

Bean Scripting Framework 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; Java Scripting 04/10/2007

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

Bean Scripting Framework Linguagens cujo suporte é mantido pelo próprio projeto BSF Linguagens que mantém seu próprio 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

Groovy Java Scripting 04/10/2007

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

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

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

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

JRuby Java Scripting 04/10/2007

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

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

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

Jython Java Scripting 04/10/2007

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

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

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

Jython 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

JUDOScript Java Scripting 04/10/2007

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

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

JUDOScript 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

ECMAScript e Rhino Java Scripting 04/10/2007

ECMAScript 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); Java Scripting 04/10/2007

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

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

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

BeanShell Java Scripting 04/10/2007

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

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

Outras linguagens de script 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… Java Scripting 04/10/2007

Vantagens e desvantagens Java Scripting 04/10/2007

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

Vantagens Diversidade de opções Simplicidade; 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; Java Scripting 04/10/2007

Desvantagens Performance Dificuldade para encontrar erros; 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; Java Scripting 04/10/2007

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

Ok. Podem acordar! 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 04/10/2007

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