作为Java新手,我想知道:在世界上所有语言中,为什么Java经常用于企业应用程序?是什么让它与其他语言相比?它会在未来几年继续这样吗?
我很感激你的见解。在此先感谢:)
答案 0 :(得分:41)
一个词:图书馆。 Java拥有大量优秀的库,可以解决开发企业应用程序时需要解决的大多数常见问题。在许多情况下,满足特定需求有多种不错的选择,而且这些库通常是在商业友好许可下免费开源的。
有些人认为,Java生态系统中存在太多选择,而用Java开发企业软件需要开发人员做出大量可能对最终产品产生深远影响的决策,以便更好地实现或者更糟。这可能有助于推动.NET等替代产品的普及,这种替代产品的选择更少,但具有更好集成的应用程序堆栈和工具集的优势。我想,你选择的方向取决于你是否更多地关注“选择自由”或“选择自由”。
答案 1 :(得分:24)
有很多原因导致大公司(企业解决方案的类型)选择Java。注意我并不是说所有这些原因都是正确或有效的。但相关的一点是,它们似乎对MegaCorp的CTO有效。
学习曲线
Java是一种简单的语言,没有其他C系列成员的灵活性,这会削减两种方式,但它被视为一种程序员大军使用的直接语言。企业项目往往涉及大量开发人员(无论是对还是错),并且使开发人员在Java中比C ++更容易获得最低级别的能力。你也有整整一代的毕业生,他们可能已经接受过Java教育。
<强>选择强>
Java拥有大量的库,框架,工具和IDE以及服务器提供程序。对于一个企业来说,有一个好的选择,即使这只是在谈判价格时用作讨价还价的筹码。该语言适用于允许执行公司标准的代码质量工具(如上所述,有很多这些工具)。
平台独立性
Java是一次编写,在任何地方运行(好,调试)。 Sun积极鼓励开放标准,允许多个供应商实施他们的解决方案。如果给定的供应商不足或开始收取更多费用,这些标准可以让客户感到舒适,他们可以从一个供应商迁移到另一个供应商。当然,现实情况是每个供应商都尽力提供一些“附加值”功能,将客户与他们联系起来非常好。
<强>成熟强>
它已经存在了很长时间,运行了很多服务器。如果你的网络应用程序需要是“6西格玛”或类似的,并且你是MegaCorp首席技术官,那么你不会对开发人员希望在RoR中做这件事的人表示同情。
<强>时序/行销强>
当编程进入网络时,Java问世了。它定位巧妙,在网站开发早期就占据了强势地位。由于开放标准,有一些非常大的公司生产这些平台,他们非常难以销售这些平台。
<强>惯性强>
大公司以冰川的速度向前发展(很多人在5年发布后五年仍在使用Java 1.4),所以一旦他们选择了Java,需要大量投资才能转移到另一个平台。随着每一天的到来,他们正在开发出更多需要迁移的Java。这些公司中的大多数并不主要是编码商店,因此说服企业花费数千万美元重写整个代码库以获得直接的商业利益是非常难的。
答案 2 :(得分:9)
另一个原因可能是Sun为保持Java向后兼容所采取的措施。绝大多数Java代码都可以在最新版本的JVM上运行而不会出现问题。考虑到Java的时代,这是一项相当大的成就。另一方面,你可能会说Java在这些年里并没有发生太大的变化。
企业喜欢在平台上稳定。
答案 3 :(得分:8)
Sun以Java为目标,尽早了解企业的需求。它推动了各个层面促进供应商独立性的标准。平台独立,数据库独立,应用程序服务器独立等
此外,他们还在消息传递,事务管理以及企业所担心的其他方面为其推广了企业级工具。
在Java之前,企业级的东西往往是用C ++完成的(有很多例外(有人记得PowerBuilder吗?)但这就是规则)而且Java非常适合作为业务应用程序的C ++的后继者,那种类型内存管理不是值得付出的代价。
除了所有这些之外,语言本身也在向企业讲述避免难以获得的构造,这些构造实际上可能会破坏代码库,例如运算符重载。企业级应用程序倾向于由许多不同的人处理,并非所有人都是顶级的程序员,并且有安全网来防止自己在脚下射击是一件令人向往的事情。
它也是在正确的时间出现的。一个新的范例(这已经存在于.NET之前),它承诺将多个供应商组合成一个与微软竞争的能力,而这个微软已经让IBM和甲骨文等公司参与其中,这恰好填补了一个新的漏洞,这是新兴的要求开发Web应用程序,其中C ++不再是一个明显的选择。
答案 4 :(得分:8)
我不应该这么说,但是......
真正的原因是因为它以咖啡命名!
答案 5 :(得分:7)
商业是关于时间,金钱和机会的。
使用Java意味着代码中的错误数量会下降,因为指针很难。您使用GC并立即从代码中删除整个类错误。
其次,Java是第一批提供预先编写的函数库的语言之一,它确实涵盖了很多开发阶段。这限制了事情的完成方式,但这意味着人们可以更快地学习,拥有更多的工具,并拥有一套完善的工具库来处理网络,GUI,网络,加密等.Java本身作为一种语言并不是那么特别,但Java加Java API是。
因此,如果您的语言错误较少且免费提供更多基础架构,那么您可以在更短的时间内获得更多代码。当然,代码不能治愈癌症,它不像C ++代码那样快速地完成同样的任务,但它将实现企业获得应用程序的目标。
如果您以更少的钱赚更多的代码,您可以寻求更多的机会。然后,根据已经用Java实现的代码,您可以将惯性带到表中,并开始了解为什么业务不希望远离其舒适区。
答案 6 :(得分:3)
我个人认为一个主要原因是跨平台问题。
“正确”编写的Java程序(不包含底层操作系统的假设)可以在任何JVM上运行。这意味着您不会绑定到特定平台,这与将您与Windows结合的.NET不同。
我见过Java代码在大型机,Linux路由器,Oracle数据库内部运行,自然也在PC上运行。
答案 7 :(得分:2)
它便宜,RAD,跨平台,开发人员比比皆是。
答案 8 :(得分:2)
使用C ++进行开发太慢而且昂贵,并且.NET已经存在很长时间了。商业惯性是巨大的,请记住。
企业需要由专业提供商(即像Sun这样的公司)支持的语言,并且经常远离开源语言,原因很简单,因为它不是由公司编写的。
答案 9 :(得分:2)
对于客户端 - 服务器应用程序,对于具有相同J2EE接口(IBM WebSphere,BEA Weblogic,JBoss)的生产质量应用程序服务器,您有很多选择。或者,您可以在任何服务器(如Apache Tomcat)上使用Spring Framework,如果您确信不需要EJB,则可以使用Servlet API。与.NET相比,很难找到与应用服务器相关的选择。
对于给定任务的框架,有很多选择,包括ORM工具,日志记录,集合,缓存,Web UI等。几乎没有必要重新发明轮子。
最后,虽然现在很流行地感叹Java语言的真正缺点,但它是一种人们知道如何完成工作以及如何避免某些反模式的语言。
答案 10 :(得分:2)
其他答案都很好。需要添加两件事,企业标准和随波逐流效应。如果你想构建一个企业系统,你需要有一个非常强大的理由,就是不要使用你公司的根深蒂固的标准,这主要是JavaEE。如果你需要为一个项目提供资源,那么招募Java程序员比让Erlang更容易。