如果我今天要从头开始实现一个Web应用程序,我应该选择哪个应用程序堆栈?三个主要候选者是java,python和Ruby on Rails(RoR).还有.NET,但它偏向于M $.
专业的Java:
1) Stacks of thick books 2) Largest developer community 3) Typed languages, which prevents subtle bugs 4) Augmented with groovy interpreted language
临蟒蛇:
1) Concise code 2) Thin books 3) Can launch web app for free on Google Apps
临回报率:
1) Concise code 2) Thin books 3) Ruby may be slightly better programming language than python, but they are converging.
总的来说,python/RoR之间没有太多选择.我必须做出的选择是在Java和Python之间.我稍微喜欢java,因为它是一种打字语言,但我的好朋友喜欢python,因为它更简洁.厚厚的Java书籍是否意味着它的解决方案更全面(我必须自己编写较少的代码)?
背景:我是一名专业的Java开发人员,负责Django.
Java的
Java主要用于企业,并且有很好的理由.如果您需要一种成熟的语言,对并发性,事务,访问多个数据库的良好支持,Java是一个很好的解决方案...... Java也是一个非常稳定的平台.稳定的,我不是说它比Python或Ruby有更少的错误,我的意思是它没有那么多变化.
有很棒的Java工具支持.伟大的IDE,伟大的重构工具,出色的静态分析工具......你可能找不到任何其他语言的那种质量的工具.
有很多缓慢的Java应用程序,但在我看来,更多来自开发人员使用他们不理解的架构,尝试做的事情比他们需要的更复杂.您可以使用Java开发高性能,非常快速的网站.
Django的
Django更轻巧,更有趣.您可以在很短的时间内运行应用程序.管理界面对于简单的CRUD操作来说是神奇的,甚至可以用于非常复杂的逻辑.您可以找到许多"可重用的应用程序",它们将实现您需要的一些功能.
即使Django现在处于1.0版本,它也远非稳定.如果你需要在1 - 2年内继续开发你的项目,你可以期待很多改变只是为了遵循Django的状态.
结论
如果您已经了解Java,并且需要复杂的架构和长期支持,请使用Java.
如果你想快速开发,请使用Django(或RoR),如果你需要在1 - 2年内重写很多应用程序,请不要在意.
选择你熟悉的并运行它.
或者你可以在Jython上选择Django来获得最好的Java库和Python的速度编码.
或者如果你需要说服某人是企业家,那就选择Java.
我会说,如果你是在一个小团队中独自工作,那么就选择一个需要最少资源的人(提示:Python).
Java反:
冗长,有时很麻烦
模板脚本的选择不佳(可以通过使用Groovy,Jython等辅助脚本语言来缓解)
反的Python:
没有特定的标准框架,必须研究和选择(或者只是在WSGI之上使用独立的实用程序模块)
仍然相对有限的托管选项(GAE或自己的服务器除外)
反回报率:
在现代Web脚本语言中没有原生Unicode吗?耻辱
潜在的性能扩展问题
我个人最终得到了Python,但所有这些选项 - 以及.NET - 都很容易防御.
我建议使用Java和Spring框架 - 它解决了典型Java Web应用程序的所有负担,并为您提供了获得所需内容的明确方法.
我个人使用Hibernate - JPA - Spring框架(或Spring Web Flow) - Tiles - Freemarker堆栈,这使我能够快速创建新的Web应用程序,但总的来说它们会产生相当陡峭的学习曲线.
我建议 - 只需尝试一下Spring即可.
您的应用程序主要是演示文稿,数据库(CRUD类型维护)还是许多后端逻辑?
对于大多数演示,我会去Python/Django(甚至PHP).
对于简单的CRUD RoR舔它.
对于任何具有繁重后端逻辑的东西,或者使用现有遗留数据库的东西,我会使用带有Freemarker,Ibatis和Tomcat或Jetty的Spring来获取java servlet.
PS不要担心可扩展性性能 - 没有什么能像Tomcat/java解决方案一样扩展.