25

标准答案是,当您只需要编写几行代码时它很有用......

我在 Eclipse 中集成了两种语言。因为 Eclipse 处理编译、解释、运行等都“运行”完全相同。

两者的 Eclipse IDE 是相似的——即时“编译”、智能感知等。两者都允许使用 Debug 透视图。

如果我想测试几行 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 使用)对于许多程序员来说开发起来更加简洁和快速。

此外,您可以在 Java 应用程序中使用现有的 Python 库。

于 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

I use Jython for interactive testing of Java code. This is often much faster than writing Java test applications or even any scripting language. I can just play with the methods and see how it reacts. From there I can learn enough to go and write some real code or test cases.

于 2008-09-19T00:11:09.843 回答
4

在某些语言中,某些任务比其他语言更容易。如果我必须解析一些文件,我会选择 Python 而不是 Java。

于 2008-09-18T21:49:18.843 回答
4

除非您喜欢编写(或让您的 IDE 生成)数百行样板代码,否则使用 Python 不仅仅是“语法糖” 。使用动态类型语言时,快速开发技术具有优势,但缺点是它会使您的 API 和集成变得复杂,因为您不再拥有同质的代码库。这也会影响维护,因为不是您团队中的每个人都像您一样喜欢 Python,而且使用它的效率也不高。这可能是个问题。

于 2008-09-18T21:53:36.010 回答
2

Python 库 ;) 例如BeautifulSoup - 一个接受错误标记的 HTML 解析器。AFAIK 没有类似的纯 Java 库。

于 2008-09-18T21:07:59.270 回答
2

Python 具有函数式编程的一些特性,例如 lambda。Java 没有这样的功能,如果有这样的支持,一些程序会更容易编写。因此,有时用 Python 编写代码并通过 Jython 将其集成以尝试用 Java 编写代码会更容易。

于 2008-09-18T21:16:18.673 回答
1

Jython 还可以用作 Java 程序中的嵌入式脚本语言。您可能会发现在某些时候使用内置的扩展语言编写一些东西很有用。如果使用 Java Jython 是一种选择(Groovy 是另一种选择)。

我主要使用 Jython 在 Java 系统上进行探索性编程。我可以导入应用程序的部分内容并查看 API,通过从交互式 Jython 会话调用调用​​来查看发生了什么。

于 2008-09-18T22:02:50.543 回答
1

无需编译。也许你想得到比使用编译语言更快的东西,比如原型。

...您可以将 Jython 解释器嵌入到您的应用程序中。不错的功能,我不能说我用过,但还是很酷。

于 2008-09-18T21:03:28.500 回答
0

将现有代码移植到新环境可能是原因之一。你的一些业务逻辑和领域功能可能存在于 Python 中,而编写该代码的团队坚持使用 Python。但是部署和维护它的团队可能需要 J2EE 集群的可管理性以实现规模化。您可以将 Jython 中的逻辑包装在 EAR/WAR 中,然后部署组将看到另一个 J2EE 捆绑包像所有其他 J2EE 捆绑包一样进行管理。

即,它是一种处理阻抗失配的方法。

于 2008-09-19T03:04:43.420 回答
0

语法糖。

于 2008-09-18T21:02:57.223 回答
0

在你的情况下,这没有多大意义。但这并不意味着它永远不会。例如,如果您正在开发一种允许最终用户创建扩展或插件的产品,那么可编写脚本可能会很好。

于 2008-09-18T21:04:14.473 回答