Jython

“Jython, para você que não sabe disso, é simplesmente a arma mais convincente que a plataforma Java possui para a sua sobrevivência no século XXI.” SeanMcGrath


Jython é uma implementação da linguagem de alto nível Python escrito em Java, que permite aos usuários compilar um código fonte Python gerando bytecode Java para serem executados sobre uma Máquina Virtual Java. Usando Jython, é possível escrever programas em Python que interagem com qualquer código Java. Seu interpretador permite que programadores Python tenham acesso a todos os recursos, possam utilizar bibliotecas e escrever classes utilizadas na plataforma Java. Mas para que possamos entender melhor a relação entre o Java, o Python, e o Jython, devemos separar a linguagem de programação Java da plataforma Java.


Primeiro temos como característica essencial das linguagens o fato de serem orientadas a objetos. Para quem não sabe, a POO(Programação Orientada a Objetos) é um paradigma de programação que permite o desenvolvimento de sistemas de forma rápida, limpa, e favorece também a reutilização de código e a manutenabilidade de sistemas, é empregada pelos desenvolvedores na maioria dos softwares atuais.

Além do Java e do Python serem orientados a objetos, os dois não geram como resultado de compilação binários nativos, eles geram os bytecodes. Os bytecodes são equivalentes aos binários nativos de qualquer máquina, porém são específicos para serem executados na plataforma Java.

A plataforma Java é uma camada de API’s padronizada que realiza a execução destes bytecodes independente da plataforma nativa, como se fosse uma máquina virtual. Portanto, compilando um programa feito na linguagem Java é possível executá-lo em várias máquinas físicas de arquiteturas diferentes, desde que a plataforma Java esteja instalada.

Existem também algumas diferenças básicas entre o Python e o Java. O Java trata cada arquivo como uma classe, enquanto que para o Python um arquivo pode conter mais de uma classe. E este é um dos motivos pelo qual programas feitos no Jython não são totalmente independentes do Jython, após compilados suas classes podem ser utilizadas no Java porém esses objetos são primariamente do Python.

A grande questão é que a linguagem Java, por ser derivada do C++, não é um linguagem fácil de trabalhar. O Jython surge como uma solução, possibilitando que programadores utilizem a clareza e o fácil aprendizado da linguagem Python para desenvolver (até 8x mais rápido que a linguagem Java) programas para o JVM. Com o Python é possível ter acesso a todos os recursos e bibliotecas da plataforma e ainda compilar o bytecode. Além disso a integração que o Jython faz com o JVM é melhor que a própria linguagem Java, ao contrário do que muitos pensam.


1- Velocidade no desenvolvimento:
Para quem já programa em Java, provavelmente está se perguntando por que precisa de outra linguagem para ser executada sobre uma Máquina Virtual Java. O Jython é uma linguagem de desenvolvimento rápido, dessa forma o número de linhas de código no programa pode cair até 50%. Dessa forma, um programador especialista em Jython provavelmente irá produzir programas mais rápidos e com menos bugs, do que um programador perito em Java.

2 - Tipagem dinâmica:
Em Python, não é necessário declarar variáveis para uso, nem precisa dizer ao interpretador que o tipo de dados esperado é uma variável. É importante notar que apesar de ser de tipagem dinâmica, Python também tem tipagem forte. Isto significa que uma linha de código, como "1" + 1 é um erro em Python (ao contrário de muitas outras linguagens de script, que calmamente permitir isso).

3 - Praticidade:
Não é necessário compilar o código Jython para testá-lo. Isso torna a depuração muito mais rápida. Depois de terminado o processo, utiliza-se o compilador Jythonc para compilar o programa, e existe a opção do freeze para incluir as bibliotecas do Jython.

4 - Tempo de Aprendizado:
Pelo Python ter uma sintaxe simples, limpa e coerente o seu tempo de aprendizado é muito fácil. Ele também suporta um modelo de programação orientada a objeto completa o que o torna um ajuste natural para o projeto Orientado a Objeto de Java.


Em se tratando de compiladores, a idéia de que um programa compilado numa máquina possa ser executado em qualquer outra que tenha o JVM, independente de plataforma e sem precisar recompilá-lo é fantástica. Isto pode não fazer diferença para programas pequenos visto que o tempo de compilação é curto e tanto faz compilá-los várias vezes para poder executá-los. Mas em se tratando de aplicações robustas, uma única compilação pode demorar dias e compilar os mesmos várias vezes para executá-los em máquinas diversas é custoso, daí a grande vantagem de desenvolver softwares para o JVM.


Existem inúmeras outras linguagens alternativas implementadas para o JVM, abaixo são citadas algumas características que justificam usar o Jython ao invés de outras:

  • Compilação estática opcional – permite a criação de applets(softwares que são executados num contexto de outro programa), servlets(componentes do lado servidor que gera dados HTML/XML para a camada de apresentação de um aplicativo web), e beans(componentes reutilizáveis de software que podem ser modificados visualmente por uma ferramenta de desenvolvimento).
  • Compilação dinâmica para bytecodes Java, melhor desempenho sem sacrificar a interatividade
  • Permite a extensão e o uso eficaz de classes abstratas Java em Jython
  • Compilação estática opcional – permite a criação de applets(softwares que são executados num contexto de outro programa), servlets(componentes do lado servidor que gera dados HTML/XML para a camada de apresentação de um aplicativo web), e beans(componentes reutilizáveis de software que podem ser modificados visualmente por uma ferramenta de desenvolvimento).
  • Propriedades Beans – faz usos de pacotes Java de forma muito mais fácil.
  • Linguagem Python - a sintaxe combina clareza com um poder notável. Por se tratar de uma linguagem orientada a objetos completa, é uma escolha natural para projetos OO em Java.
  • Não é preciso compilar o código Jython para testa-lo, isto facilita a depuração.


http://www.python.org.br/wiki/Jython
http://www.python.org.br/wiki/IntroducaoJython
http://www.vivaolinux.com.br/artigo/Introducao-ao-Jython/
http://wiki.python.org/jython/WhyJython
http://www.jython.info/
http://www.jython.org/
http://pt.wikipedia.org/wiki/Applet
http://pt.wikipedia.org/wiki/Servlet
http://pt.wikipedia.org/wiki/JavaBeans

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License