TEL:400-885-5191

Java培训 > Java知识 >

Java的未来发展趋势会是如何

作者:南京中博    来源:南京中博    发布时间:2019-12-30 09:47    浏览量:64

Java 作为一门长青的编程语言,在比较长的发展时间里,时常会有唱衰的声音。但 Java 一直在不断向前发展,受欢迎程度也一直很高

  Java 作为一门长青的编程语言,在比较长的发展时间里,时常会有唱衰的声音。但 Java 一直在不断向前发展,受欢迎程度也一直很高,TIOBE 榜单常年保持在 Top 2,未来 Java 将如何发展呢?本文搜集了一些国外开发者和相关从业人员的看法。

  Java 語言发展的这 24 年也正是全世界互联网技术飞速发展的 20 年,Java 语言同时也见证了电子商务浪潮、互联网技术浪潮、互联网大数据浪潮、云计算技术浪潮,所以在现今各大互联网企业身上都能见到 Java 的身影。

  纵看 Java 語言的发展趋势,禁不住让人联想到辛弃疾的一首词:

  千古江山,英雄无觅,孙仲谋处。舞榭歌台,风流总被雨打风吹去。斜阳草树,寻常巷陌,人道寄奴曾住。想当年,金戈铁马,气吞万里如虎。元嘉草草,封狼居胥,赢得仓皇北顾。四十三年,望中犹记,烽火扬州路。可堪回首,佛狸祠下,一片神雅社鼓。凭谁问,廉颇老矣,尚能饭否?

  TIOBE 的语言排名榜显示,自 2016 年初 Java 语言就出现了显著的下颓趋势,开发者社区也出现了一些唱衰 Java 語言的论调,编者心中也有些许疑问:Java 老矣,尚能饭否?

  java的往日辉煌

  Java 語言始于 1991 年 Sun 企业 James Gosling 领导的的 Ork 项目,1995 年 Sun 企业宣布起名为 Java,并提出“Write once, Run anywhere"的口号。

  1996 年 1 月 Java 1.0 发布,提供了1个解釋执行的 Java 虚拟机,其时正逢互联网技术刚开始盛行,Java 的 Applet 能在 Mozilla 电脑浏览器中运作,被看做是将来的互联网技术語言。

  1997 年 2 月 Java 1.1 发布,Java 语言的基础特性基本明确了,例如反射 (reflection), JavaBean, 接口和类的关联这些,始终到今日都完全一致。然而,Java 最开始的一些总体目标,如在电脑浏览器中执行 Applet,以及跨平台的图形界面 Awt 很快遭受到负面影响的评论。

  1998 年 12 月,Java 第一位里程碑式的版本,即 Java 1.2 发布了。这种版本应用了 JIT(Just in time)编译器技术,促使語言的可迁移性和实行速率达到最优化的平衡,同时 Collections 集合类设计良好,在企业应用开发中快速获得了广泛性应用。Sun 公司把 Java 技术机制分为3个大方向,各自是 J2SE(面向桌面和通用应用程序开发),J2EE(面向企业级应用开发),J2ME(面向移动终端开发)。这一归类影响十分悠久,突显出主流語言设计师的观念:对于于不一样的应用领域,在特征,API 集合等开展划分。

  2000 年 5 月,Java 1.3 公布,这种版本中 Corba 作为语言等级的分布式系统对象技术性,成为 J2EE 的一个技术条件。J2EE 受到 Corba 的设计的影响较大,早期 EJB 的 Home,接口类型和保持就是说 Corba 在 C 語言的实现,被移植到 Java 語言当中。J2EE 中的 Servlet 标准规范得到了巨大的成功,随着着互联网的兴起,和浏览器真接通过 HTTP 安全协议人机交互的 Servlet,和诸多的 MVC 架构,变成 Web1.0 的网红。

  2002 年 2 月,Java 1.4 发布,Java 語言真正迈向成熟期,保证了十分完善的語言特性,如 NIO,正则表达式,XML 处理器等。同年微软的.NET 框架公布,两者开始了为期十多年的暗自竟争。从語言特点上而言,.NET 后发先至,始终处在优势。但 Java 依赖优良的开发者生态,绝大部分大型软件公司的用户众多和不断奉献,以及对 Linux 电脑操作系统优良的支持,逐渐的在服务器端取得优越性主导地位。

  2004 年 9 月,Java 5 发布,Sun 已不选用 J2SE, J2EE 这类取名方法,而使用 Java SE 5, Java EE 5 这样的命名。我觉得 Java 5 是第二个里程碑式的版本。Java 語言语法产生太大的转变,如注解 (Annotation),装箱 (Autoboxing),泛型 (Generic),枚举 (Enum),foreach 等被添加,提供了 java.util.concurrent 并发包。Java 5 对于 Java 语言的推进是极大的,特别是注释的加入,促使語言定义灵活了许多,程序员还可以写出更为适用领域概念的描述性程序。

  2006 年 5 月, JavaEE 5 发布,至少最主要是 EJB3.0 的版本升级。在此之前,EJB2.X 版本被广泛质疑,SpringFramework 创建者 Rod Johnson 在经典书籍“J2EE Development without EJB“中,对 EJB2 意味着的分布式对象的设计方法予以批驳。EJB3 则再次历经更新改造,应用注解方法,历经应用服务器对 POJO 对象开展提高来改变分布式服务能力。在某种意义,都可以说 EJB3 拯救了 JavaEE 的太早衰落。

  2006 年 12 月,Java 6 发布,这个語言语法改善不多,但在虚拟机内部结构做了很多的改善,称得上1个相当成熟平稳的版本,直到现在国內的许多公司仍然以 Java6 当做首要 Java 开发版本来应用。同年 Sun 公司作出1个值得尊敬的决策,将 Java 开源。OpenJDK 从 Sun JDK 1.7 版本分支出去,成为今日 OpenJDK 的基础。OpenJDK6 则由 OpenJDK7 剪裁而成,目前由红帽承当保护,来满足 Redhat Enterprise Linux 6.X 用户的需要。

  2009 年 12 月,JavaEE 6 公布,这个版本应当就是 JavaEE 到迄今为止改善最多影响最悠远的1个版本。由于 JavaEE5 只有 EJB3 适应了 Java 注解语法的添加,而 EE6 全面接受了注释。CDI 和 BeanValidation 规范的进入,在 POJO 之中还可以界定完善的语义,由器皿来决策怎样去做。Servlet 也升级到 3.0 版本,并在接口上添加异步支持,促使系统软件总体速率可以大幅度提高。EE 划分为 Full Profile 和 Web Profile,用户还可以依据自身的需用挑选不一样的功能集。

  在此之前,Oracle 已经以 74 亿美金的价格收购了 Sun 公司,获得了 Java 商标logo和 Java 主动权。也收购了 BEA 公司,得到市场占有率最多的应用服务器 Webogic。JavaEE 6 虽然是收购之后发布的版本,但关键的设计方案工作依然由原 Sun 企业的 Java 权威专家进行。

  2011 年 7 月,Oracle 发布 Java 7, 列举关键的特点是 NIO2 和 Fork/Join 并发包,虽然语言上沒有大的提高,但我本人觉得,自从 Oracle JDK(包括 OpenJDK7),Java 虚拟机的稳定真正作到的工业级,变成1个计算平台而服务于全球。

  2013 年 6 月,Oracle 公布 JavaEE 7,这一版本进入了 websocket,Batch 的支持,而且加入 Concurrency 来对服务器多线程进行监管。然而全部的子标准,算上选择项 (Optional) 总共有 40 多项,开发人员光是阅读理解标准文本就很费劲了,更不必说可以全局速成熟练掌握。JavaEE 规范的本质是企业级应用设计的经验结晶,每1个 API 都历经诸多丰富工作经验的权威专家反反复复商讨并明确。各个版本相互之间都可以保证向后兼容,换句话说,即便是 10 年前写的 Servlet 程序,当今的开发者还可以流畅的阅读源代码,历经一部分代码更改和配置改动,还可以部署在当今的应用服务器上。相反,今后用 Servlet4 写的程序,浏览器和服务器通信应用全新升级的 HTTP/2 协议,但程序员在理解上不会有障碍,就是说因为 Servlet 规范的 API 十分平稳,基本找不到大的变动修改。

  2014 年 3 月,Oracle 发布 Java 8,这个版本是我认为的第三个有里程碑式作用的 Java 版本。其中最引人注意的便是 Lambda 表达式了,此后 Java 語言原生提供了函数式编程能力。语言层面大的特性提升还有:Streams,Date/Time API, 新的 Javascript 引擎 Nashorn,集合的并行计算支持等,Java8 更加适应海量云计算的需要。

  依照原先的计划方案,Java9 应该在2017年 7 月发布,但由于模块化 (JPMS) 投票未通过的原因,推迟到2017年 9 月份发布。其中最主要更新是 Servlet 4.0 和 CDI 2.0。

  java的未来发展趋势会是如何

  Ruby 强于 DSL(各个领域指定語言),程序员还可以界定丰富的语义来充足表述自身的思想。Erlang 就是为分布式计算设计的,能保证在规模性并发访问的状况下,维持强壮和稳定性。Go 语言内置了并发能力,可以编译成本地代码。当前新的网络相关项目,很大比例是由 Go 语言编写的,如 Docker、Kubernetes 等。

  编写网页用 PHP,函数式编程有 Lisp,编写 iOS 程序有 Swift/ObjectiveC。一段话归纳,能留到排行榜之中的語言,全部都是好的语言,在其所属的领域能做到最好。

  那麼,Java 语言究竟有何优势可以占有排名榜第二的位子呢?

  其一,语法非常简单,学过计算机编程的开发者都能快速上手。

  其二,在若干了领域都有较强的竞争能力,例如服务端编程,高性能互联网程序,企业软件事务处理,分布式计算,Android 移动终端应用开发这些。

  最重要的一点是符合工程学的需求,我们了解当代软件全是协作开发,那麼代码可维护性,编译时检查,较为高效率的运行效率,跨平台能力,丰富的 IDE,测试,项目管理工具配合。都使得 Java 成为企业软件公司的首选,也得到很多互联网公司的青睐。

  没有薄弱点,容易从市场上找到 Java 软件工程师,软件公司选择 Java 做为首要编程语言,再在特定的领域应用其他语言协作编程,这样的组合选择,肯定是不会有大的疑问。

  因此综合性来讲,Java 语言全能层面是最好的。小编整理了一些java进阶学习资料和面试题,需要资料的请加JAVA高阶学习Q群:664389243 这是小编创建的java高阶学习交流群,加群一起交流学习深造。群里也有小编整理的2019年最新最全的java高阶学习资料! ​​​​

  Java的未来展望

  现如今的 Java,早已在功能性上相当丰富多彩了,Java 8 加入 Lambda 特性,Java 9 加入模块化特性之后,关键的語言特点好像早已都列入进去。要是说些最该考量的一些作用,我认为有以下几点:

  模块化改造结束以后,将会会冒出大量专业的 JDK 发行软件商,提供在功能方面,例如针对于分布式计算,机器学习,图形计算等,纳入相关的功能库作为文件。这样专业行业用户还可以挑选历经充足提升后的 JDK 版本。

  Java 语义上对“模式匹配”有更强的支持,如今的 switch 语句能力還是较为缺乏,可以向 Erlang, Scala 等语言效仿。

  多线程并发处理,Java 做的已经很好了。不过我本人感觉还可以在多进程多线程配合,以及语言档次数据管路表达上,可以开展改建和提升。

  JDK9 会有 HTTP/2 client 端的能力,但毫无疑问会有更多更好的三方库出现,JDK 可以和这些三方库通力合作,提供一个更好 API 界面和 SPI 参考实现。

  目前 Java 在云计算方面遇到的最大问题还是占用内存过大。我个人认为从两个方面来看:

  如果该应用的确是长时间运行的服务,可以考虑结构清晰的单体结构,算下来总的内存消耗并不会比多个微服务进程占用的更多。

  微服务应用,未来可以采用编译成本地代码的方式,并使用优化过的三方库,甚至本地 so 文件,减少单个进程的过多内存占用。

  安全框架更加清晰,SPI 可以允许三方库提供更强大更高效的安全功能。

  JavaEE 方向则有更多的改进的地方:

  EJB 重构目前的 Corba 分布通信基础,参考 gRPC 进行远程系统调用。

  分解 EJB 规范,把 JVM 进程相关的特性,如注入 / 加强 / 事务 / 安全都统一到 CDI 规范中;对 EJB 进行裁剪,保留远程访问特性和作为独立执行主体分布式对象能力。

  加强 JMS 和 MDB,媲美 Akka 目前的能力。

  JaxRS 适度优化,不必要依赖 Servlet,或者适度调整,来提供更大的能力。

  JPA 借鉴 JDO,以及融入一部分特性,做到对 NoSQL 更良好的支持。

  Java 模块化系统采用也是一个很有趣的话题。我敢肯定 OSGI 拥护者对于将它放在创新者阶段会有意见,但这样做可能是对的。

  我想可以将 Clojure 移到晚期大众阶段。当然,人们还在用它,但我感觉到它的使用量在下降,而且它本身面向的就是利基市场。

  我会将 Ceylon 移掉。它一直以来都没有获得太多关注,而且我不认为进入 Eclipse 会给它带来多大帮助。这个项目的活跃度很低,过去 6 个月只有 10 个代码提交。

  测试框架的趋势看起来相当稳定。我们要把它移掉吗?从采用率来看,我给它们排个顺序:JUnit、TestNG/Cucumber、Spock,但似乎变化不大?(相关推荐:java的变化有哪些

  SmartBear 最近收购了 Cucumber,可能会促进它的发展,但即使是这样,我仍然倾向于把它们移掉。

  人们似乎对 JVM 上的 Node 不感兴趣?我想可以把它移掉。

  我很想把 Kotlin 移到早期大众阶段,它是我近来最经常听到的一门 JVM 编程语言,这要得益于 Android 开发的流行。可以说,它已经越过了鸿沟,但仍然落后于其他编程语言,比如 Groovy、Swift 或 Go 语言。

  我觉得 Scala 可以留在晚期大众阶段,人们会逐步弃用它。

本文标题: Java的未来发展趋势会是如何


本文链接: http://www.njjava.com/javaedu/867.html


本站所有内容受到法律保护,未经允许任何人不得转载、抄袭

抢免费试听名额

名额仅剩66名

教育改变生活

WE CHANGE LIVES