【发布时间】:2009-03-29 08:41:47
【问题描述】:
如此多的服务器端和移动 Java 应用程序使用 Java 的本机 Java 语言。我们是否可以使用 Jython 来构建企业应用程序,例如网站、应用服务器等
另外,您对 Jython 中的 Java ME 应用程序有何看法。
附:也欢迎对问题发表评论。
【问题讨论】:
标签: java java-me jakarta-ee jython jvm-languages
如此多的服务器端和移动 Java 应用程序使用 Java 的本机 Java 语言。我们是否可以使用 Jython 来构建企业应用程序,例如网站、应用服务器等
另外,您对 Jython 中的 Java ME 应用程序有何看法。
附:也欢迎对问题发表评论。
【问题讨论】:
标签: java java-me jakarta-ee jython jvm-languages
不,Jython 不是 Java 的合适替代品。例如,如果不使用 Java 编写接口,然后在 Jython 中编写一个利用它的类,它就无法实现接口。
需要的是面向 JVM 的等价于 Boo。 Boo 是一种针对 .NET CLR 的语言,它大致受 Python 启发但不兼容,并且完全公开了 CLR 的功能(因此与 C# 功能等效)。目前没有与 Java 具有同等功能的 Pythonic 语言——而且这种语言必然与 Python 不兼容,因为 Python 根本不提供表达某些相关概念(例如接口类型信息)的方法。
由于对此有一些疑问,但我澄清一下:
Jython 不是 Java 的替代品,因为您不能采用任意的 Java 项目,而是决定在 Jython 中实现该项目的随机子集,并且开发团队中的任何其他人都不知道或关心。当然,Jython 适用于许多与 Java 相同的项目类,除非您正在构建将从 Java 调用的接口,而不是相反。鉴于“企业应用程序”往往具有许多彼此紧密操作的组件,因此能够构建具有任意外部接口的类很重要……而且在纯 Jython 中不容易做到这一点。
【讨论】:
这在很大程度上取决于您的要求。所有语言都有其优点和缺点。没有完美的语言,对语言选择做出明智的决定是程序员的一项重要技能。
我不同意 Charles 的观点,即 Jython 无法替代 Java,因为您无法实现接口。在动态语言中,它被视为您不需要的功能 接口(请参阅鸭子类型)。
Jython 采用 Python 的强大语言特性,并将其与对大量 Java 库的轻松访问相结合。然而,它在开销方面确实有代价,而且作为一种相当新的语言,你需要更少的程序员和支持来支持你。
Jython 的好处在于,如果出现性能问题,您可以用 Java 重写单个模块。速度问题在您可以将硬件用于解决问题的服务器上不太明显。在手机上,性能仍然是关键,我看不出 Jython 会在不久的将来在那里产生重大影响。
那么 Jython 会取代 Java 吗?不,我认为它不会——Java 背后的势头太大了。但我们会看到越来越多的软件使用 Jython 和其他针对 JVM 的语言编写。
【讨论】:
不,Jython 不能替代 Java,因为 Python 是动态类型的。是的,Jython 可用于服务器应用程序。
Jython 不适合 Java ME,因为 Java ME 的资源非常有限。也许几年后。
编辑:动态类型,不弱
【讨论】:
是的。动态语言是未来。大约一年前,我从 SUN 的代表那里听到了这一点。关于 Jython 的惊人之处在于对 Java 库的“本机”使用。 服务和其他组件可能会保留在 Java 中,但集成层肯定会朝着动态语言的方向发展。 我认为 Python 像 Java 一样是原生面向对象的,这就是它们匹配得如此出色的原因。 我不期望 Perl 等其他脚本语言会出现类似的情况,但可以肯定 Ruby 和 Groovy 也是不错的选择。
【讨论】:
您可以将 Jython 用于该域。 显然,Web 开发世界正朝着 Python 或 Ruby 等动态类型语言发展。 Jython 在这个领域很不错,因为它允许在企业中使用完整的“Java 堆栈”(应用服务器、Tomcat、部署和测试基础架构……)。您还可以在 Java 中实现您的业务逻辑。
但是,Jython 不能替代 Java,因为它是 C#。您(可能)提高了程序员的工作效率,但您会损失性能和编译时间检查。这些语言确实不同,并且针对不同的任务进行了“优化”。我建议评估 Jython 的较小、非关键任务,例如通过开始在其中实现一些测试用例。
我怀疑 Jython 是否对 Java ME 开发有用。原因在其他帖子中给出:资源限制。
【讨论】: