`
bugtags
  • 浏览: 30808 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

4个理由告诉你Java为何排行第一

 
阅读更多

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
翻译作者:码农网 – 单劼

微信二维码

分享到:
评论

相关推荐

    usb4java-javax-1.3.0.tar_usb4java包_usb4java1.3.0_usb4java版本_

    USB4Java是一个开源Java库,它为开发人员提供了一个接口,可以方便地访问USB设备,无需深入了解底层USB协议的复杂性。这个库是基于libusb库实现的,libusb是一个跨平台的C语言库,提供了对USB设备的低级别访问。在本...

    第一章认识Java.

    - **Java 1.0**:1995年5月23日,正式发布了Java 1.0版本,这是Java的第一个公开版本。 - **后续版本**:自1997年起,Java经历了多个重要版本的更新,如Java 1.1(1997年2月18日)、Java 1.2(1998年12月4日)、Java...

    长沙新华java第一章作业

    这个长沙新华java第一章作业是由我爱IT技术网的it人士做完后分享的,希望可以和大家一起交流it技术。

    第一个Java程序.exe

    初级学习者的第一个Java程序,写的非常经典

    Java入门第一个程序源代码

    Java是一门经久不衰的语言,无论你从事Java还是Android开发,或找一门语言作入门.此路径体系就是你的不二选择,现在比别人学的更早,未来就比别人成长更快!这是Java入门第一个程序源代码

    【Java】零基础入门—教你开发第一个Java程序

    标题和描述中提到的是一个针对初学者的Java编程入门教程,旨在帮助没有编程基础的人编写他们的第一个Java程序。这个教程由成都源代码教育提供,该机构专注于Java和PHP等IT培训已有8年历史。 首先,要开发Java程序,...

    java实现多个docx文档合并(基于docx4j)

    4. **添加封皮**:如果需要在合并后添加统一的封皮,你需要创建一个封皮文档部分,并将其插入到合并文档的开头。 ```java // 创建封皮 Document封面 = ...; // 添加到合并文档 mergedDoc.getMainDocumentPart()...

    java开源包4

    WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...

    编写Java第一个程序。

    编写第一个JAVA程序,开始认识JAVA程序。 新手上路。

    4个java经典demo

    这个名为"4个java经典demo"的资源是为初学者准备的,旨在帮助他们快速掌握Java的基础语法。以下是对这四个经典Java Demo的详细解读: 1. **Hello, World!** 这通常是学习任何编程语言的第一个示例。在Java中,...

    java使用Com4j读取visio

    Com4j是一个开源库,它为Java提供了与COM对象交互的能力,弥补了Java不直接支持COM的短板。以下是关于这个主题的详细知识点: 1. **Com4j库介绍**: Com4j是一个轻量级的Java库,用于在Java应用中调用COM组件。它...

    java基于Redis实现排行榜功能源码

    在本文中,我们将深入探讨如何使用Java和Redis的有序集合(Zset)来实现一个排行榜功能。Redis是一个高性能的键值存储系统,它的有序集合数据结构非常适合用来构建排行榜,因为可以方便地进行分数排序和成员操作。 ...

    java源码包---java 源码 大量 实例

     Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 3...

    语音识别 sphinx4 JAVA 教程

    Sphinx-4是卡内基梅隆大学(CMU)开发的一个开源语音识别引擎,特别适合Java开发者使用。它提供了丰富的API和工具,支持实时语音识别,具有良好的可扩展性和灵活性。 【Sphinx-4的Java环境搭建】 在Java环境下使用...

    java_java读取TLE数据_TLE_轨道预测_卫星_SGP4

    Java实现SGP4模型通常需要导入一个外部库,如SatellitePropagator或sgp4-java。这些库已经封装了SGP4算法,提供接口供开发者调用。 使用这些库,你可以创建一个卫星对象,输入解析好的TLE数据,然后设置初始时间。...

    jni4net C# java 相互调用

    在C#中调用Java代码时,你需要定义一个接口,该接口映射到Java中的类,然后使用`CreateJavaProxy`方法创建Java对象的代理。同样,在Java中调用C#代码时,你需要定义一个.NET接口,并在Java代码中使用`CreateNetProxy...

    JAVA将一个数据中数据定时自动复制(抽取)到另一个数据库

    本文将深入探讨如何使用Java编程语言实现从一个数据库中定时自动抽取数据并复制到另一个数据库,以达到数据库间的实时或近实时同步。 首先,我们需要了解基础概念。Java是一种广泛使用的面向对象的编程语言,具有...

    Java网络编程(第4版)PDF

    此外,Java NIO(New Input/Output)是另一个重要的主题,它是Java 1.4引入的新特性,提供了非阻塞I/O操作,能够显著提升性能。NIO基于通道(Channel)和选择器(Selector),使得程序可以同时处理多个连接,适用于...

    GIS开发之- 空间坐标转换需要用到的 proj4j库(Java版本)

    在Java环境下,由于可用的资源相对较少,proj4j库是一个非常宝贵的工具,它为Java开发者提供了进行这种转换的能力,而无需涉及C语言编译的复杂过程。 proj4j是Proj.4库的一个Java实现,Proj.4是一个广泛使用的开源...

    第一个Java程序.docx

    标题中的“第一个Java程序.docx”表明我们将讨论如何编写并运行你的第一个Java应用程序。描述中并未提供具体细节,但根据标签为空以及部分内容的描述,我们可以深入探讨Java开发的基础步骤。 1. **Java环境搭建**:...

Global site tag (gtag.js) - Google Analytics