与其他语言相比,在Java中开发服务器端应用程序有哪些优势?

时间:2011-02-11 14:53:01

标签: java

我们公司正在开始开发客户端 - 服务器应用程序,正在讨论应该使用哪些技术。 对于客户端(GUI),我们倾向于QT和C ++。对于服务器端,我们建议使用Java,实际上它看起来是最常用于服务器开发的语言之一。 任何人都可以详细说明Java为服务器端开发提供的优势,以及为什么采用它应该让我们的开发人员生活更轻松和/或让我们获得比我们使用的更好的结果,比如说,.NET甚至是C ++? 提前谢谢。

6 个答案:

答案 0 :(得分:5)

一些优点:

  • 跨平台运行已编译的代码。
  • 托管内存(垃圾回收)。
  • 优秀的开源图书馆。
  • 大型开发者市场。
  • 为C ++开发人员轻松迁移。

一些缺点:

  • 老龄化语言 - 没有跟上IMO语言的进步(例如增加功能设施)。
  • 甲骨文收购后的未来不确定性(随着时间的推移会变得更加清晰)。
  • 低级编程很难。

您可能还希望查看在JVM上运行的其他语言,例如Scala和Groovy,在.NET(它可以在Linux上运行,使用Mono),甚至是D语言,它提供了类似的C ++,编译为本机语言,具有现代功能,如垃圾收集(可选),代码契约,lambdas等。这些语言提供了Java相对于C / C ++的许多好处,但也进一步或向不同方向发展。 / p>

答案 1 :(得分:2)

除了平台独立性之外,服务器端Java开发的主要优点是成熟的库和标准化框架的广泛选择。但是,这里主要关注的是Web开发。

对于C ++客户端,如果在客户端和服务器之间使用REST作为协议,Java仍然是有益的(JAX-RS非常好)。否则,它在很大程度上取决于您的应用程序域以及是否有可以帮助您的Java库。

答案 2 :(得分:1)

让我们这样说吧......不是哪种服务器端语言更好,什么不是,你公司可以利用它并充分利用它。当你在一家大公司工作时,有时你不能只引入“另一种语言”......它不会那样工作。 :)

此外,每种语言都有其优点和缺点。你可以用两种方式来争论利弊,这取决于你有多么偏见或开放。您可以选择RoR和所有流行时代的技术,但如果您的团队成员不熟悉处理一种全新的语言,您究竟要如何长期维护项目?我的意思是,如果你的团队熟悉PHP,那么与Java,.NET等相比,我没有看到使用它的任何错误。

只要有效,您的客户就不关心底层实施。

答案 3 :(得分:1)

Java优势:   - 成熟   - 良好的向后兼容性   - 几乎所有问题的广泛可用框架   - 健壮 - 垃圾收集,API作为java.util.concurrent   - 管理代码质量,良好IDE等的出色工具。   - 非常好的表现   - 支持脚本

缺点:   - 有时同样的东西框架太多了   - 并非所有框架都具有您需要的高质量代码   - 看起来比实际更容易

答案 4 :(得分:0)

服务器端有很多选项。由于您可以控制服务器端,因此基本上可以使用任何东西。使用.NET强制您使用Windows Server,因此我更喜欢可以在任何操作系统上运行并且可移植的框架。

Java是5 - 10年前的正确答案。因为它具有可移植性,并且可以在任何系统上运行。但是现在开发人员正在寻找更易于使用,维护和编码的语言/框架。我现在将投票选择Python用于服务器端开发,因为它很快,它更容易阅读和维护代码,并且它有许多你可以使用的开源项目/库,甚至谷歌也支持python over Java(GAE已经首先是python支持,然后支持Java来了)。您可以在python上使用django进行Web开发,并使用TCP编写使用TCP进行通信的服务器。

答案 5 :(得分:0)

选择语言时需要考虑几个问题:

  • 这是了解您的团队最佳/良好的语言
  • 哪些语言知道团队必须维护服务器
  • 是否有正确的框架,其质量让您想要使用它们
  • 只要服务器处于生产状态,代码就可以维护
  • 开发的速度有多快 - 这里重要的不是您花在键入代码上的时间 - 更重要的是您需要的时间,直到产品稳定工作才能将其用于生产没有合理的错误
  • 与其他系统的通信 - 如果您需要与之通信的每个系统都是.net - 在.net中构建新系统也是明智的
  • 是否有任何限制(必须使用此服务器,贵公司的开源政策,......)
  • 许可证费用......
  • ...

至少对具有合理规模的项目使用特定语言的说法始终是成本问题。但不仅是构建系统的成本,还有维护它的成本。 - 上面提到的要点都与成本有关:例如:如果您不熟悉您的语言( - > $),如果系统无法维护,则必须重建( - > $),如果没有合适的库,你需要自己实现它( - > $),如果你选择的语言让bug很容易隐藏,你需要很长时间才能进入生产阶段( - > ; $)

在MHO中,Java的优点是:广泛传播的知识(这也适用于.net),大量真正成熟的开源framworks(这是Java反对.net的重点),以及使用强类型系统和编译器可以减少错误,这是Java和.net相对于每种非强类型脚本语言的长期优势)

您在服务器上使用的所有语言都必须具有垃圾收集功能!