Java已经有20年的历史了,甚至更久,而这取决于你所询问的人和你的计算方式。忽略它的年龄不看,Java依然排行第一。它的实用性、性能和向后兼容性都彰显其价值所在。
2016年伊始,标志着我们已经走过了Java的20年历程。事实上,虽然Java宣称是于1995年5月23日公开发行(HotJava 浏览器却并没有获得同样的成功),但第一版官方JDK是在1996年的1月23日才正式发行,因此Java可以称得上是刚满20岁。Java身上有很多值得回顾的东西,但我想更加令人感兴趣的是Java在20年之后依然能够成功的原因。

准确测量程序设计语言的受欢迎程度是很困难的,但众多调研统计中的一个普遍接受的指标是 TIOBE指数。它能够通过各种搜索引擎以及谷歌博客、维基百科甚至YouTube进行语言跟踪。(在写这篇文章的时候,我学到了一些新东西,那就是,TIOBE其实是“The Importance Of Being Ernest”的缩写,它是奥斯卡·王尔德的一部剧作,虽然我不清楚这跟程序设计语言有什么关系)。
回顾过去十五年的成果,Java一直是数一数二的。Java已经占据了曾经C语言所拥有的地位,而C语言在Java开始流行之前一直是最受关注的语言。(事情变化多快啊!早在1986年Lisp语言还是排名第二的语言而Ada排名第三)。TIOBE指数也刚刚宣布2015年是Java语言年,而十年之前,Java就已然获此殊荣。
作为普及率的另外一个体现,甲骨文经常喜欢引用的统计,即世界上有九百万的java开发者。如果你想要找点乐子,那么请查看这篇文章,它提供了一些关于开发者数量如何达到这一数目的细节。忽略这些细节不看,我认为大家都同意全球的确有数以百万的Java开发者。
那么,为什么Java能够持续的受到欢迎呢? 我认为还是有一些原因的,这里我们列举四条:

1、实用性

James Gosling将Java描述为“蓝领”的程序设计语言。它能使开发者花最小的代价完成工作,同时还能使得开发者在一段时间之后,还能继续完成别人的(甚至自己的)代码并且明白其中的意思。当然,你也可以编写可读性差的代码,就像你在其他语言中能做的一样,但是使用良好的编码风格能够让它比其他许多语言都有更好的可读性。

2. 向下兼容

Sun公司和之后的Oracle(甲骨文)公司在确保一个版本的Java代码能够正常地在新的版本运行上做出了很多努力。虽然事情并不总是这样(如JavaSE1.4中的断言和JavaSE5中的枚举)并且有时不向下兼容的做法能够获得更好的实现(如:泛型),但向下兼容对开发者来说依然是一个引人注目的特性。没有比为了能在新版本的平台上运行代码而修改旧版本中的正常代码更糟糕的事情了。这简直是浪费时间。

3. 可扩展性/性能/可靠性

在超过20年和每年数以千计的开发者的推动和发展,Java已经成为了一个坚实的平台,可以赶上甚至超过本地代码的水准(多亏了JVM使用了动态而非静态代码解析的一些优化)。当谈及可扩展性,看看使用Java语言的一些大型企业:Twitter(抛弃了JVM的Ruby-on-Rails,因为它不再能够扩展),Spotify,Facebook,Scalesforce,eBay,当然还有Oracle。Hadoop,Cassandra和Spark,大数据工程的基础框架,无不使用Java或者Scala并且在JVM虚拟机上运行的。如果你想要良好的拓展性和性能,Java和JVM是最好的选择。

4. 保鲜度

对我来说这是最重要的一条。查看TIOBE统计图能够发现,2014年10月份开始,Java的受欢迎程度有了显著的提升,这刚好是在JDK8发行之后。JDK8对Java开发者来来说有了显著的变化,它引入了Lambda表达式和Stream API。突然间Java开发者能够在不用学习一整套新语言(如Scala)的情况下以一个更加有效的方式进行开发。这些特点也使它有可能更简单地利用多核/多处理器的机器,而不必写很多复杂的和潜在的容易出错的多线程代码。随着Jigsaw工程在为JDK 9的发布而启动, 我们会看到模块化使大企业应用程序更容易建立、部署和维护。同时在JDK10中,对于发展新的语言特性的计划已经在进行中了,比如值的类型等等。

我非常期待Java能够获得另一个十年当中的年度最佳编程语言。

译文链接:http://www.codeceo.com/article/4-reason-java-no1.html
英文原文:4 Reasons Why Java is Still #1
翻译作者:码农网 – 单劼

4个理由告诉你Java为何排行第一的更多相关文章

  1. CODE大全告诉你java是否开始没落了

    CODE大全告诉你java是否开始没落了! 22 岁,对于一个技术人来说可谓正当壮年.但对于一门编程语言来说,情况可能又有不同.各类编程语言横空出世,纷战不休,然而 TIOBE 的语言排行榜上,Jav ...

  2. 8 Reasons why SharePoint is Bad for Your Business 8个理由告诉你,为什么SharePoint对你的业务有害

    8 Reasons why SharePoint is Bad for Your Business 8个理由告诉你,为什么SharePoint对你的业务有害         SharePoint近期已 ...

  3. 老杜告诉你java小白到大神是怎么炼成的(转载)

    老杜告诉你java小白到大神是怎么炼成的 1. 学习前的准备 一个好的学习方法(应该怎么学习更高效): 一个合格的程序员应该具备两个能力 有一个很好的指法速度(敲代码快) 有一个很好的编程思想(编程思 ...

  4. 2019年2月编程语言最新排行:java稳居第一(java优势在哪里)

      近日TIOBE公布了2月编程语言排名,在意料之中java稳居第一,C和C++分别位居第二第三名. 下图是2 月编程语言排行榜 TOP20 榜单以及前 10 名编程语言长期走势图:         ...

  5. 《Java程序设计》第一周学习总结

    20145224 <Java程序设计>第一周学习总结 教材学习内容总结 通过第一周的学习让我对Java有了个初步的了解,知道了Java分为Java SE.Java EE.Java ME三大 ...

  6. 王燕 201771010126《面向对象程序设计(java)》第一周学习总结

    王燕 201771010126<面向对象程序设计(java)>第一周学习总结 王燕 201771010126<面向对象程序设计(java)>第一周学习总结 第一部分:课程准备部 ...

  7. 周强201771010141《面向对象程序设计(java)》第一周学习总结

    周强201771010141<面向对象程序设计(java)>第一周学习总结 第一部分:课程准备部分 填写课程学习 平台注册账号, 平台名称 注册账号 博客园:www.cnblogs.com ...

  8. 201772020113李清华《面向对象程序设计(java)》第一周学习总结

    201772020113<面向对象程序设计(java)>第一周学习总结 第一部分:课程准备部分 填写课程学习 平台注册账号, 平台名称 注册账号 博客园:www.cnblogs.com b ...

  9. 201771010142 张燕《面向对象程序设计(java)》第一周学习总结

    201771010142 张燕<面向对象程序设计(java)>第一周学习总结 第一部分:课程准备部分 填写课程学习 平台注册账号, 平台名称 注册账号 博客园:www.cnblogs.co ...

随机推荐

  1. PHP闭包研究

    闭包也就是PHP的匿名函数, 但是和函数不同的是,闭包可以通过use使用函数声明时所在作用域的变量的值. 形式如下 $a = function($arg1, $arg2) use ($variable ...

  2. tomcat-8.0

    https://tomcat.apache.org/tomcat-8.0-doc/introduction.html

  3. FASTDFS .net 客户端

    FastDFS .net 客户端目前还比较少,而且使用大部分没有原生提供的方便 推荐一个比较方便的 下载地址: https://www.nuget.org/packages/NengLong.CMP. ...

  4. 【转】个人最常用的Eclipse快捷键

      记录下自己在Eclipse中最常使用的快捷键: 其实网上总结多的是,自己记录下自己平时最切身受益的一些快捷键. 1.SHIFT+ ALT+Z(刚学的): 条件:选中一段代码 会弹出上面的右键菜单, ...

  5. html之head,base,meta,title

    一个简单的HTML最基本的必须的元素 用于定义文档的头部,是所有头部元素的容器.头部描述了文档的各种属性和信息,绝大多数头部的数据都不会直接显示给读者. 下面这些标签可用在head部分:base,li ...

  6. Swift技术之如何在iOS 8下使用Swift设计一个自定义的输入法 (主要是NSLayoutConstraint 的使用)

    当前位置: > Swift新手入门 > Swift技术之如何在iOS 8下使用Swift设计一个自定义的输入法 时间:2014-09-10 16:49来源:未知 作者:啊成 举报 点击:5 ...

  7. Android监听点击事件实现的三种方法

    监听点击事件实现的三种方法:1.匿名内部类2.外部类3.直接实现接口 1.匿名内部类: package com.jereh.calculator; import android.content.Con ...

  8. ORA-01013:用户请求取消当前的操作

    ORA-01013:用户请求取消当前的操作 在测试一个通过ODBC连接ORACLE数据库的VB程序时,总是出现该错误,估计应该是数据量比较大,导致超时. 查到解决方法有如下四种 (选任意一种即可): ...

  9. Jfinal中log4j的配置

    基本不用配置: 1.web.xml不用配置: 2.添加文件log4j.properties到src下面: 3.lib中复制log4j的jar包进去: 4.可以使用了; package demo; im ...

  10. Oracle Group by+rollup+cube 的应用

    首先我们创建一个示例表: Create table test_group (v_name varchar2(4) ,v_size varchar2(4) ,v_color varchar2(4) ,n ...