Google,Amazon或LinkedIn是现代的吗?
Java用于现代Web应用程序。如果您查看整个企业,则它是Web应用程序(内部)使用最多的语言。
话虽如此,Java经历了一段时期,当时它的Web开发标准试图将所有人的一切都做到了(可以说仍然可以做到)。“不要重复自己”是对xml地狱和Java Web开发的较长构建周期的回应。结果,Java(EJB,Struts,JSF等)被视为所有新范例都试图克服的事情。
Java,语言很冗长。这是一个利弊(对于维护来说很棒,对于开发来说很糟糕)。有许多现代语言功能尚未将其纳入Java中,从而可以大大缩短编码时间(属性,事件,闭包,生成器,列表理解等)。因此,当您使用更现代的语言时,可能会感到沮丧。也就是说,如果不成为C#正在变成的老鼠巢,就很难将它们添加到成熟的语言中。
现代Web开发中使用的许多语言都是动态键入的。这使得工具能够在编写代码时动态地重新加载代码(这很难用静态语言jrebel完成)。由于Web开发适合快速迭代,因此动态重载是一个巨大的胜利。它显着减少了未开发项目的开发周期,并使得更容易获得正确的UI和UX(自然而然的尝试和错误)。
静态语言也有自己的位置。对于复杂的后端逻辑,必须运行数年,必须无问题地扩展,必须非常快,并且必须完全无错误,因此首选静态类型的语言(例如Java或C)。
此外,随着开发人员人数/营业额的增长和产品的成熟,有好心的人们可能会引入错误的火箭。精心设计的Java项目(这些php吸血鬼的接口,模式和圣水:)所执行的严格性和纪律性有助于降低长期风险。虽然这也可以通过单元测试来实现,但是从静态检查(以及诸如findbugs和clang的静态分析器)派生的安全网提供了内置的代码覆盖级别,很难用手写测试来复制。不要误会我的意思,应该有单元测试和功能测试,但是真正的组织从来没有达到100%的覆盖率。对于他们检查的内容,静态分析器会执行。
因此,在大型项目中(由团队规模而不是代码规模来定义),在独立开发的代码块之间存在复杂的互操作性时,仍然首选Java之类的语言。示例包括大型/复杂的Web应用程序,例如金融经纪人(ameritrade),金融交易所(纳斯达克,纽约证券交易所,.net失败后可能是伦敦)的应用程序,在线银行业务(几乎全部),电子邮件(google),拍卖(ebay)等
从性能和规模的角度来看,Java平台将Web应用程序的可伸缩性和性能相结合(取决于您对facebook应用程序分区的计数方式),这无可比拟。例如,Twitter必须在Java VM的Scala中重写其大部分Ruby基础结构,以便将失败的鲸鱼抛诸脑后。我听说过其他大型示例,但它们现在使我难以理解。
还值得考虑安全性。尽管Java浏览器插件在安全漏洞方面应有尽有,但Java平台本身是创建的更安全的平台之一。Java Web应用程序具有非常安全的声誉。长期以来,其编码实践,库和体系结构一直不鼓励使用错误,这些错误使诸如sql注入或缓冲区溢出之类的攻击成为可能。尽管其他Web平台(轨道)具有良好的安全性声誉,但是没有一个可以超越Java。
最重要的是,大多数Web应用程序在技术上都很简单。简单来说,Java常常过于矫kill过正(就像以前用C编写它们时一样:)。但是,如果Web应用程序很复杂(后端或其他),或者预计将有100多个开发人员,那么Java很难被击败。
-
就个人而言,我经常使用Grails,因为它为我提供了两全其美的优势(关于JRuby的说法也是如此,我听说JRuby在Ruby世界中越来越流行)。
顺便说一句-我发现PHP的兴起确实令人困惑。PHP作为一种语言,在可读性和结果质量上与Perl大致等效。它鼓励令人毛骨悚然的做法,几乎无法维护,第三方库很少能按预期工作,并且它的语法会使拉里·沃尔(Larry Wall)……...……墙。我能想到的唯一解释是,它适合进行增量学习(如VB)。换句话说,您几乎不了解编程/管理就可以完成一些有用的事情,并且可以一次扩展一小部分知识。从采用的角度来看,有很多要说的。但是,对于每个人都必须支持或替换企业/制造世界中“程序员”编写的数十亿个VB应用程序之一,您可能正在摇头并计划退休。:)