Google,Amazon或LinkedIn是否算是现代?
Java用于现代Web应用程序。如果您查看企业内部,它是Web应用程序(内部)使用多的语言。
也就是说,Java经历了一段时间,它的Web开发标准试图成为每个人的一切(可以说仍然是)。 “不要重复自己”是对xml地狱和Java Web开发的长期构建周期的响应。因此,Java(EJB,Struts,JSF等)被看作是所有新范式试图克服的东西。
Java,语言是verbose。这是一个亲和一个(伟大的维护,吸引开发)。有一些现代语言功能尚未使其成为Java,可以大大缩短编码时间(属性,事件,闭包,生成器,列表解析等)。所以,当从更现代的语言来,它可以是令人沮丧的。也就是说,他们很难添加到一个成熟的语言,而不成为老鼠巢,C#正在成长。
现代web开发中使用的许多语言都是动态类型的。这使得工具能够在写入代码时动态重新加载代码(这在静态语言 - jrebel中更难实现)。由于Web开发适用于快速迭代,动态重新加载是一个巨大的胜利。它显着减少了绿地项目的开发周期,并使得更容易获得UI和UX的权利(试验和错误性质)。
静态语言也有它们的位置。对于复杂的后端逻辑,必须运行多年,必须扩展没有问题,必须非常快,并且必须完全无错,静态类型语言(如Java或甚至C)是首选。
此外,随着开发商计数/营业额增长和产品成熟的良好意图的人的可能性引入bug的暴雪。一个精心设计的Java项目(接口,模式和这些php吸血鬼的圣水)强制执行的严格和纪律有助于减少长期风险。虽然,这也可以通过单元测试实现,从静态检查(和静态分析器,如findbugs和clang)派生的安全网提供了一个内置的代码覆盖水平,很难用手写测试复制。不要误会我,应该有单元测试和功能测试,但真正的组织从来没有实现100%的覆盖。对于他们检查,静态分析器。
因此,在大型项目(由团队规模大于代码大小定义)中,独立开发的代码块之间存在复杂的互操作性,像Java这样的语言仍然是首选。示例包括大型/复杂的Web应用程序,如金融经纪人(ameritrade),金融交易所(nasdaq,nyse,.net失败后可能是伦敦),网上银行(几乎所有),电子邮件(google) ,等等。
从性能和规模的角度来看,Java平台并不是Web应用程序的可扩展性和性能的组合(取决于如何计算Facebook的应用程序分区)。例如,Twitter必须在Java VM上在Scala中重写大部分的Ruby基础架构,以便将失败的鲸鱼重新导出到海中。我听说过其他大例子,但他们现在逃避我。
这也值得考虑安全。虽然Java浏览器插件遭受了公平的安全漏洞,但java平台本身是创建的更安全的平台之一。 Java Web应用程序具有非常安全的声誉。它的编码实践,库和架构有长期阻止的错误,使像sql注入或缓冲区溢出的攻击成为可能。虽然其他网络平台(rails)有良好的安全信誉,没有超越Java。
底线,大多数Web应用程序在技术上都很简单。对于简单,Java通常是过度的(就像在旧的时候,当我们在C :)中写它们)。但是,如果webapp是复杂的(后端或其他)或预计有100多个开发人员,Java是很难击败。
- -
在个人方面,我使用Grails很多,因为它给了我好的两个世界(同样可以说的JRuby,我听说在Ruby世界越来越流行)。
BTW - 我发现PHP的兴起是真正令人费解的。 PHP作为一种语言是粗略的等同于perl的可读性和VB的质量的结果。它鼓励可怕的做法,是不可能维持,第三方库很少按预期工作,它有一个语法,将驱动拉里·沃尔... ...墙。我可以想到的唯一的解释是,它适用于增量学习(如VB)。换句话说,你可以做一些有用的知识很少有关编程/管理,你可以扩展你的知识一个小块。从采纳的角度来说,有很多话要说。但是,对于任何人都不得不支持或替换由“programm”编写的数十亿的VB应用程序之一
开始Ups想闪亮。无论闪亮是什么:RoR,Groovy,Grails,OOP w / PHP,Foobar,Wibble,Narf等。
企业需要稳定,可靠和可扩展:Java和.NET适合账单(当正确完成时)。
当前演讲:金融服务。平台:ColdFusion(本质上是一个Java标签库)和Java。
教育测试服务 - ColdFusion
高风险保险 - ColdFusion和Java
401k - ColdFusion和Java
旅行 - Java w /内部ColdFusion应用程序
证券 - ColdFusion(Java前版本)
这些都是高容量,高安全性的网站。没有人在任何这些公司考虑过PHP,一些看着RoR,看到太多的问题。 401k公司有一个姐妹公司运行.NET应用程序与合格的开发人员,该应用程序只是不断崩溃每个星期。他们终将其转换为Java并获得稳定性。
唯一看不起Java的人是那些没有或很少有实际经验的人,或者参与了糟糕的实现,现在是害羞的。他们看到闪亮的数字,如果所有的酷孩子都在使用它,为什么不是我?