正文
“
2、您觉得 Java 会过时吗?用的人越来越少,慢慢弱化,进而被新的语言取代吗?
我觉得编程语言要看具体的场景。比如 Scala 这类语言的兴起,很大部分是用于大数据分析,一些 functional(函数式)语言的特性,比如闭包等语言特性,提高了开发效率,还有 Clojure 主要用于编写并发程序等。 Java 最初是完全的面向对象语言,那时算是非常领先的概念。但在实际的具体应用中,functional(函数式)语言在某些特定的场景下也体现出了优势,Java 也在吸收这些东西。
目前来看,Java 在2016年初好像又创了市场占有率新高。也许,有一天,它也会老去,但是目前没有看到这种趋势。
“
3、Java 9 将要发布,从版本迭代的角度看,您认为Java的发展经历了哪几个阶段?
我谈谈我个人的粗浅看法吧。
第一是雏形阶段。最初 Java 虽然适应了互联网的大潮,但可能大多是实现嵌入设备或者写一些 Applet。在Java 1.2 的时候,Java 被划分成 Java EE(J2EE)、标准的 Java (J2SE),还有为移动设备和嵌入式设备设计的 J2ME。 Java 逐渐找到了自己的定位。
第二是蓬勃发展阶段。 在 1.4 版本发布后,Java 得到了蓬勃发展。那时候不只是 Sun,BEA、IBM、HP 以及包括 google 一系列做企业软件或互联网的厂商,都在使用 Java。
Java 除了本身语言的演进,J2EE框架、J2ME、J2SE 也不断地扩展性能,还包括第三方框架、工具的演进,使 Java 达到了全面爆发期。那时候,Java One 差不多是 IT 界最火爆的科技峰会之一。
第三是平稳发展期。 Sun公司被 Oracle 收购后, Oracle 对 Java 进行了持续不断的投入。比如 Java 8 里面有很多革命性的变化,包括 Lambda ,stream 等一系列的特性。从用户接受速度来看, Java 8 是有史以来最受欢迎的 Java 版本。
这就用事实打破了 Oracle 对 Java 不再投入的一些言论。也许国内很多互联网公司大部分可能没有切换到 Java 8,但从全球看,Java 8 的市场占有率其实很高。Java 本身实际上还是在快速演进,在一些领域可能会有相互借鉴的过程。
“
4、能简单分享下您最满意或最喜欢的 Java 9 新特性吗?
我觉得当然就是 Jigsaw。 Java 9 应该说核心就是 Jigsaw 项目,也就是Java模块化。在Java 以前的版本,语言层面并没有真正意义上的模块化。 classpath 仅仅是个容器,然后 jar 并不能提供模块之间的 boundary(边界),这在一定程度上导致了 Jar Hell 的问题。换句话说就是依赖关系特别复杂,很多稍微有一定规模的应用都需要用 Ant, Maven 这类工具维护复杂的依赖关系。因此,不管是在开发还是运行阶段,可能都是有很多潜在问题。
由于模块化本身在语言层面对模块进行了抽象,使得很多问题在一定程度上得到缓解。模块化是 Java 深入语言层面的一个改变,也是需要巨大的勇气和投入的。因为从语言层面上进行模块化,从虚拟机、类库、编译阶段的功能各个层面都需要去做改变。而很多人都了解,Java 团队和社区在 Java 8 和之前就做了很多前期工作。经过很多年的积累,到今天也不是所有的功能都定稿了,还有一些遗留待讨论的问题。