[热议]Java是新的COBOL吗?
导读:COBOL(Common Business Oriented Langauge)是面向商业的通用语言,又称为企业管理语言、数据处理语言等,是最早的高级编程语言之一,是世界上第一个商用语言。前端时间网络上就Java是不是COBOL进行了一番热议,公说公有理,婆说婆有理。究竟孰对孰错?本文对此进行了一番分析。
文章内容如下:
如果你用Google搜索“Java is the new COBOL”你会发现有很多结果,对Java的误解进行反驳,我相信这一想法大多数是从Ruby社区提出的,Ruby从开发人员的角度来分析,认为Java太依赖开发工具,不需要打开一个文本编辑器就可开始编程。另一方面,Java有很多类型,它是一种静态类型的语言,使开发人员工作起来繁琐,这就是为什么Java开发者认为IDE是如此重要。
当不少Java开发者迁移到Ruby后,好像Java停滞了,不管是谁写了Swing应用程序都能提示你:匿名内部类使你的代码比原有的大5倍。所以,很多人认为Java是新的COBOL,他们有这些共同点:
1.Java太冗长
2.Java呆滞
3.只有大型企业使用它。
原文作者详细分析了这些观点:
冗长和呆滞
在Java 7和Java 8中冗长呆滞已经得到解决,Java 7解决了冗长的很多问题,而Java 8已经将语言推向了一个新的编程范式,面向函数编程。
Java 8是Java的一个转折点,这也表明显示Oracle非常重视语言向后兼容性的演绎性发展。
Java 7地址太冗长
Java平台首席架构师Mark Reinhold说:Java 7是演进,Java 8是革命。
在Coin项目中Java 7借鉴了很多新特性,以下是一些新特性:
- switch (lang) {
- case "Java" :
- out.println("I like frameworks!");
- break;
- case "Ruby" :
- out.println("I like Pabst Blue Ribbon!");
- break;
- case "PHP" :
- out.println("I like WordPress!");
- break;
- }
类型推断:
- Map<String, List<String>> peopleByDept = newHashMap<String, List<String>>();
变成:
- Map<String, List<String>> peopleByDept = newHashMap<>();
在Inspired by Actual Events JavaOne 2011 keynote post提到了很多Java 7新的简化方式。
Java 8推动语言进步
Java 8则是转向了新的语言,增加两个主要特性:
1.Lambdas / Closures
2.A proper module system(aka Jigsaw)
原来我们用内部类实现类似闭包时,如下:
- Component button = new Button("Click me!");
- button.onClick(new EventHandler() {
- public onEvent(Event e) {
- out.println("I was clicked!");
- }
- }
而Lambdas则可以表达成:
- button.onClick(e => out.println("I was clicked!"));
企业使用Java
那么企业还在用Java吗?当然,Apple, Twitter, LinkedIn, SquareSpace都在使用,还有很多公司直接的或者间接的通过JRuby Jython Scala或Clojure这些基于JVM的新语言来拓展Java的开源生态系统。
综上所述,Java没有停滞,正在越来越好,如果你说Java是新的Cobol,就如同说Ruby是新的Java一样错误。(夏梦竹/编译)
英文出自:tataryn.net