Java或Python或Ruby for Web Application?

时间:2009-01-14 07:47:22

标签: web-applications

如果我今天要从头开始实现一个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书籍是否意味着它的解决方案更全面(我自己必须编写更少的代码)?

8 个答案:

答案 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:

  • 详细,有时很麻烦
  • 模板脚本的选择不佳(可以使用Groovy,Jython等辅助脚本语言来缓解)。

反的Python:

  • 没有特定的标准框架,必须研究和选择(或者只是在WSGI之上使用独立的实用程序模块)
  • 仍然相对有限的托管选项(GAE或自己的服务器除外)

防回报率:

  • 在现代网络脚本语言中没有原生Unicode吗?羞耻
  • 潜在的性能扩展问题

就个人而言,我最终得到了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)会更有趣。