python和cpython是一个意思吗,cython和python的区别
Jython语言结合了Python的灵活性和高效性以及Java的强大功能。本书对这种语言进行了全面的介绍,有助于Java开发者提高开发和部署应用的能力。主要内容包括:Jython及其详细语法介绍,用Java类扩展Jython,用Jython编写各种应用等等。这本书详细阐述了Java和Jython之间的相同点和不同点,以及结合Java和Jython的强大力量。书中有大量的例子,通过大量的小例子描述了Jython的用法。
本书布局独特,讲解透彻,适合有一定经验的Java应用开发者。
Jython是两种流行语言Java和Python的结合。Java已经被广泛接受,这从很多公司都配置了基于Java的应用就可以看出来。另外,Java有一个巨大的可用类库,里面有详细的文档。Python具有良好的灵活性、快速的开发性和易用性。很难在两种语言之间做出选择,但是有了Jython,就不再需要做出这样的选择。Jython可以实现任何用Java或Python实现的类、算法和模式,不考虑其他语言,它可以在两种语言之间保持几乎无缝的操作。
无缝这个词在这本书里很重要,不断出现。其他扩展语言如Perl或Python需要专用的API或笨重的包装器。没有修改,任何C代码都不能在Perl或Python中使用,但是任何Java代码都可以在Jython中运行。由于与Java的无缝集成,您可以引入和使用任何Java类,并在Jython中创建派生类。包括为特定API编写的或用特定工具打包的类,还包括任何Java类。另外,可以将Jython编译成Java字节码,使其在Java的框架内运行。您甚至可以在Java中引入和使用任何Python类,并创建派生类。
Jython和Java之间也有一些小的区别。对正确理解Jython很有帮助。Java是一种类型丰富的语言,而Jython使用动态类型,没有明显的类型定义。Java有一些包含类的包,而Jython有包、模块、类和函数。Java必须编译,而Jython可以交互运行,解释未编译的脚本或者编译成字节码。Java类有像private和Protected这样的访问器,而Jython只有最小的访问限制,没有像Private这样明显的修饰符。
最有意思的是,Jython和Java的区别并没有带来太大的麻烦,相反,它们是相辅相成的。Jython的交互模式提供了一种快速测试和学习Java类的方法,而Java的接口和抽象类为Jython派生类提供了一种很好的指定协议的方法。Jython的动态类型对快速原型化和灵活性有很大的帮助,而Java的静态类型也增加了运行时效率和类型安全性。因为它们的无缝本质,所以它们相互补充。增加程序的成本来平衡这些特性会对程序的功能产生副作用。幸运的是,Jython使它们变得简单、易于理解,并且不需要额外的成本。
Jython是什么?
要理解Jython,首先要理解Python。Python是一种用c语言编写的高级、面向对象、开源的编程语言,Cuido vanRossum是Python最初的创造者,随后随着Python的快速发展,一大批高级设计师和程序员应运而生。使用Python的开发人员数量正在快速增长,而且一直在持续增长。不过,Sun的Java编程语言也很受欢迎。随着用Java实现的项目数量接近用C/C实现的项目数量,用Java实现Python是很有必要的。Jython,原名JPython,是Python语言的Java实现。为避免混淆,本书用CPython表示Python的C语言实现,用Jython表示Java实现,而Python表示实现的中性概念和Python语言规范的设计特点。
Jython是一种完整的语言,不是Java翻译器,也不仅仅是Python编译器。它是Python语言在Java中的完整实现。Jython也有很多继承自CPython的模块库。最有趣的是,与CPython或任何其他高级语言不同,Jython提供了对其实现语言的所有访问。所以Jython不仅给你提供了Python的库,还提供了所有的Java类。这使得它拥有巨大的资源池。
Jython和Python强调代码的简单、方便和可读性。Jython使用缩进来分隔代码块,以避免在Java中使用花括号。Jython使用新行来表示新语句的开始,有几个重要的区别,比如允许在每个语句后省略分号。Jython没有像Java中那样的公共、私有和受保护的访问器,因此为程序员提供了快速开发和关注程序逻辑所需的灵活性。如前所述,Jython不使用明显的静态类型定义,所以程序员不需要从程序逻辑转移到类型定义。
Jython的历史可以追溯到JimHugunin,他是Guidovan Rossum在国家研究力量中心(CNRI)的同事。JimHugunin意识到了用Java实现Python编程语言的重要性,实现了最初名为JPython的语言。由于AspectJ (http://AspectJ.org/)的开发,JimHugunin无法继续在JPython上工作。所以当Python开发者准备离开CNRI时,当时也在CNRI的hsdxmf Warsaw继续领导开发。
Python和Jython项目团队离开CNRI后,在Sourceforge上换成了更开放的语言模型。在此期间,对Jython(JPython)做出重大贡献的人FinnBock领导了Jython项目组。正是FinnBock的杰出贡献,才使得Jython现在成为如此有价值的工具。像Jython这样的开源项目和开发维护它们的人一样优秀。从这个意义上说,Jython很幸运有FinnBack的贡献和指导。另一个对Jython做出最新有价值贡献的人是受伤的绿草Pedroni。受伤绿草的贡献主要在Jython的类加载,导入机制等方面。芬恩和受伤的绿草目前是Jython的两个主要开发者。
为什么需要Jython?
Jython的独特之处在于它继承了Java和Python的特点。本节介绍这些功能及其重要性。
无缝访问Java类
用Java实现Python可以看到有趣的Java反射API的作用。让反射Jython无缝地使用任何Java类。Jython继承了CPython的许多优点,但与其他专门为Python编写的书籍不同,C和Python之间存在一些问题,限制了C库函数的使用。这个问题在Jython中得到真正的解决,大大提高了它的编程效率和生产力。
由于与Java的无缝集成,Jython可以让任何已经部署了Java应用程序和框架的公司受益,而无需额外的工作。任何一家公司要接受任何一个部门的编程语言都不容易,需要慎重考虑,因为这涉及到整体架构、服务器和外围工具。Jython作为一种无缝集成的Java语言,可以无缝地添加到现有的Java应用程序中,而无需进行重大选择。很多公司花了很多钱来构建Java应用,这降低了采用CPython、Perl、Ruby、PHP等无法透明集成现有Java实现的高级语言的好处和吸引力。Jython有能力补充现有的spring mvc,两者可以无缝结合。
效率
编程语言的效率是一个非常宽泛的课题,要考虑程序员的时间、整体复杂度、代码行数、可用性、可维护性和运行效率。当然,很多人并不认同赋予这些变量的权重,他们往往在不同的情况下关注不同的东西。不过这本书的前提是Jython除了运行时效率之外,其他方面都超越了其他语言。Jython的运行速度可以和其他高级语言相比,但速度不是高级语言的目标和特点。不同的是,在加速一个需要的应用时,把Jython代码翻译成Java更有效,这是由于Jython和Java的无缝集成。此外,直接访问所有有效的Jaya类增加了改进现有类的可能性。
动态类型
在Jython中,您不必像在Java中那样声明类型,因为类型是在运行时确定的。Jython的列表和映射类型是高级多态Java类的例子。这意味着多态对象可以处理不同的数据类型。例如,Jython的列表类型可以是一系列数字、字符串、字符或它们的组合。和动态多态列是对编程的巨大贡献。从很多放弃了显式静态类型定义的高级语言可以看出,它减少了代码的行数,降低了复杂度,提高了程序的效率。
自省和动态执行
Jython有一些内部函数,允许方便的对象自省和代码的动态执行。自省是发现对象信息的能力,而动态执行是执行运行时生成的代码的能力。该功能大大减少了代码行数,增加了程序的可靠性,维护起来更加方便。这也可以使数据和程序结构或逻辑更好地集成,而不影响可重用性,因为一切都是在运行时决定的。
第一类函数和函数编程
Jython和Python一样,有第一种功能。第一种函数是指可以像变量一样调用的对象。第一类函数对于事件处理等情况有意义,导致Java内部类的函数增加。Java的内部类虽然类似于第一类函数,但是在方便性和灵活性上有很大的缺点。这是因为Jython中的第一类函数减少了Jython中的语法开销。
Jython还包括函数编程所需的所有工具。这意味着Jython支持强制性的面向对象函数式编程。这显然是有教学意义的。它使Jython程序员能够选择最适合特定问题的编程语言,而不是被语言所强加。列表包含、lambda form、map、filter和reduce等功能化工具在减少代码行数、复杂度和名称重新绑定次数(名称重新绑定有很大的副作用)方面也有很大的作用。
学习周期短
任何Java程序员都可以在几天内熟悉Jython。由于内容很多,关键在于学习细节,但短短几天就拥有Jython的快速开发功能,确实难能可贵。那些从事测试和技术支持的团队,通常没有太多的时间去学习复杂的Java代码,但是学习Jython可以很快提高公司的技术水平和效率,而且开销很小。
写一次,到处用。
因为Jython是用Java写的,可以编译成Java字节码,所以Jython还具有Java的“一次编写,随处可用”的特点。Jython可以在任何兼容的Java1.1 或更高版本的Java虚拟机(JVM)平台上运行。此外,您可以将Jython应用程序编译成独立的字节码,它可以在任何兼容的JVM上运行。在Linux上编译的应用程序可以在任何其他兼容JVM的平台上运行。
Java安全
Java的安全性是特殊的,也越来越重要。从沙盒到信令,Jython都有能力使用Java的特殊安全框架。
代码清晰度
代码的清晰是Python最大的优势,当然也是Jython最大的优势。避免不必要的标点和线条。Jython代码在可读性和清晰性方面类似于自然语言。这源于Python致力于代码块和语句的简单描述。缩进标记代码块,换行符标记新语句。除此之外,语法通常支持
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。