Python能否成为Web应用程序的良好替代品,否则将在Java EE中完成?

时间:2010-07-31 19:01:01

标签: java python java-ee

Python是否可以替代使用Java EE开发的Web应用程序?如果是这样,哪个Python Web应用程序框架可能是一个不错的选择?请在下方查看有关该应用的详细信息我已经单独询问过几个人,他们在Java EE和Python Web应用程序中的任何一个或两个上工作了很长时间,得到了一些答案,表明Python可能不是一个很好的选择,主要是由于易于扩展,这是需求之一。给出的另一个原因是在开发应用程序的世界中相对缺乏Python开发人员。我们或许可以克服第二个问题,但不确定第一个问题。

有问题的应用程序是一个金融领域B2B,有几个不同类型的用户(如:“演员”具有不同的现实角色 - 例如买家,卖家),一些管理员用户,将使用RDBMS,将具有CRUD(创建/读取/更新/删除)以及主表的搜索功能,涉及主表和事务表的某些类型的事务(具有相当简单,不是非常复杂的逻辑),以及一些针对大多数/所有的PDF报告搜索屏幕(查询)。大约80个左右的功能,其中的功能主要映射到应用程序中的屏幕;但不是全部。它也有几种类型的批处理作业,计划是在不允许用户使用该应用程序时运行它们。前端会有JavaScript和AJAX。将具有向用户发送电子邮件的功能,不仅用于注册或重置密码,还用于与交易相关的信息。虽然没有以编程方式阅读传入的电子邮件。

目标是最终在(付费)用户和交易数量方面达到中等规模,不是很高,但数量不是太少 - 比如在10,000个用户的范围内,其中2000可以在15到20分钟的时间范围内同时访问应用程序。它将是一个SaaS(软件即服务)应用程序。

我知道这个问题是非常笼统和开放式的,我希望在“它取决于”的方面有一些答案:)但仍然希望从那些从事这类工作的人那里获得一些观点。

如果需要回答,请随时提出更多问题。除了任何保密之外,我会回答他们。

感谢。

编辑1:

真的很感激所有答案。我会花点时间考虑一下,然后再回答一些问题(原件,或回答答案)或评论,如果有的话。

4 个答案:

答案 0 :(得分:5)

这确实是一个非常好的选择。您的项目听起来像是需要相当多的自定义编程,这在Python世界中将指向基于Pylons(http://pylonshq.com/)的Web应用程序。 Pylons主要是一个粘合层,您将选择一个模板引擎和ORM(尝试SQLAlchemy(http://www.sqlalchemy.org/)以获得最大功率,或选择SQLObject(http://www.sqlobject.org/)以获得更简单的方法)。您可能希望使用ReporLab(http://www.reportlab.com/)生成PDF。对于电子邮件部分,您可以通过Pythons内置的电子邮件功能获得很长的路要走(请参阅Python自己网站上的文档)。

编辑1 :你几乎肯定已经想过这个,但是......:成功当然在很大程度上取决于你有权访问的开发人员的能力,即如果知道Python已经,或渴望快速学习。我认为Python是一种非常好的初学者语言,但它需要一点时间才能真正成为'Pythonic'(大致可以翻译为精通Python的特性,例如使用生成器,列表推导,getattr和{等功能。 {1}}等流利的。)

编辑2 :另外,请查看PyPI,Python包索引http://pypi.python.org/pypi到'window shop',了解哪些模块可以为您提供更多功能。有一个很多

答案 1 :(得分:3)

任何语言/框架都是不错的选择,如果有能力的开发人员正确使用它。有时最好的选择是你的团队最熟悉的选择。

考虑到你的客户空间,如果你想转向“更高生产力”的框架,我建议Grails。它在Groovy中实现,Java开发人员可以自然地使用它,并且有各种用于生成战争的工具,可以部署在您最喜欢的servlet容器中。只要遵循惯例,它就需要传统J2EE开发带来很多痛苦。它有许多强大的插件,用于身份验证/授权。它会为你节省大量时间。

答案 2 :(得分:3)

我认为Python非常适合您的需求,并且您可能比使用基于Java的解决方案更快地完成开发。

有几个成熟的Python Web应用程序框架。 Django是最受欢迎的,可能会开箱即用。

对于您提供的数据,性能不太可能成为问题 - 任何瓶颈都可能出现在数据库访问中,因此您使用的语言速度在很大程度上无关紧要。 Python是fast enough to run YouTube,他们的用户数量比你多。 (如果您没有时间观看链接的演示文稿,YouTube的首席可扩展性工程师表示其应用程序代码的99.999%是用Python编写的。)

答案 3 :(得分:2)

缩放在很大程度上与您选择的语言无关,但是,是的,python可以根据您描述的内容进行缩放。很多大型网站都使用Python,包括reddit和youtube(这里是简短的writeup on why reddit uses python)。

框架:Django是一个非常受欢迎的框架,内置了很好的管理功能,包括一个与主要数据库对话的ORM,包含大量功能,并且拥有一个充满活力的社区,可以生成新的应用程序和扩展不断。我们使用它并喜欢它。

对于您的AJAX / CRUD / Rest需求,请查看django-piston,这是一种创建基于休息的API的简洁方法。