Este artigo descreve a linguagem de programação de scripts [lurl=https://www.judoscript.com]Judoscript[/url], uma linguagem interpretada que roda sobre a JVM (Java Virtual Machine).
Judoscript é uma linguagem de script poderosa, fácil, eficiente, elegante e moderna, projetada e implementada em Java puro.
Judoscript nasceu da necessidade de usar diretamente os recursos da plataforma Java de modo mais fácil e intuitivo. Seu propósito é ser uma linguagem de script mais simples e fácil de usar. As principais vantagens em usar uma outra linguagem sobre a JVM (além do Java, é claro), é ganhar em produtividade e poder de abstração.
A produtividade decorre da facilidade e poder de expressão próprios das linguagens de script e a abstração decorre de comandos, funções e bibliotecas pré-definidas implementadas nesta linguagem, permitindo escrever um código muito menor para as mesmas tarefas do que o código original em Java puro. O desempenho, no entanto, será em geral menor do que o mesmo código implementado em Java puro. Deve-se portanto pesar os prós e contras do uso dessas linguagens e utilizá-las para tarefas próprias de linguagens de script, como administração de sistemas, robôs para efetuar tarefas automáticas de administração e coleta de informações e frameworks de testes de aplicações, para citar alguns exemplos.
A linguagem sustenta-se em três pilares básicos, um “parser” ou “script-engine” poderoso, acesso ilimitado aos recursos da plataforma Java e características “WYSIWYG” (“What-You-See-Is-What-You-Get”, própria de linguagens 4-GL, onde os comandos são facilmente entendidos por humanos – “legíveis”).
Judoscript combina simplicidade e poder de expressão em um ambiente homogêneo que se destina à qualquer uso prático, como por exemplo combinar dados de diferentes fontes e formatos (para processamento e relatórios), ou implementar um ambiente de testes para a plataforma Java. Judoscript também é projetado para ser uma linguagem de scripts divertida e fácil para programação gráfica e multimídia e por isso seu desenvolvimento está sendo orientado para áreas como música, gerenciamento e manipulação de arquivos de som e java 2D/3D. Uma IDE baseada em JavaBeans para facilitar ainda mais o desenvolvimento de scripts também está sendo desenvolvida.
A linguagem segue a licensa LGPL, o que significa que tem o código fonte aberto e pode ser utilizada livremente tanto para fins pessoais ou comerciais. A filosofia da linguagem é seguir as últimas tendências da plataforma Java (por isso exige um sdk atualizado) e assim pretende se integrar de maneira fácil a qualquer projeto atual desenvolvido em Java. O princípio é simples: se algo é útil e está disponível, Judoscript o tornará mais fácil de usar.
Hoje, Java é muito mais do que uma linguagem de programação. A riqueza de sua API e os inúmeros projetos (muitos deles Open Source) tornam a linguagem repleta de funcionalidades que abrangem desde computação básica até a mais complexa necessidade de uma organização. Java tornou-se rapidamente um vasto e crescente campo de recursos prontamente disponíveis em múltiplas (senão todas) as plataformas.
Escrever código em Java de modo natural e fluente, no entanto, requer um conhecimento avançado da linguagem.
Frequentemente precisamos ajustar algo em nossos projetos, como efetuar alguma operação em todos os fontes em uma certa árvore de diretórios (package), ou limpar cestas de compras de um banco de dados de testes, ou ler um documento XML para criar um relatório em PDF.
Para tarefas que exigem ação rápida, é muito trabalhoso escrever código Java bem projetado. Ao invés, escrevemos scripts em Judoscript para tarefas repetitivas, os quais podem rodar manual ou automaticamente. Tais scripts podem ser atualizados com frequência e mais facilidade, e a performance não é um ponto crítico. O processo de escrever um script (editar e rodar) pode fazer muita diferença na produtividade porque um simples comando do script “abstrai” ou representa muitos comandos na linguagem Java.
Imagine que você necessita criar um ZIP com alguns arquivos usando Java, mas você nunca usou o package java.util.zip. A documentação Java lista muitas classes e você precisa entender seus significados e relacionamentos antes de usá-las. É preciso um bom mecanismo de script que permita usar de maneira fácil os muitos recursos da plataforma Java, standard ou open source, com o máximo de praticidade, flexibilidade e extensibilidade. Você verá pelos exemplos abaixo que Judoscript é uma linguagem 3-GL/4-GL que visa efetivamente satisfazer estas necessidades.
Para instalar o Judoscript, basta extrair o pacote de instalação e incluir o arquivo judo.jar no classpath.
O script a seguir faz o backup dos meus programas em um arquivo zip estruturado em diretórios com o nome indicando a data e hora da gravação.
const #System = javaclass java.lang.System; filename = 'marcio_' @ date().fmtDate('yyyyMMdd_HHmm') @ '.zip'; zip = createZip(filename); $start = #System.currentTimeMillis(); println 'Copiando arquivos...'; copy 'marcio/java/*.java' in 'c:/' except '*/judo/examples, */jython, */eclipse-SDK-2.0.1-win32, */fesi' recursive noHidden echo into zip; copy 'marcio/jython/*.py' in 'c:/' except '*/demo, */org' echo into zip; zip.close(); $end = #System.currentTimeMillis(); $total = ($end - $start)/1000; println 'Backup concluido em '@$total@' segundos.';
O script a seguir criptografa um arquivo usando a API JCE
if #args.length > 0 { infile = #args[0]; tempfile = #args[0]@'.enc'; encryptFile #args[1], infile, tempfile; }
decriptografa:
if #args.length > 0 { infile = #args[0]; tempfile = #args[0]@'.dec'; decryptFile #args[1], infile, tempfile; }
O script a seguir é um mini robot que se executado com uma conexão disponível, busca e mostra a grade de programação do dia do canal AXN
// Mini robot que mostra a grade de programação do dia do canal AXN // baseado no conhecimento prévio da estrutura html da página url = 'https://brasil.canalaxn.com/programacion.asp'; do url as html { BEFORE: flag_horario = false; flag_programa = false;: // uma tag td com a class especificada abaixo // indica o horario do programa if $_.class.equalsIgnoreCase("txt201i7") { flag_horario=true; } : // uma tag a com o link especificado abaixo // indica o nome do programa if $_.href.startsWith("grade_pop.asp") { flag_programa=true; } TEXT: if flag_horario { flush $_@' '; flag_horario=false; } if flag_programa { flush $_;.; flag_programa=false; } } Resultado do script para o dia 15/11/2002:
07:00 Radical Sports 08:00 Water Rats 09:00 Cold Squad 10:00 Wiseguy 11:00 Water Rats 12:00 Radical Sports 13:00 V.I.P 14:00 Alias 15:00 Destinos Cruzados 15:00 Criminal Desire 18:00 Wiseguy 19:00 Cold Squad 20:00 Andromeda 21:00 Enterprise 00:00 sáb Water Rats 01:00 sáb Cold Squad 02:00 sáb Andromeda 03:00 sáb Enterprise 04:00 sáb Criminal DesireO script a seguir imprime todas as descrições da tabela produtos em uma base MySQL
const #dbUrl = 'jdbc:mysql://localhost/loja'; const #dbUser = 'MONONO'; const #dbPass = 'MOMONOMO'; connect to #dbUrl, #dbUser, #dbPass; executeQuery a: select * from produtos; while a.next() { . a.descricao; } disconnect();Assim como Jython, Judoscript também funciona como um interpretador de comandos:
C:\marcio\judo>java judo =========================================================== JudoScript Language v0.7 2002-10-3 (JDK1.3+) Copyright 2001-2002 James Huang, https://www.judoscript.com Tell your friends. Join the fun of open source development. Java Runtime Version: 1.4.0_01-b03 Type in JudoScript code, finish by the 'end' command. =========================================================== list '*.judo' in 'a:/'; for $x in $$fs_result { .$x; } end ........................................................... A:/lxcrypt.judo A:/teste_mysql.judo A:/backup.judo A:/axn.judo C:\marcio\judo>O interpretador pode ser chamado com java vjudo, o que inicia um ambiente visual de trabalho para editar e rodar scripts.
Linguagens de script trouxeram muitos benefícios para o desenvolvimento de software, entre eles:
- Aumento no nível da linguagem, ou seja, possibilita o uso de comandos e expressões mais próximos da fala humana e mais distantes do código de máquina em baixo nível;
- Aumenta a eficiência, rapidez e praticidade do programador no desenvolvimento de código (porém sacrifica o desempenho da execução do código);
- Fornece um ambiente eficaz para reutilização de código e desenvolvimento de software reutilizável;
- Sintaxe clara, facilidade de aprendizagem e uso imediato sem a necessidade do ciclo de desenvolvimento/compilação
Linguagems de script implementadas para rodar sobre a JVM trazem estes benefícios para a plataforma Java, de forma ainda mais poderosa, elegante e sofisticada, já que podem se aproveitar da riquíssima API oferecida pela linguagem Java.
Abraços e um código mais produtivo!.