为什么在使用Java时可以使用Jython?

时间:2008-09-18 21:01:30

标签: java eclipse jython

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

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

两者的Eclipse IDE类似 - 即时“编译”,智能感知等。两者都允许使用Debug透视图。

如果我想测试几行Java,我不必创建一个全新的Java项目 - 我只使用Eclipse中的Scrapbook功能,它允许我“执行Java表达式,而无需创建新的Java程序。这是一种快速测试现有类或评估代码片段的简洁方法“

Jython允许使用Java库 - 但那么(根据定义)就是Java!

那么Jython还能提供哪些其他好处?

14 个答案:

答案 0 :(得分:36)

一个简单的例子(来自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清晰度。

还有什么?正如乔治会说的那样......

答案 1 :(得分:18)

Python语法(由Jython使用)对于许多程序员来说更简洁,更快速地开发。

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

答案 2 :(得分:6)

类比:为什么喝咖啡时,可以喝热自来水,咀嚼烤苦豆。 : - )

对于某些任务,Python只是味道更好,效果更好,而且足够快(需要时间来酿造?)。如果您的编程或部署环境专注于JVM,那么Jython允许您对Python进行编码,但不会改变您的部署和运行时环境。

答案 3 :(得分:6)

我刚刚发现了Jython,作为一名语言学家,我想我会说这有点像“为什么在使用法语时使用拉丁语”(忘记了拉丁文出现在法语之前的事实,当然)。

不同的人类语言实际上会让你以不同的方式思考。法语是一门很棒的语言,我在法国生活了很长时间并且完成了学位。但拉丁语的惊人力量和简洁性使你的思想进入了一个不同的区域,例如,可以交换单词顺序以产生各种微妙的效果。

我想,从我对Jython的粗略认识中,顺便说一下,我的热情真的激起了我,这会让我以不同的方式思考。我曾经对Python / Jython持怀疑态度,并且一直是Java泛型的忠实粉丝(具有讽刺意味的是减少打字量,因此如果你愿意,可以“拉丁文化”法语)。我不太了解像Jython这样的“动态类型”语言的全部含义,但我认为最好的方法是顺其自然,看看Jython在我的脑海中做了什么!

语言来来去去很有趣。另一个“拉丁语”可能被认为是具有无限递归语法的Algol68。但是,开发大规模递归代码的必要性,以及读取它并在其中思考的能力,还没有(感觉到)自己感觉到。 Jython 似乎是一个非常强大和优雅的适合我们现在的位置,使用OO库,Java swing的强大功能,以及一切都包含在一个非常优雅的包中。也许有一天Jython也会采用无限递归语法?

答案 4 :(得分:5)

我使用Jython进行Java代码的交互式测试。这通常比编写Java测试应用程序甚至任何脚本语言快得多。我可以玩这些方法,看看它是如何反应的。从那里我可以学到足够的东西来编写一些真正的代码或测试用例。

答案 5 :(得分:4)

某些语言的某些任务比其他语言更容易。如果我必须解析一些文件,我会眨眼间选择Python over Java。

答案 6 :(得分:4)

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

答案 7 :(得分:2)

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

答案 8 :(得分:2)

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

答案 9 :(得分:1)

无需编译。也许你想要比使用编译语言(如原型)更快地滚动。

...您可以将Jython解释器嵌入到您的应用中。不错的功能,我不能说我已经使用过它,但仍然很酷。

答案 10 :(得分:1)

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

我主要使用Jython在Java系统上进行探索性编程。我可以导入部分应用程序并围绕API查看通过调用交互式Jython会话发生的事情。

答案 11 :(得分:0)

语法糖。

答案 12 :(得分:0)

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

答案 13 :(得分:0)

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

即。它是一种处理阻抗不匹配的方法。