Java是新的COBOL吗?

COBOL(Common Business Oriented Langauge)是面向商业的通用语言,又称为企业管理语言、数据处理语言等,是最早的高级编程语言之一,是世界上***个商用语言。前端时间网络上就Java是不是COBOL进行了一番热议,公说公有理,婆说婆有理。究竟孰对孰错?本文对此进行了一番分析。

文章内容如下:

 

[[49473]]

 

如果你用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借鉴了很多新特性,以下是一些新特性:

 
 
 
  1. switch (lang) {    
  2. case "Java" :    
  3. out.println("I like frameworks!");    
  4. break;    
  5. case "Ruby" :    
  6. out.println("I like Pabst Blue Ribbon!");    
  7. break;    
  8. case "PHP" :    
  9. out.println("I like WordPress!");    
  10. break;    
  11. }   

类型推断:

 
 
 
  1. Map<String, List<String>> peopleByDept = newHashMap<String, List<String>>();   

变成:

 
 
 
  1. 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)

原来我们用内部类实现类似闭包时,如下:

 
 
 
  1. Component button = new Button("Click me!");    
  2. button.onClick(new EventHandler() {    
  3. public onEvent(Event e) {    
  4. out.println("I was clicked!");    
  5. }    
  6. }   

而Lambdas则可以表达成:

 
 
 
  1. 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一样错误。

原文:http://sd.csdn.net/a/20111109/307231.html

【编辑推荐】

  1. Java 8整装待发 图谋云计算
  2. Java 8决定采用跟C#一样的Lambda句法
  3. Java 7是蜜糖还是毒药?
  4. JRuby和Java 7 我们可以期待什么
  5. 漫谈Java 7的新特性与C# 2.0的相似之处
THE END