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

nzp*_*mad 25 java eclipse jython

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

我在Eclipse中集成了两种语言.因为Eclipse处理编译,解释,运行等两者"运行"完全相同.

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

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

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

那么Jython还有哪些其他好处呢?

e-s*_*tis 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) {}
    }
}
Run Code Online (Sandbox Code Playgroud)

在Python中:

import urllib
print urllib.urlopen('http://www.google.com').read()
Run Code Online (Sandbox Code Playgroud)

Jython允许您使用java健壮性,并在需要时使用Python清晰度.

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

  • 是的,你只需要自己编码.像其他一切一样. (23认同)
  • 没有什么能阻止Java拥有一个实用程序类来执行UrlUtil.open("www.google.com").read(). (14认同)
  • Corey Goldberg将Java与Python进行比较的例子就像在互联网上可以找到的虚假比较一样,上面的例子并没有那么好.(另外,它暗示了一个有争议的稳健性/清晰度二分法.)上面的Java代码比Python代码(OO,缓冲读取,异常框架等)做得更多.使用Jython是有原因的,但是一个简洁的例子并不是很有说服力. (8认同)
  • 首先,java代码没有那么多.Python代码是完整的OO,open()包装一个执行流式传输的文件对象.另外,我在这里看不到任何关于框架的信息.是的,有异常处理,但你也可以在Python中完成.这里真正的麻烦是java只是不让你以任何更短的方式做到这一点,即使功能较少.这不是对Java的攻击.我的观点是:你会使用Jython,因为有时你会想要更好的东西. (7认同)

Ben*_*ein 19

Python语法(由Jython使用)对于许多程序员来说更加简洁和快速.

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


Aar*_*ron 6

打个比方:为什么喝咖啡的时候可以喝热自来水,咀嚼烤苦豆.:-)

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


mik*_*ent 6

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

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

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

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


Joh*_*her 5

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


Luc*_* S. 0

语法糖。

  • 是的。真正的程序员使用磁化针和稳定的手 (c) http://xkcd.com/378/ 。其他一切都是语法糖。 (4认同)