如果我今天要从头开始实现一个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书籍是否意味着它的解决方案更全面(我自己必须编写更少的代码)?
答案 0 :(得分:25)
背景:我是一名专业的Java开发人员,负责Django。
<强>爪哇强>
Java主要用于企业,并且有很好的理由。如果您需要一种成熟的语言,对并发性,事务,访问多个数据库的良好支持,Java是一个很好的解决方案...... Java也是一个非常稳定的平台。稳定的,我不是说它比Python或Ruby有更少的错误,我的意思是它没有那么多变化。
Java有很棒的工具支持。伟大的IDE,伟大的重构工具,出色的静态分析工具......你可能找不到任何其他语言的那种质量的工具。
有很多缓慢的Java应用程序,但在我看来,更多来自开发人员使用他们不理解的架构,尝试做的事情比他们需要的更复杂。您可以使用Java开发高性能,非常快速的网站。
<强> Django的强>
Django重量更轻,使用起来更有趣。您可以在很短的时间内运行应用程序。管理界面对于简单的CRUD操作来说是神奇的,甚至可以用于非常复杂的逻辑。您可以找到许多“可重用的应用程序”,它们将实现您需要的一些功能。
即使Django现在处于1.0版本,它也远非稳定。如果你需要在1 - 2年内继续开发你的项目,你可以期待很多改变只是为了遵循Django的状态。
<强> 结论 强>
如果您已经了解Java,并且您需要复杂的架构和长期支持,请使用Java。
如果您想快速开发,请使用Django(或RoR),如果您需要在1 - 2年内重写大量应用程序,请不要在意。
答案 1 :(得分:22)
选择您熟悉的并与之一起运行。
或者您可以选择Django on Jython以获得最佳的Java库和Python的速度编码。
如果你需要说服某人是企业家,那就选择Java。
我想说如果你是在一个小团队中独自工作,那就选择一个需要最少资源的人(提示:Python)。
答案 2 :(得分:12)
反的Java:
反的Python:
防回报率:
就个人而言,我最终得到了Python,但所有这些选项 - 以及.NET - 都很容易防御。
答案 3 :(得分:10)
我建议使用Java和Spring框架 - 它解决了典型Java Web应用程序的所有负担,并为您提供了获得所需内容的清晰方法。
我个人使用Hibernate - JPA - Spring框架(或Spring Web Flow) - Tiles - Freemarker堆栈,这使我能够快速创建新的Web应用程序,但总的来说它们会产生相当陡峭的学习曲线。
我建议 - 试试Spring吧。
答案 4 :(得分:6)
您的应用主要是演示文稿,数据库(CRUD类型维护)还是许多后端逻辑?
对于大多数演示,我会去Python / Django(甚至是php)。
对于简单的CRUD,RoR已经舔过了。
对于任何具有繁重后端逻辑的东西,或者使用现有遗留数据库的东西,我会使用带有Freemarker,Ibatis和Tomcat或Jetty的Spring来获取java servlet。
P.S。不要担心可伸缩性性能 - 没有什么能像Tomcat / java解决方案一样扩展。
答案 5 :(得分:4)
除非您在Java / .net商店或者您有使用Java / .net的特定原因,否则我建议其中一个更适合Web开发的平台:Python / Django(或Ruby / Rails,PHP / CodeIgniter / Cake)。
你会发现Python / Ruby / PHP更容易学习,部署,编程等。有很多关于它们的文献和大量的支持资源。所有这些都被用来制作主要网站(Python上的YouTube,Ruby上的Twitter,PHP上的Facebook)。
答案 6 :(得分:2)
如果要投入生产,请使用您目前最了解的技术。学习新的框架,语言或技术可能会导致延迟,并且在一开始您的代码质量会降低。
答案 7 :(得分:1)
我曾经是一名Java开发人员,现在主要做C#。我反对Java的论点是,(或者至少 )是设置和运行的真正痛苦。它也更适合需要大量组织和可维护性的大型应用程序。然而,这是有代价的。
从你的帖子的声音来看,我认为其中一种动态语言更适合。另外,他们玩(IMHO)会更有趣。