「大数据」(一百二十九)Python图形用户界面-Jython和Swing

【导读:数据是二十一世纪的石油,蕴含巨大价值,这是·情报通·大数据技术系列第[129]篇文章,欢迎阅读收藏】

1 基本概念

Jython 是一种可以把两种不同的编程语言结合在一起的工具。首先,它使 Python 程序员介入到 Java 开发环境并让他们能快速开发方案原型,以便无缝地集成到现有的 Java 平台上。其次,它能在 Java 中加入脚本语言,并以此来简化数计百万计的 Java 程序员的工作。 Java 程序员们,再也不用为他们刚写的一个类写一大堆的测试用例或驱动程序。 Jython 提供了 Python 的大部分功能,以及实例化 Java 类并与 Java 类交互的功能。 Jython 代码被动态地编译成 Java 字节码,因此,你可以用 Jython 扩展 Java 类。也可以用 Java 来扩展 Python 。在 Python 中写一个类,像使用 Java 类一样使用这个类是很容易的事情。你甚至可以把 Jython 脚本静态地编译为 Java 字节码 。

2 术语解释

2.1 Jython 和 Swing

Python 的 Java 实现,相比于 CPython ,它与 Java 语言之间的互操作性要远远高于 CPython 和 C 语言之间的互操作性。

在 Python 中可以直接使用 Java 代码库,这使得使用 Python 可以方便地为 Java 程序写测试代码,更进一步,可以在 Python 中使用 Swing 等图形库编写 GUI 程序。

Jython 会将 Python 代码动态编译成 Java 字节码,然后在 JVM 上运行转换后的程序,这意味着此时 Python 程序与 Java 程序没有区别,只是源代码不一样。

在 Python 中写一个类,像使用 Java 类一样使用这个类是很容易的事情。

你甚至可以把 Jython 脚本静态地编译为 Java 字节码。

「大数据」(一百二十九)Python图形用户界面-Jython和Swing

2.2 函数和函数编程

Jython 与 Python 一样有第一类函数。第一类函数是指能像变量一样的可调用的对象。第一类函数在对事件处理和其他情况下有意义,这导致增加了 Java 内部类的功能。虽然 Java 的内部类与第一类函数类似,但它在方便性与灵活性方面有很大的不足,这是由于 Jython 中的第一类函数减少了 Jython 中的语法开销。

Jython 也包括了所有函数编程所需要的工具。这意味着强制的面向对象的函数编程在 Jython 中得到支持。这显然在教学上很有意义,它使 Jython 程序员能选择最适合于特定问题的编程语言而不是由语言强加。函数化的工具如列表包含、 lambda 表单、 map 、 filter 和 reduce 也对减少代码的行数、降低复杂性和名字重绑定数 ( 名字重绑定有很大副作用 ) 起到很大的作用。

2.3 写一次,处处可用

由于 Jython 是用 Java 编写的且由于其可编译成 Java 字节码,因此 Jython 也具有 Java 的“写一次,处处可用”的特点。 Jython 能运行在任何可兼容的 Java1 . 1 ‘或更高的 Java 虚拟机 (JVM) 版本的平台上。另外你可将 Jython 应用编译成自足的字节码,它能运行在任何兼容的 JVM 上。在 Linux 上编译的应用能运行在有兼容 JVM 的任何其他平台上。

2.4 对 Java 类的无缝存取

在 Java 中实现 Python 可以看到有趣的 Java 反射 API 的作用。反射使 Jython 能无缝地使用任何 Java 类。 Jython 从 CPython 中继承了很多优点,但 CPython 不像别的专为 Python 所写的一样,在 C 和 Python 之间有一些问题限制了 C 库函数的使用。在 Jython 中真正解决了这个问题,使其编程的效率和生产力得到了很大的提高。

由于与 Java 的无缝集成, Jython 能使任何部署了 Java 应用和框架的公司受益而不需要额外的工作。接受任何一种部门的编程语言,对任何一个公司而言都是不容易的,需要深思熟虑,因为这牵涉到整体结构、服务器和外围的工具。 Jython 作为 Java 的一个无缝集成的语言,可以在已存在的 Java 应用上无缝增加而不需要重大抉择。很多公司都花费了很多资金来建立 Java 的应用,这使采用 CPython 、 Perl 、 Ruby 、 PHP 和其他不能透明地集成已有 Java 实现的高级语言的效益降低,吸引力下降。而 Jython 有能力对已存在的 Java 框架进行补充,且二者能无缝地结合。


分享到:


相關文章: