为什么Java经常用于企业应用程序?
作为一个Java新手,我想知道:世界上所有的语言,Java为什么经常用于企业应用程序? 是什么使其与其他语言相比? 在未来的几年里它会继续这样吗?
我会很感激你的见解。 提前致谢 :)
一个字:图书馆。 Java拥有大量优秀的库,用于解决开发企业应用程序时需要解决的大多数常见问题。 在许多情况下,解决特定需求的select不止一个,而且这些图书馆通常都是免费的,并且是在一个有利于商业的许可下开放的。
有些人认为,实际上在Java生态系统中有太多的select,开发Java中的企业软件需要开发人员作出大量的决定,这些决定可能会对最终产品产生更好或更糟的影响。 这可能有助于推动像.NET这样的替代品的普及,因为它有着提供更lessselect的声誉,但是具有更好集成的应用程序堆栈和工具集的好处。 我猜,你select的方向取决于你是否更看重“自由select”或“自由select”。
一个大公司(types去企业解决scheme)会selectJava有很多原因。 注意我并不是说所有这些原因都是正确的或有效的。 但相关的一点是,他们似乎对MegaCorp的CTO有效。
学习曲线
Java是一种简单的语言,没有C系列其他成员的许多灵活性,这样既削减了两种方法,也被认为是一群程序员使用的简单语言。 企业项目往往涉及大量的开发人员(无论是对的还是错的),让开发人员在Java中的能力达到最低水平比C ++要容易得多。 你也有整整一代的gradle生可能在很大程度上受到了Java的学习。
select
Java拥有大量的库,框架,工具和IDE以及服务器提供者。 对于一个企业来说,这是一个很好的select,即使这只是在谈判价格时用作讨价还价的筹码。 该语言适用于代码质量的工具,允许执行企业标准(如提到有很多这些工具)。
平台独立
Java编写一次,到处运行(好,debugging)。 Sun积极鼓励开放标准,允许多个供应商实施他们的解决scheme。 这些标准为客户提供了一个安慰,即如果某个供应商进入或开始更多收费,他们可以从一个供应商迁移到另一个供应商。 当然,现实情况是,每个供应商都尽力提供一些“附加价值”function,以便将客户很好地与他们联系起来。
到期
经过很长时间,运行了很多服务器。 如果您的Web应用程序需要“6 sigma”或者类似的,并且您是MegaCorp首席技术官,那么对于开发人员想要在RoR中完成的Joe,您不会那么友好。
定时/营销
Java在编程转向networking时出现了。 它被巧妙地定位,并在网站开发初期获得了强有力的地位。 由于开放标准,有一些非常大的公司正在生产这些平台,他们很难销售这些平台。
惯性
大公司正在以一种冰河的速度前进(在发布5年之后,很多公司仍然在使用Java 1.4),所以一旦select了Java,就需要大量投资才能移植到另一个平台上。 随着每一天,他们正在启动更多的Java需要被迁移。 这些公司中的大多数并不是主要的编码商店,因此说服企业花费数千万重写他们的整个代码基础是没有直接商业利益的。
另一个原因可能是Sun为保持Java向后兼容而采取的措施。 绝大多数的Java代码都可以在最新版本的JVM上运行,没有问题。 鉴于Java的时代,这是相当成就的。 另一方面,你可能会说这些年来Java并没有改变太多。
企业喜欢稳定在一个平台上。
Sun有针对性地将Java早期用于企业需求。 它推动了在各个层面促进供应商独立性的标准。 平台独立,数据库独立,应用服务器独立等
此外,他们还推出了企业级的工具,包括消息传递,交易pipe理和其他企业所担心的事情。
在Java之前,企业级的东西往往是用C ++来完成的(有很多例外(有没有人记得PowerBuilder?),但这是规则),Java很适合用作商业应用程序的C ++的inheritance者,在那种types的内存pipe理不值得为此付出代价。
除了这些语言本身所说的所有这些,都是为了避免难以得到正确的结构,而这些结构真的可以搞乱代码库,比如操作符重载。 企业级应用程序倾向于由许多不同的人员来处理,而不是所有的人都是程序员的头把交椅,并且有安全网来防止在脚下自己射击是一件好事。
它也是在适当的时候出现的。 一个新的范式(这在.NET之前就已经存在了)要求将多个供应商组合成一个能够与微软竞争的能力,这个微软获得了IBM和Oracle的赞誉,恰巧填补了一个新的漏洞,开发Web应用程序,C ++不再是一个明显的select。
我不应该这样说,但是…
真正的原因是因为它是以咖啡命名的!
生意是关于时间,金钱和机会的。
使用Java意味着代码中的错误数量会减less,只是因为指针很难。 您使用GC,并立即从您的代码中删除整个类的错误。
其次,Java是第一批提供预先编写的函数库的语言之一,它确实涵盖了许多开发阶段。 这限制了事情的完成方式,但是这意味着人们可以更快地学习,拥有更多的工具,并拥有一大堆图书馆来完成networking,graphics用户界面,networking,encryption等。Java本身就是一种语言并不是那么特别,但是Java加上了Java API。
所以,如果你有一个免费的错误和更多的基础设施的语言,那么你在更短的时间内得到更多的代码。 当然,代码并不能治愈癌症,它不像C ++代码那样快速完成相同的任务,但是它将实现企业获得应用程序的目标。
如果你做更多的代码,less花钱,你可以追求更多的机会。 然后,根据已经在Java中实现的代码,将惰性引入表中,并开始了解为什么业务不想离开其舒适区。
我个人认为一个主要原因是跨平台问题。
可以在任何JVM上运行“正确”编写的Java程序(无需假设底层操作系统)。 这意味着你不是绑定到一个特定的平台,不像.NET把你和Windows结合在一起。
我已经看到Java代码运行在大型机,Linux路由器,Oracle数据库内部,当然也在PC上运行。
它很便宜,RAD,跨平台,开发人员比比皆是。
用C ++进行开发太慢而且代价太高,而且.NET还没有足够的时间。 记住,业务惯性是巨大的。
企业需要专业提供商(即像Sun这样的公司)支持的语言,而且由于公司不是由公司撰写的简单原因,他们经常远离开源语言。
对于客户端 – 服务器应用程序,您也可以select具有相同J2EE接口(IBM WebSphere,BEA Weblogic,JBoss)的生产质量的应用程序服务器。 或者,如果您确信不需要EJB,则可以在任何服务器(如Apache Tomcat)上使用Spring Framework,以符合Servlet API。 与.NET相比,在应用程序服务器方面很难findselect。
对于一个给定的任务来说,有很多的select,比如ORM工具,日志logging,集合,caching,Web UI等等。几乎没有必要重新发明轮子。
最后,尽pipe现在很stream行Java语言这个非常真实的缺点,但它是一种人们知道如何完成任务以及如何避免某些反模式的语言。
其他答案都很好。 有两件事情需要补充,企业标准和stream行的影响。 如果你想build立一个企业系统,你需要有一个非常强大的案例,不要使用你公司根深蒂固的标准,这主要是JavaEE。 如果你需要为一个项目提供资源,招聘Java程序员比Erlang容易得多。