【问题标题】:Java or Python or Ruby for Web Application? [closed]用于 Web 应用程序的 Java、Python 或 Ruby? [关闭]
【发布时间】:2010-10-01 07:55:09
【问题描述】:

如果我今天要从头开始实现一个 Web 应用程序,我应该选择哪个应用程序堆栈?三个主要候选者是 java、python 和 Ruby on Rails (RoR)。还有.NET,但它偏向于M$。

Pro-java:

1) Stacks of thick books
2) Largest developer community
3) Typed languages, which prevents subtle bugs
4) Augmented with groovy interpreted language

专业python:

1) Concise code
2) Thin books
3) Can launch web app for free on Google Apps

Pro-RoR:

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书是否意味着它的解决方案更全面(而且我必须自己编写更少的代码)?

【问题讨论】:

    标签: web-applications


    【解决方案1】:

    背景:我是一名专业的 Java 开发人员,一边做 Django。

    Java

    Java 主要在企业中使用,这是有很好的理由的。如果您需要一种成熟的语言,Java 是一个很好的解决方案,对并发、事务、访问多个数据库有很好的支持……Java 也是一个非常稳定的平台。我所说的稳定,并不是说它的 bug 比 Python 或 Ruby 少,我的意思是它变化不大。

    Java 有很棒的工具支持。出色的 IDE、出色的重构工具、出色的静态分析工具……您可能无法为任何其他语言找到如此多的工具。

    有很多缓慢的 Java 应用程序,但在我看来,这更多来自于使用他们不理解的架构的开发人员,他们试图做比他们需要的更复杂的事情。您可以使用 Java 开发高性能、非常快速的网站。

    Django

    Django 重量更轻,使用起来更有趣。您可以在很短的时间内运行应用程序。管理界面非常适合简单的 CRUD 操作,甚至可以用于非常复杂的逻辑。您可以找到许多“可重复使用的应用程序”来实现您需要的一些功能。

    即使 Django 现在是 1.0 版,它也远非稳定。如果你需要在 1-2 年内继续开发你的项目,你可以期待很多变化只是为了跟随 Django 的状态。

    结论

    如果您已经了解 Java,并且需要复杂的架构和长期支持,请使用 Java。

    如果您想要快速开发,请使用 Django(或 RoR),并且不在乎是否需要在 1-2 年内重写大量应用程序。

    【讨论】:

    • 我必须同意你的观点,Django 相对不稳定。
    【解决方案2】:

    选择你熟悉的并运行它。

    或者您可以选择Django on Jython 以充分利用 Java 库和 Python 的速度编码。

    如果您需要让某人相信它是企业级的,请选择 Java。

    我想说,如果您是独自工作/在一个小团队中工作,那么只需选择需要最少资源的那个(提示:Python)。

    【讨论】:

      【解决方案3】:

      反Java:

      • 冗长,有时很麻烦
      • 模板脚本选择不当(可以通过使用 Groovy、Jython 等辅助脚本语言来缓解)

      反蟒蛇:

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

      反RoR:

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

      我个人最终选择了 Python,但所有这些选项(以及 .NET)都很容易防御。

      【讨论】:

      • Amazon S3、EC2 似乎也有一个 python 接口。所以这些是 python 的有效托管选项。
      • 对于 java 模板脚本,请查看 Spring/Freemarker。 Freemarker 可能是最好的模板软件。
      • Ruby 1.9 包含原生 Unicode 支持,Rails 从 Rails 1.2 开始向后移植它。此外,“Rails 无法扩展”是 Rails 社区的一个梗:它会扩展。
      【解决方案4】:

      我会推荐 Java 和 Spring 框架 - 它解决了典型 Java Web 应用程序的所有负担,并为您提供了获得所需内容的清晰方法。

      我个人使用 Hibernate - JPA - Spring 框架(或 Spring Web Flow) - Tiles - Freemarker 堆栈,它使我能够相当快地创建新的 Web 应用程序,但总的来说它们会带来相当陡峭的学习曲线。

      我建议 - 尝试一下 Spring。

      【讨论】:

        【解决方案5】:

        您的应用主要是展示、数据库(CRUD 类型维护)还是大量后端逻辑?

        对于大多数演示,我会使用 Python/Django(甚至是 php)。

        对于简单的 CRUD RoR 已经舔过了。

        对于后端逻辑繁重的任何事物,或者使用现有遗留数据库的事物,我会选择使用 Spring 与 Freemarker、Ibatis 和 Tomcat 或 Jetty 的 java servlet。

        附:不要担心可伸缩性性能——没有什么能像 Tomcat/java 解决方案那样伸缩。

        【讨论】:

        • 为什么你认为 Java / Spring 更适合繁重的后端逻辑?在这种情况下,Python / Django 究竟不能处理什么?
        【解决方案6】:

        除非您在 Java/.net 商店或出于特定原因使用 Java/.net,否则我建议使用更适合 Web 开发的平台之一:Python/Django(或 Ruby/ Rails,PHP/CodeIgniter/Cake)。

        您会发现 Python/Ruby/PHP 更易于学习、部署、编程等。有大量关于它们的文献和大量支持资源。所有这些都被用于制作主要的网站(Python 上的 YouTube、Ruby 上的 Twitter、PHP 上的 Facebook)。

        【讨论】:

          【解决方案7】:

          如果要投入生产,请使用您目前最了解的技术。学习新的框架、语言或技术可能会导致延迟,并且一开始您的代码质量会降低。

          【讨论】:

            【解决方案8】:

            我曾经是一名 Java 开发人员,现在主要从事 C# 工作。我反对 Java 的论点是(或至少曾经)设置和运行它是一件非常痛苦的事情。它也更适合需要大量组织和可维护性的大型应用程序。然而,这是有代价的。

            从您的帖子的声音来看,我认为其中一种动态语言会更适合。另外,它们玩起来更有趣(恕我直言)。

            【讨论】:

            • 使用 maven 构建,Java 很容易设置(至少现在)。
            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2023-03-06
            • 2016-02-17
            • 1970-01-01
            • 2011-03-28
            • 2014-01-22
            • 2012-08-26
            相关资源
            最近更新 更多