Por que usar o Jython quando você pode simplesmente usar o Java?

A resposta padrão é que é útil quando você só precisa escrever algumas linhas de código ...

Eu tenho duas linguagens integradas dentro do Eclipse. Como o Eclipse lida com a compilação, interpretação, execução, etc., ambos "executam" exatamente da mesma forma.

O IDE do Eclipse para ambos é semelhante - "compilação" instantânea, intellisense, etc. Ambos permitem o uso da perspectiva Debug.

Se eu quiser testar algumas linhas de Java, não preciso criar um novo projeto Java - basta usar o Scrapbook dentro do Eclipse que me permite " executar expressões Java sem ter que criar um novo programa Java. Essa é uma maneira simples de testar rapidamente uma classe existente ou avaliar um trecho de código ".

O Jython permite o uso das bibliotecas Java - mas então, por definição, o Java!

Então, que outros benefícios o Jython oferece?

0
Pena que esta questão está encerrada; como há um ponto muito bom que não apareceu em nenhuma das respostas (a menos que eu tenha esquecido): com o jython, eu posso executar um novo código no contexto de um jvm em execução. Você não pode fazer isso com java.
adicionado o autor GhostCat, fonte
Eu não pude entender porque esta questin está fechada.
adicionado o autor Icche Guri, fonte
Engraçado, eu ia perguntar "Por que usar o Java quando você pode usar o Jython?" Tente fazer o Swing no Jython e veja como ele é agradável: btn = JButton ("Click me", actionPerformed = SomeFunction) . Pouco mais fácil do que ter que escrever uma aula inteira apenas para lidar com cliques de botão, não?
adicionado o autor Cam Jackson, fonte

14 Respostas

Acabei de descobrir Jython e, como linguista, acho que diria que é como perguntar "por que usar o latim quando você pode usar o francês" (esquecendo o fato de que o latim veio antes do francês, é claro) .

Diferentes linguagens humanas realmente fazem você pensar de maneiras diferentes. O francês é uma ótima língua, eu moro na França há muito tempo e faço um diploma nisso. Mas o poder e a concisão surpreendentes do latino colocam sua mente em uma zona diferente, onde a ordem das palavras pode ser trocada para produzir todos os tipos de efeitos sutis, por exemplo.

Eu acho que, pelo meu conhecimento superficial com Jython, o que realmente despertou meu entusiasmo, que vai me fazer pensar de maneiras diferentes. Eu era muito cético sobre Python/Jython por algum tempo, e tem sido um grande fã de genéricos Java por exemplo (que reduzem ironicamente a quantidade de digitação e, portanto, "latinise" os franceses se quiser). Eu não entendo muito bem as implicações de línguas "tipagem dinâmica" como Jython, mas eu acho que a melhor coisa é ir com o fluxo e ver o que Jython faz a minha mente!

É engraçado como as línguas vêm e vão. Outro "latim" pode ser considerado Algol68 com sua sintaxe infinitamente recursiva. Mas a necessidade de desenvolver um código massivamente recursivo, e a capacidade de lê-lo e pensar nele, ainda não se fez sentir. O Jython parece ser um ajuste muito poderoso e elegante de onde estamos agora, com bibliotecas OO, o poder do Java swing e tudo embrulhado em um pacote muito elegante. Talvez um dia o Jython adote sintaxe infinitamente recursiva também?

0
adicionado

Eu uso o Jython para testes interativos de código Java. Isso geralmente é muito mais rápido do que gravar aplicativos de teste Java ou até mesmo qualquer linguagem de script. Eu posso apenas brincar com os métodos e ver como isso reage. De lá eu posso aprender o suficiente para escrever alguns códigos reais ou casos de teste.

0
adicionado

Um exemplo rápido (de http://coreygoldberg. blogspot.com/2008/09/python-vs-java-http-get-request.html ):

Você tem um back-end em Java e precisa executar as resgates HTTP GET.

Nativamente:

import java.net.*;
import java.io.*;

public class JGet {
    public static void main (String[] args) throws IOException {
        try {
            URL url = new URL("http://www.google.com");

            BufferedReader in = 
                new BufferedReader(new InputStreamReader(url.openStream()));
            String str;

            while ((str = in.readLine()) != null) {
                System.out.println(str);
            }

            in.close();
        } 
        catch (MalformedURLException e) {} 
        catch (IOException e) {}
    }
}

Em Python:

import urllib
print urllib.urlopen('http://www.google.com').read()

O Jython permite que você use a robustez do java e, quando necessário, a clareza do Python.

O quê mais ? Como Georges diria ...

0
adicionado
Sim, você só tem que codificar isso sozinho. Como tudo mais.
adicionado o autor e-satis, fonte
Primeiro, o código java não faz muito mais. O código Python é OO completo e o open() envolve um objeto de arquivo que faz streaming. Além disso, não vejo nada sobre um quadro aqui. Então, sim, há tratamento de exceção, mas você também pode fazer isso no Python. O verdadeiro problema aqui é que o java não permite que você o faça de maneira mais curta, mesmo com menos recursos. Não é um ataque contra o Java. Meu ponto é apenas: você usaria Jython porque às vezes, você quer algo mais fino.
adicionado o autor e-satis, fonte
Você está fazendo o meu ponto: é por isso que você usaria o Jython e não apenas o Java.
adicionado o autor e-satis, fonte
O código Jython baseado em Java pode ser tão conciso quanto Python: inStream = URL (" python.org "). openConnection (). getInputStream() resultado = s = Scanner (inStream) .useDelimiter (" \\ A "). next ()
adicionado o autor tnorgd, fonte
Nada impede que o Java tenha uma classe de utilitário que faça o UrlUtil.open ("www.google.com"). Read ().
adicionado o autor Marcio Aguiar, fonte
O exemplo de Corey Goldberg que compara o Java ao Python é uma comparação tão falsa quanto pode ser encontrada na Internet, e o exemplo acima não é muito melhor. (Além disso, sugere uma dicotomia robustez/clareza que é discutível.) O código Java acima faz muito mais do que o código Python (OO, leitura de buffer, estrutura de exceção, etc.). Há razões para usar o Jython, mas um exemplo inventado de brevidade não é muito persuasivo.
adicionado o autor Glenn, fonte

Bibliotecas Python;) Por exemplo, BeautifulSoup - um analisador de HTML que aceita marcação incorreta. AFAIK não existe um Java lib puro semelhante.

0
adicionado
Você está certo. A versão estável é equivalente ao Python 2.2. Pode ser muito antigo ... e o Jython 2.5 ainda está no estado alfa. Depois que a versão estável estiver disponível, ela deve funcionar.
adicionado o autor sumek, fonte
Tem certeza de que funciona sob o Jython?
adicionado o autor Cristian Ciupitu, fonte

A sintaxe do Python (usada pelo Jython) é consideravelmente mais concisa e mais rápida de desenvolver para muitos programadores.

Além disso, você pode usar bibliotecas Python existentes em um aplicativo Java.

0
adicionado

O Jython também pode ser usado como uma linguagem de script incorporada em um programa Java. Você pode achar útil em algum momento escrever algo com uma linguagem de extensão embutida. Se trabalhar com o Java Jython for uma opção para isso (o Groovy é outro).

Eu usei principalmente o Jython para programação exploratória em sistemas Java. Eu poderia importar partes do aplicativo e pesquisar a API para ver o que acontecia chamando chamadas de uma sessão Jython interativa.

0
adicionado

Algumas tarefas são mais fáceis em algumas línguas do que em outras. Se eu tivesse que analisar algum arquivo, escolheria o Python sobre Java em um piscar de olhos.

0
adicionado
Eu precisava ler um arquivo bruto e analisar os principais bits de dados. Incorporar o jython no meio do meu aplicativo java me permite verificar facilmente o arquivo usando expressões regulares e compreensões de lista e, em seguida, retornar minhas descobertas para o meu código java.
adicionado o autor gregturn, fonte

Usar o Python é mais do que "açúcar sintático", a menos que você aproveite escrevendo (ou tenha seu IDE gerado) centenas de linhas de código de placa de caldeira. Há a vantagem das técnicas de Desenvolvimento Rápido ao usar linguagens dinamicamente tipificadas, embora a desvantagem seja que isso complica sua API e integração porque você não tem mais uma base de código homogênea. Isso também pode afetar a manutenção, porque nem todo mundo em sua equipe adora o Python tanto quanto você e não será tão eficiente com ele. Isso pode ser um problema.

0
adicionado

Analogia: Por que beber café quando você pode beber água da torneira e mastigar feijões amargos. :-)

Para algumas tarefas, o Python só tem um gosto melhor, funciona melhor e é rápido o suficiente (leva tempo para preparar?). Se o seu ambiente de programação ou implementação estiver focado na JVM, o Jython permitirá que você codifique o Python, mas sem alterar seu ambiente de implementação e tempo de execução.

0
adicionado

Sintaxe açucar.

0
adicionado
Sim. Programadores reais usam uma agulha magnetizada e uma mão firme (c) xkcd.com/378 . Tudo o resto é uma sintaxe de açúcar.
adicionado o autor jfs, fonte

Não há necessidade de compilar. Talvez você queira fazer algo rolar mais rápido do que usar uma linguagem compilada, como um protótipo.

... e você pode incorporar o interpretador Jython em seus aplicativos. Bom recurso, eu não posso dizer que eu usei, mas é legal mesmo assim.

0
adicionado

Na sua situação, não faz muito sentido. Mas isso não significa que nunca faça. Por exemplo, se você estiver desenvolvendo um produto que permita que os usuários finais criem extensões ou plug-ins, pode ser bom que ele seja programável por script.

0
adicionado

O Python possui alguns recursos de programação funcional, como lambdas. Java não tem essa funcionalidade, e alguns programas seriam consideravelmente mais fáceis de escrever se tal suporte estivesse disponível. Assim, às vezes é mais fácil escrever o código em Python e integrá-lo via Jython que tentar escrever o código em Java.

0
adicionado
O Java 8 possui lambdas.
adicionado o autor Daniel, fonte

Portar o código existente para um novo ambiente pode ser um dos motivos. Parte da sua lógica de negócios e funcionalidade de domínio pode existir em Python, e o grupo que escreve esse código insiste em usar o Python. Mas o grupo que implementa e mantém isso pode querer a capacidade de gerenciamento de um cluster J2EE para a escala. Você pode envolver a lógica no Jython em um EAR/WAR e, em seguida, o grupo de implementação está apenas vendo outro pacote J2EE a ser gerenciado como todos os outros pacotes J2EE.

isto é, é um meio para lidar com uma incompatibilidade de impedância.

0
adicionado