25

標準的な答えは、数行のコードを書くだけでよい場合に便利だというものです...

私は両方の言語を Eclipse 内に統合しています。Eclipse はコンパイル、解釈、実行などを処理するため、どちらもまったく同じように「実行」します。

両方の Eclipse IDE は類似しており、即時の「コンパイル」、インテリセンスなどです。どちらもデバッグ パースペクティブを使用できます。

Java の数行をテストしたい場合、まったく新しい Java プロジェクトを作成する必要はありません。Eclipse内のScrapbook機能を使用するだけで、 「新しい Java プログラムを作成しなくても Java 式を実行できます。これは、既存のクラスをすばやくテストしたり、コード スニペットを評価したりするための優れた方法です。" .

Jython では Java ライブラリを使用できますが、(定義上) Java もそうです!

では、Jython には他にどのような利点があるのでしょうか?

4

14 に答える 14

37

簡単な例 ( http://coreygoldberg.blogspot.com/2008/09/python-vs-java-http-get-request.htmlから):

Java のバックエンドがあり、HTTP GET リクエストを実行する必要があります。

ネイティブ:

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) {}
    }
}

Python の場合:

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

Jython を使用すると、Java の堅牢性と、必要に応じて Python の明快さを使用できます。

ほかに何か ?ジョルジュが言うように...

于 2008-09-18T22:13:00.860 に答える
19

Python 構文 (Jython で使用) は、多くのプログラマーにとってかなり簡潔で、開発が迅速です。

さらに、既存の Python ライブラリを Java アプリケーションで使用できます。

于 2008-09-18T21:03:01.403 に答える
8

例え:代わりに熱い水道水を飲んで、焙煎した苦い豆を噛むことができるのに、なぜコーヒーを飲むのか。:-)

一部のタスクでは、Pythonの味が良く、動作が良く、十分に高速です(作成に時間がかかりますか?)。プログラミングまたはデプロイメント環境がJVMに重点を置いている場合、JythonではPythonをコーディングできますが、デプロイメントおよびランタイム環境を変更する必要はありません。

于 2008-12-05T19:33:55.547 に答える
6

私はJythonを発見したばかりで、少し言語学者として、「フランス語が使えるのに、なぜラテン語を使うのか」と尋ねるようなものだと思います(もちろん、ラテン語がフランス語の前に来たという事実を忘れて) .

人間の言語が異なれば、実際にはさまざまな方法で考えさせられます。フランス語は素晴らしい言語です。私は長い間フランスに住んでおり、学位を取得しています。しかし、ラテン語の驚くべき力と簡潔さは、たとえば、あらゆる種類の微妙な効果を生み出すために語順を入れ替えることができる別のゾーンにあなたの心を置きます.

ちなみに、私の熱意を本当に刺激したJythonとの大雑把な知り合いから、それは私にさまざまな方法で考えさせるだろうと思います. 私はしばらくの間、Python/Jython について非常に懐疑的でした。たとえば、Java ジェネリックの大ファンでした (皮肉なことに、タイピングの量を減らすため、必要に応じてフランス語を「ラテン語化」します)。私は、Jython のような「動的に型付けされた」言語の意味を完全には理解していませんが、流れに沿って、Jython が私の心に何をするかを確認するのが最善だと思います!

言語が行き来するのは面白いです。別の「ラテン語」は、無限再帰構文を持つ Algol68 と見なされる場合があります。しかし、大規模な再帰コードを開発する必要性と、それを読んで考える能力は、(まだ) 感じられていません。Jython、OO ライブラリ、Java Swing のパワー、そしてすべてが非常にエレガントなバンドルにまとめられているため、現在の状況に非常に強力かつエレガントに適合しているようです。いつか Jython も無限再帰構文を採用するのでしょうか?

于 2011-05-23T21:11:54.330 に答える
5

Java コードのインタラクティブなテストにJython を使用しています。これは、多くの場合、Java テスト アプリケーションやスクリプト言語を記述するよりもはるかに高速です。メソッドをいじって、それがどのように反応するかを見ることができます。そこから、実際のコードやテスト ケースを作成するのに十分な学習ができます。

于 2008-09-19T00:11:09.843 に答える
4

一部のタスクは、一部の言語では他の言語よりも簡単です。ファイルを解析する必要がある場合は、すぐに Java ではなく Python を選択します。

于 2008-09-18T21:49:18.843 に答える
4

Python を使用することは、何百行ものボイラー プレート コードを書く (または IDE で生成する) ことを好まない限り、「シンタックス シュガー」以上のものです。動的に型付けされた言語を使用する場合、Rapid Development 手法には利点がありますが、同種のコードベースがなくなるため、API と統合が複雑になるという欠点があります。これは、チームの全員があなたほど Python を愛しているわけではなく、Python を効率的に使用できるわけではないため、メンテナンスにも影響を与える可能性があります。それは問題になる可能性があります。

于 2008-09-18T21:53:36.010 に答える
2

Python ライブラリ ;) たとえば、BeautifulSoup - 不適切なマークアップを受け入れる HTML パーサー。私の知る限り、同様の純粋な Java ライブラリはありません。

于 2008-09-18T21:07:59.270 に答える
2

Python には、ラムダなどの関数型プログラミングの機能がいくつかあります。Java にはそのような機能がなく、そのようなサポートが利用可能であれば、一部のプログラムは非常に簡単に作成できます。したがって、Python でコードを記述し、Java でコードを記述しようとする Jython 経由で統合する方が簡単な場合があります。

于 2008-09-18T21:16:18.673 に答える
1

Jython は、Java プログラム内の組み込みスクリプト言語としても使用できます。ビルトインの拡張言語を使って何かを書くと、ある時点で役に立つかもしれません。Java Jython での作業がこれのオプションである場合 (Groovy は別のオプションです)。

私は主に、Java システムでの探索的プログラミングに Jython を使用してきました。アプリケーションの一部をインポートし、API を調べて、インタラクティブな Jython セッションから呼び出しを呼び出すことで何が起こったかを確認できました。

于 2008-09-18T22:02:50.543 に答える
1

コンパイルする必要はありません。プロトタイプのように、コンパイルされた言語を使用するよりも速く何かを作りたいと思うかもしれません。

...そして、Jython インタープリターをアプリに埋め込むことができます。素晴らしい機能です。使用したとは言えませんが、それでもクールです。

于 2008-09-18T21:03:28.500 に答える
0

構文糖。

于 2008-09-18T21:02:57.223 に答える
0

その理由の 1 つは、既存のコードを新しい環境に移植することです。ビジネス ロジックとドメイン機能の一部が Python に存在し、そのコードを書いているグループが Python の使用を主張している場合があります。しかし、それをデプロイおよび保守するグループは、規模に合わせて J2EE クラスターの管理性を必要とする場合があります。Jython のロジックを EAR/WAR でラップすると、デプロイメント グループは、他のすべての J2EE バンドルと同様に、別の J2EE バンドルが管理されることを確認します。

つまり、インピーダンスの不整合に対処するための手段です。

于 2008-09-19T03:04:43.420 に答える
0

あなたの状況では、それはあまり意味がありません。しかし、それは決してそうではないという意味ではありません。たとえば、エンド ユーザーが拡張機能やプラグインを作成できる製品を開発している場合、それをスクリプト化できると便利です。

于 2008-09-18T21:04:14.473 に答える