InfoQ

新闻

JVM之上的Python Web框架

作者 Craig Wickesser译者 曹云飞 发布于 2008年1月22日 下午7时11分

社区
Java
主题
开放源代码,
语言,
Web框架
标签
Django,
Jython,
Python

Python,是一种面向对象的动态语言,已经出现了很多年。如同Ian Bicking所指出的,在Python的历史中有很多web框架可供选择(例如Pylons,TurboGears,CherryPy,Zope,Django等等),这使得开发者难以做出选择,

很久很久(比绝大多数现存的框架要久)以来,人们一直在抱怨在Python中Web框架太多。
最近Django在Python和Java的世界中风生水起
Django是一个高级Python Web框架,它鼓励快速开发和干净、实用的设计。
Django开发了一个快速发展的在线新闻运营网站并且使用了两年,其设计目标是处理两个挑战:一个新闻编辑室的强制交付日期和开发该编辑室的有经验的Web开发者的紧迫需求。Django使你可以快速构建高性能的、优雅的Web应用。
Django非常关注于自动化并且坚持DRY(不要重复你自己)原则。

在JVM方面存在Jython

由100%纯Java实现的高级的、动态的、面向对象的语言Python,与Java平台无缝集成。它允许你在任何Java平台上运行Python。
Jython 从2.1版本发展到2.2用了将近6年,但是在最近几个月Jython已经经历了两个版本候选以及另一个稳定版本,目前的版本是2.2.1。Jython 开发人员正在努力工作开发Jython 2.5,其目标是让Jython与CPython 2.5同步并提供一个更干净而一致的代码基础。
Jython 2.5的一个次要目标是力图使得某些CPython框架,特别是Web框架可以在Jython上工作,例如:
  • Django
  • Pylons
  • TurboGears
  • Twisted

InfoQ最近有幸采访了Jim Baker,一个python传播者与Django on Jython (DoJ)的贡献者,以期得知将会发布什么以及何时发布。

Django on Jython的预期发布日期是什么?

今年。Jython的下一个版本肯定会出现。请看#2关于Jython的计划。Django已经可以工作了,只有一些小的变化, 谢谢很多朋友为鉴别(微小的)Jython的不兼容性所做的很多工作。现在大多数我们已经鉴别的问题实际上仅仅发生在测试中,Django对于 Python做了某种假设,而那些假设不适用于Jython。例如有这样一个假设:哈希算法与字典的实现算法是一样的,因为我们使用Java的哈希表 (ConcurrentHashMap),所以这个假设是不成立的。尽管那只是测试过程中的一个极端情况,实际上Django并不关心哈希算法,我们仍然 计划通过执行所有的测试来证明没有问题(按需修复问题)。
Django on Jython需要Jython的什么版本?
Jython 2.5 —— 相当于CPython 2.5(或者方便的叫做Python!)是我们在Jython项目中的目标。实际上目前项目进展十分迅速。我们有一个2.5的编译器可供实验用途,由于我 们有更多的人来测试这个编译器,它变得越来越健壮了。这个“新编译器”是在一个由我指导的Google代码之夏(Google Summer of Code,译者注:Google Summer of Code是一个年度项目,最初于2005年5月至8月举办,期间Google会奖励在夏天成功的完成了一个免费软件/开源软件的学生)项目中最早开发的。 (Bruce Eckel在一篇博文中指出,实际上我们在9月中旬完成了该项目!)在三月中的Python会议上,我们将基于目前的情况设定编译器项目的明确目标。Tobias和我将在Python会议上发表我们的论文“Jython的一个新编译器”
这个版本是否会有一个简单一些的安装?目前在你的博文中建议使用补丁,拷贝文件,等等。
我们会有一个简单的安装!我的报告是为了说明实际上我们已经很接近这个目标。我也期望在主要的IDE中,例如Eclipse或者Netbeans会有插件支持,尽管现在还没有。
是否Django试图成为Ruby的Rails和Groovy的Grails那样的东西?
Django提供了与这些Web应用框架类似的功能,而且有一个更健壮的平台。Django支持多线程,而不象RoR(Ruby on Rails)那样不支持,这意味着Django在Java平台上工作不需要使用大量的技巧,例如使用多重类装载器。在数据库方面我们目前支持 PostgreSQL,在MySQL方面也完成了一些工作。我帮助编写了Django的Oracle后端程序。我们还计划支持Java数据库 (Derby)。
Jim还说有一些预先配置好的工具是很有用的,可以更容易的使用Diango on Jython(DoJ)来实验,
如果Django on Jython(DoJ)有这样预先配置好的工具可供使用我会很高兴:Derby + Tomcat。开发者应该可以通过Eclipse或者Netbeans或者他们选择的某个IDE的插件来访问Derby和Tomcat,这意味着开发者可 以直接从IDE中配置Derby和Tomcat。工具还提供明显的向其他容器和数据库迁移的方法。也许更重要的是,这样的工具配置允许开发者容易用DoJ 做实验,这一实验可以是构建一个Django应用,或者使用元组空间(tuple space,译者注:是联想存储器的一种实现,为元组提供生成的存储空间,http://c2.com/cgi/wiki?TupleSpace),规则 引擎,PDF工具,或者其它Java平台上可用的重型基础结构。我认为这是DoJ为用户提供真正价值之处。

欲得到更多信息请访问下列链接:

查看英文原文:Python Web Framework on the JVM

没有回复

回复

独家内容

剖析短迭代

敏捷教练Dave Nicolette提出:我们应该如何设定迭代长度?是要根据发布周期的时间么?使用短迭代又有哪些好处?

应用JSF、Ajax和Seam开发Portlets(1/3)

本文主要讲述了如何用JBoss Portlet Container 和JBoss Portlet Bridge创建新项目,怎样配置一个JSF应用去使用JBoss Portlet Bridge,以及JBoss Portlet Bridge所具备的功能。

AtomServer:数据分发的发布动力(第二部分)

在这篇文章里,Bryon Jacob和Chris Berry将和我们继续探讨AtomServer,它是基于Apache Abdera的完整Atom存储实现。作者还创建了几个Atompub规范扩展,其中包括自动标记、批处理和Feeds聚合。

架构师(试刊第二期)

InfoQ中文站的电子杂志《架构师》试刊第二期出版了!相比于上期,我们在内容的选择安排和版式上都根据读者的意见重新做了修正。“细节决定成败”,我们希望基于InfoQ中文站的专业内容,《架构师》能逐渐成为大家喜欢的电子刊物!

一种正规的性能调优方法:基于等待的调优

在本文中,Steven Haines探讨了Web应用性能调优问题。该领域过去更像是一门艺术而不是一门科学。他提出了一种称为基于等待调优的方法,使整个调优过程更加可度量,也因此更具科学性。

Java程序员ActionScript 3入门

通常来说,改变技术路线时最艰难的部分是辨别语言语法之间的不同。这篇文章就为Java开发者提供了一份如何转向Flex基础语言ActionScript的指南。

浅谈如何创建Rails应用

本视频主要以财帮子为例,介绍了如何创建一个PV为百万级的Rails应用。其中包括:Rails应用的服务器架构、Rails Cache的优化、负载均衡的处理、Web服务器的调试、分布式解决方案、Open API的设计等等。

Alexandru Popescu谈InfoQ.com网站架构

InfoQ首席架构师Alexandru Popescu在采访中谈论了InfoQ架构、Webwork与DWR、Hibernate与JCR、Hibernate可扩展性、最新的InfoQ视频流系统和InfoQ的未来规划。