-->

技术领导力实战笔记_76_大咖对话_|_不可替代的Java:生态与程序员是两道护城河

你好,本周做客大咖对客的嘉宾是杨晓峰,他目前是java核心内库。

北京团队leader首席工程师。

二零一一年加入oracle java团队队,历历从从JDK七到JDK十一的研发过程。

目前,领导java核心内库北京团队专注于JDK核心类库、新特性的测试和开发,希望对java技术的演进和普及做出贡献。

即刻时间问,目前您的工作中,技术和管理各自占的比重大概是多少呢?有什么心得吗?杨晓峰回答,技术和管理各占一半一半吧。

因为我不做人事管理,更多的是属于技术leader. Leader和manager是不同的对leader来说,一方面思考更多的是团队未来的技术路线图,并要做好短期和长期的计划。

另一方面,要让团队有士气,让团队出成果。

每个人都清楚自己的目标,实现自己的价值。

首先,作为技术上的带头人,一定要明白未来的方向,什么是对的,什么是错的?这个对错是带引号的,并非那种绝对的对错,而是要清楚公司整体的目标与未来一段时间内的规划。

作为leader定出的路线图,要与部门或是公司的整体方向保持一致。

如果leader对目标的理解有偏差,很可能团队辛辛苦苦做事儿。

最后却得不到认可,这是很伤士气的。

因此在具体的操作上,作为leader,会积极的去和我的上级和合作团队去沟通,保证我带着大家走的路是没有走偏的。

其次呢,我所涉及的管理,更多的是让团队出成果,有士气,攻克前路上的难点,而有成果是有士气的保证。

比如现在我们做的目标就是把GDK十一发布计划里的内容,按照既定周期,把相关任务高质量的完成。

好在具体执行中,我的原则是不能把目标设定的太大,即使是一个大的目标,最好也采用迭代的方式,把它拆分成一个一个小的可验证的里程碑。

这样做的好处是团队能一直看到成果,了解自己所做事情的价值,否则人呢是很难保持一个长久的状态的。

如果在被认可之前走太久的话,难免会感觉到倦怠与疲惫。

这些都是一些实际执行中的做法,并没有太多高大上的东西。

对我来说,带团队就是这样,一步一步踏踏实实往前走。

当然每个产品的要点不一样,对java来说,质量是首先要保证的,对于质量的要求会远远高于数量和对速度的要求。

因为java是一个非常基础的平台,它也是整个java生态的基础。

一旦它出了问题,就会波及在它之上的所有工具,产品厂商影响会非常非常大。

因此呢基础平台必须要谨慎,但对于创业期的产品来说,可能会以一些可接受的质量代价来换取速度,这些都是要看实际情况来判断的。

即刻直接问java已经更新到版本时,但有调查显示,目前绝大部分的程序员仍在使用java八,不知道这一数据是否准确,判断是否迁移,需要考量哪些关键因素呢?杨小峰回答,的确是这样,目前大部分用户还在使用java八,还有人在使用java七甚至是java六。

但与此同时,新版本的热度和接受度在不断提高,主要原因有以下两点。

第一个原因,语言版本升级从来不是个一蹴可就的事情。

Java是一个基础平台,它的生态中包含大量内库工具,比如maving、 spring、 guava等。

还有各种基于它的基础产品,比如cassenra、 hadoop等。

对于一个严肃的厂商来说,升级不是一个简单的事情,选择升级。

Java的前提是所有主要开源类库软件,第三方厂商产品都已经支持了新版本。

很高兴的是,目前主流的项目都已经逐渐完成了。

对java十等新版本的支持。

除此之外,还得考虑新版本中有什么特性是自己必须的,能对自己的效率产生很大提高的,还有安全性能等不同角度的考量,而这个过程必然是需要一定时间的。

第二个原因,在过去的发版模式里,oracle为每个大的java版本都提供了长期升级。

Gdk八按目前计划至少到明年年初才会停止免费升级,相当于免费升级了五年。

坦白说,对比主流产品,java的免费支持周期,从任何角度来说都不能算短,背后呢是厂商大量的持续的默默无闻的投注。

如果想升级的话,成熟的JDK十或者即将发布的JDK十一都会是一个好的选择。

例如JDK十一是一个长期支持版本,按照目前的发布计划,它会有非常长的支持周期。

这是一个非常重要的考虑因素。

Java这么多年起起伏伏,但却能一直稳定,保持在编程语言第一的位置。

跟背后有一个可信厂商的持续投入是分不开的。

另外,从新特性的角度出发,新版本里从强大的ZGC更好的g one,到基本的字符串改进,再到各种基础内库协议,各方面都有非常大的提高,不是修修补补,而是本身能力的巨大提升。

因此,虽然升级到新版本会有一些学习曲线,但一定是值得的。

即刻时间问,现在很多新语言都极具冲击力,您能谈谈java目前面临的最大挑战以及未来的发展趋势吗?杨晓峰回答,虽然现在各种新语言活跃,但我认为java面临的最大的挑战并不在于外部语言的冲击,而是计算模式和场景的变化。

在过去十几年里,java平台主要的投入都致力于让它可以在那种大吞吐量的长期运行的服务器端跑得好。

但云计算兴起后,微服务、server等新新计技术模式对编程语言的技术要求变程,支持快速启动、高数据密度、短期运行的工作负负等。

另外像大数据、人工智能、深度学习这些领域呢,会更看重语言,对数据的运算能力等。

而这些方面恰恰是java仍然需要进一步改进的。

目前java也在不断精进,不断加强这些方面的能力。

比如amber旨在大大改善java的开发效率,让语法变得简单,更加符合现代的编程思维。

比如,voharla旨在提高java的数据处理能力,支持更加高效的数据处理和复杂数据类型等。

比如panama旨在解决和本地代码交互的效率等问题。

比如loon旨在让并发相关的开发变得更高效和平易近人。

还有引入fiber等类似携程的机制,除了不断提升基础能力提升应用性能之外,java也在积极做瘦身,去掉一些已经退出历史舞台的技术,甩掉一些包袱,让自己变得更简洁、更高效。

即刻时间。

问,您能用一句话来概括java的核心竞争力吗?能进一步介绍一下吗?杨小峰回答,java最大的核心竞争力来源于全球超过一千两百万的java程序员、庞大的java生态,海量的类库工具产品构建的无所不能的竞争力。

从语言特性来讲,java有它的优势,比如扩展性、可靠性、安全性强大的JBN等。

你可以重新设计一个语言,去掉java的历史包袱,保留java的长处,还能吸收其他语言的优点。

然而,java已经聚集起来的生态是不可替代的,如果真想替代,那将是一个庞大的、不可估量的投资。

另外,重复制造轮子的价值是什么呢?很多问题不是靠语言本身能解决的,而是要靠语言衍生出的各种类库和工具。

因此选择了java,就相当于选择了一个最可靠的一站式解决平台。

比如想搭建微服务框架,在java生态中能找到各种快速搭建的框架和方案,还能找到足够多的优秀程序员。

总结来说呢,java有着世界上最完整的生态,最庞大的程序员群体。

目前从小型设备到超大规模的应用开发中,java几乎是不可替代的。

真正的大规模系统很少能够离开java.。