【问题标题】:Can Jython replace Java? [closed]Jython 可以取代 Java 吗? [关闭]
【发布时间】:2009-03-29 08:41:47
【问题描述】:

如此多的服务器端和移动 Java 应用程序使用 Java 的本机 Java 语言。我们是否可以使用 Jython 来构建企业应用程序,例如网站、应用服务器等

另外,您对 Jython 中的 Java ME 应用程序有何看法。

附:也欢迎对问题发表评论。

【问题讨论】:

    标签: java java-me jakarta-ee jython jvm-languages


    【解决方案1】:

    不,Jython 不是 Java 的合适替代品。例如,如果不使用 Java 编写接口,然后在 Jython 中编写一个利用它的类,它就无法实现接口。

    需要的是面向 JVM 的等价于 Boo。 Boo 是一种针对 .NET CLR 的语言,它大致受 Python 启发但不兼容,并且完全公开了 CLR 的功能(因此与 C# 功能等效)。目前没有与 Java 具有同等功能的 Pythonic 语言——而且这种语言必然与 Python 不兼容,因为 Python 根本不提供表达某些相关概念(例如接口类型信息)的方法。


    由于对此有一些疑问,但我澄清一下:

    Jython 不是 Java 的替代品,因为您不能采用任意的 Java 项目,而是决定在 Jython 中实现该项目的随机子集,并且开发团队中的任何其他人都不知道或关心。当然,Jython 适用于许多与 Java 相同的项目类,除非您正在构建将从 Java 调用的接口,而不是相反。鉴于“企业应用程序”往往具有许多彼此紧密操作的组件,因此能够构建具有任意外部接口的类很重要……而且在纯 Jython 中不容易做到这一点。

    【讨论】:

    • -1 在没有任何支持的情况下假定接口是必需的。并不是说 Jython 可以或应该取代 Java,但这是任意推理。
    • @Jesse - Java 语言可用于创建 Jython 无法创建的外部可见接口这一事实意味着 Jython 在访问Java 对象系统。如果语言 A 只能表达语言 B 能表达的东西的一个子集,你怎么能称它为替代?
    • @Charles,如果我对你说汽车不可能代替马车,因为汽车不能产生肥料,也不能为你提供减少马饲料储存的方法,你会怎么做?回应是?
    • @Jesse - 问题不在于是否可以在任何情况下使用 Jython 来代替 Java,而在于它是否是 Java 的替代品。不合格的替代品必须在所有方面都合适——包括,在马的情况下,粪便生产。如果有人问 Jython 是否可以在特定上下文中替代 Java,那将是一个不同的问题。
    • @Jesse - 更重要的是,如果我承诺在纯 Jython 中做一个项目,并且有人要求我编写一个我需要放入 Java 的接口(如果组件我正在构建的是一个旨在使用本机 Java 代码的库!),我突然有一些解释要做。
    【解决方案2】:

    这在很大程度上取决于您的要求。所有语言都有其优点和缺点。没有完美的语言,对语言选择做出明智的决定是程序员的一项重要技能。

    我不同意 Charles 的观点,即 Jython 无法替代 Java,因为您无法实现接口。在动态语言中,它被视为您不需要的功能 接口(请参阅鸭子类型)。

    Jython 采用 Python 的强大语言特性,并将其与对大量 Java 库的轻松访问相结合。然而,它在开销方面确实有代价,而且作为一种相当新的语言,你需要更少的程序员和支持来支持你。

    Jython 的好处在于,如果出现性能问题,您可以用 Java 重写单个模块。速度问题在您可以将硬件用于解决问题的服务器上不太明显。在手机上,性能仍然是关键,我看不出 Jython 会在不久的将来在那里产生重大影响。

    那么 Jython 会取代 Java 吗?不,我认为它不会——Java 背后的势头太大了。但我们会看到越来越多的软件使用 Jython 和其他针对 JVM 的语言编写。

    【讨论】:

    • 我同意接口是一个邪恶的黑客。但是,如果您正在构建一个 API 以供用本机 Java 编写的代码使用,那么这种 hack 往往变得很有必要。毕竟,如果我们谈论的是真正的“企业应用程序”,您希望能够将部件外包给出价最低的人……而出价最低的人更可能了解 Java,而不是 Python。
    • @Charles,这就是 Jython 的美妙之处 - 外包组件可以是 Java,您可以从 Jython 使用它们而无需额外的努力。正如我所说,我认为它不会取代 Java,但它仍然很有用。
    • 仅当外包组件不尝试本地调用 Jython 代码时。如果调用约定是单向的而不是双向的,是的,没有问题。
    【解决方案3】:

    不,Jython 不能替代 Java,因为 Python 是动态类型的。是的,Jython 可用于服务器应用程序。

    Jython 不适合 Java ME,因为 Java ME 的资源非常有限。也许几年后。

    编辑:动态类型,不弱

    【讨论】:

    【解决方案4】:

    是的。动态语言是未来。大约一年前,我从 SUN 的代表那里听到了这一点。关于 Jython 的惊人之处在于对 Java 库的“本机”使用。 服务和其他组件可能会保留在 Java 中,但集成层肯定会朝着动态语言的方向发展。 我认为 Python 像 Java 一样是原生面向对象的,这就是它们匹配得如此出色的原因。 我不期望 Perl 等其他脚本语言会出现类似的情况,但可以肯定 Ruby 和 Groovy 也是不错的选择。

    【讨论】:

      【解决方案5】:

      您可以将 Jython 用于该域。 显然,Web 开发世界正朝着 Python 或 Ruby 等动态类型语言发展。 Jython 在这个领域很不错,因为它允许在企业中使用完整的“Java 堆栈”(应用服务器、Tomcat、部署和测试基础架构……)。您还可以在 Java 中实现您的业务逻辑。

      但是,Jython 不能替代 Java,因为它是 C#。您(可能)提高了程序员的工作效率,但您会损失性能和编译时间检查。这些语言确实不同,并且针对不同的任务进行了“优化”。我建议评估 Jython 的较小、非关键任务,例如通过开始在其中实现一些测试用例。

      我怀疑 Jython 是否对 Java ME 开发有用。原因在其他帖子中给出:资源限制。

      【讨论】:

      • "语言确实不同,并且针对不同的任务进行了“优化”。"你觉得哪些任务更好?
      猜你喜欢
      • 1970-01-01
      • 2011-01-30
      • 2018-10-27
      • 2011-04-13
      • 2011-05-26
      • 1970-01-01
      • 2013-06-08
      • 2012-01-14
      • 1970-01-01
      相关资源
      最近更新 更多