Por que eu devo ler este artigo:No artigo é mostrado como desenvolver aplicações Jython, ou seja, desenvolver aplicações com a sintaxe de Python para rodar na plataforma Java. Para isso ser possível há um interpretador que faz o papel de traduzir o código Python em bytecodes Java. Essa tecnologia permite ainda que durante a codificação utilizemos classes Java, possibilitando até mesmo o desenvolvimento de aplicações Swing, conforme exemplificado no decorrer do artigo.

A plataforma Java é baseada no conceito de máquina virtual, que é um interpretador responsável por traduzir, em tempo de execução, os bytecodes que formam um programa Java em instruções nativas do processador. Isso torna a aplicação Java independente do sistema operacional e permite que o programa seja executado em qualquer sistema que possua uma implementação para a máquina virtual.

Inicialmente, a plataforma suportava apenas programas escritos na linguagem Java, mas passou a ser multi-linguagem assim como outras plataformas do mercado. Atualmente são suportadas linguagens como Groovy, Ruby e o Python, que será o tema abordado neste artigo. Portanto, um código desenvolvido nestas linguagens também pode gerar os bytecodes que são interpretados pela máquina virtual, da mesma forma que uma aplicação escrita em Java.

A possibilidade de codificar aplicativos em Python para rodar na plataforma Java traz uma série de vantagens e particularidades. O Python é uma linguagem de script orientada a objetos extremamente poderosa e com uma boa produtividade no desenvolvimento de aplicações. Sua flexibilidade, sintaxe simples e limpa tornam a curva de aprendizado da linguagem curta e diminui a complexidade do código, o que despertou o interesse de organizações como Google e NASA.

Ao desenvolver em Python, o escopo de métodos, condições e laços é delimitado pela endentação do código, o que facilita a compreensão e obriga o desenvolvedor a manter uma certa organização. A Listagem 1 apresenta um exemplo de código Python, no qual podemos perceber que a endentação delimita o escopo do método e o escopo do bloco if.

 
def methodExample(num):
  print "Esta instrução esta no escopo do método."
  if num > 10:
      print "Esta instrução esta no escopo do bloco If." 
Listagem 1. Exemplo de código Python

O Jython trata-se de uma implementação da linguagem Python em Java, um interpretador que possibilita que o código escrito em Python, uma vez compilado, gere bytecodes interpretados pela máquina virtual. O resultado obtido com isso é uma aplicação 100% Java.

A tecnologia Jython permite a união das várias vantagens de se programar em Python com a possibilidade de utilizar os vários recursos da plataforma Java. Isso torna possível o desenvolvimento de aplicações híbridas, que unam código dessas duas linguagens em um mesmo software.

Classes em Jython podem estender classes Java, assim como instanciá-las, referenciá-las e acessar seus métodos e atributos. Deste modo, podemos criar aplicações em Jython usando o pacote Swing, acesso a banco de dados e até mesmo aplicações web.

Neste contexto, o objetivo deste artigo é mostrar na prática alguns conceitos do Jython e, por fim, desenvolver uma aplicação Swing com esta linguagem. Alguns trechos de código são explicados no decorrer do artigo, mas é interessante que você monte o ambiente de trabalho e execute cada etapa. Isto possibilitará uma melhor compreensão dos assuntos abordados e uma maior interação com a tecnologia.

Uma passada rápida pela história

O projeto Jython foi criado em 1997 por Jim Hugunin, inicialmente com o nome de JPython. Em 2000, o projeto passou a ser chamado de Jython e foi transferido para o SourceForge, onde permanece até hoje.

A origem do projeto se deu quando Hugunin, que havia criado um módulo de análise numérica para o Python chamado Numeric Python, estava trabalhando no seu doutorado no MIT. Ao fazer um trabalho comparando o desempenho de Numeric Python com várias outras linguagens de programação, ele se espantou ao descobrir que Java era tão rápido quanto C para alguns cálculos numéricos simples. Antes deste fato, ele tinha se desinteressado pelo Java porque o via como um substituto inferior ao Python. Contudo, depois disso, percebeu a possibilidade de Java ser um substituto para o código C que ele estava escrevendo para as partes de maior desempenho em seus sistemas. Hugunin dizia que o código C era propenso a erros e feio se comparado ao Java.

Então, Jim em bytecodes Java

Logo do projeto Jython
Figura 1. Logo do projeto Jython

A Figura 1 mostra a logo do projeto Jython, que atualmente se encontra na versão 2.5.2. Sua distribuição e uso, tanto do binário como do fonte, são permitidos sob as condições descritas na Python Software Foundation License Version 2. Dentre os atuais mantenedores do projeto, estão Frank Wierzbicki e Jim Baker. Wierzbicki e Baker também estão entre os autores do Jython Book, um guia de referência para a tecnologia. O livro está disponível online e o endereço se encontra na seção Links.

Como já informado, o Jython é a implementação em Java da linguagem Python. A versão principal do Python foi desenvolvida em C e também é conhecida como CPython. Além dessas implementações, temos o IronPython, que é usado na plataforma .NET.

Cada versão do Jython corresponde exatamente à mesma versão do CPython, ou seja, se você está utilizando o Jython 2.5, você vai ter acesso aos mesmos recursos que estão presentes na versão 2.5 do CPython. Isso é importante porque há algumas diferenças entre cada versão da linguagem.

Estrutura da linguagem

A linguagem Python tem a filosofia de enfatizar a importância do esforço do programador sobre o esforço computacional. Ela foi projetada para priorizar a legibilidade do código através de uma sintaxe clara e concisa. Esse é um dos fatores que propiciaram vantagens como a velocidade no desenvolvimento, a praticidade e a curta curva de aprendizado. Nesta seção vamos abordar um pouco da sua estrutura estudando a sintaxe de condições, laços, classes e métodos.

Condições

Para começar, nada melhor do que uma pequena comparação com o Java para percebermos um pouco das semelhanças e diferenças. O exemplo ilustrado na Listagem 2 mostra uma condição em Java, onde o valor de uma variável do tipo inteiro é testado e de acordo com o resultado do teste há a impressão de uma mensagem na tela.

 
int temperature = 20;
if (temperature > 25) {
 System.out.println("Hoje está realmente quente.");
} 
else if (temperature >= 20){
 System.out.println("A temperatura está agradável.");
}
else {
 System.out.println("Que frio!");
}  ... 

Quer ler esse conteúdo completo? Tenha acesso completo