gitbook/技术领导力实战笔记/docs/12121.md
2022-09-03 22:05:03 +08:00

7.8 KiB
Raw Permalink Blame History

大咖对话 | 不可替代的Java生态与程序员是两道护城河

你好!

本周作客“大咖对话”的嘉宾是杨晓峰他目前是Java核心类库北京团队leader首席工程师。2011年加入Oracle Java团队经历了从 JDK 7 到 JDK 11 的研发过程,目前领导 Java 核心类库北京团队,专注于 JDK 核心类库新特性的测试和开发,希望对 Java 技术的演进和普及做出贡献。

极客时间:目前您的工作中,技术和管理各自占的比重大概是多少?有什么心得?

杨晓峰技术和管理各占一半一半因为我不做人事管理更多的是属于技术leader。Leader和manager是不同的对leader来说一方面思考更多的是团队未来的技术路线图并要做好短期和长期的计划另一方面要让团队有士气、让团队出成果每个人都清楚自己的目标实现自己的价值。

首先作为技术上的带头人一定要弄明白未来的方向什么是对的、什么是错的。这个对错是带引号的并非那种绝对的对错而是要清楚公司整体的目标与未来一段时间内的规划作为leader定出的路线图要与部门或是公司的整体方向保持一致。

如果leader对目标的理解有偏差很可能团队辛辛苦苦做事最后却得不到认可这是很伤士气的。因此在具体的操作上作为Leader会积极地去和我的上级和合作团队去沟通保证我带着大家走的路是没有走偏的。

其次我所涉及的管理更多的是让团队出成果、有士气攻克前路上的难点而有成果是有士气的保证。比如现在我们的目标就是把JDK 11发布计划里的内容按照既定周期把相关任务高质量的完成好。

在具体执行中,我的原则是不能把目标设定的太大,即使是一个大的目标,最好也采用迭代的方式,把它拆分成一个一个小的可验证的里程碑。这样做的好处是团队能一直看到成果,了解自己所做事情的价值,否则人是很难保持一个长久的状态的。如果在被认可之前走太久的话,难免会感觉到倦怠与疲惫。

这些都是一些实际执行中的做法,并没有太多高大上的东西,但对我来说,带团队就是这样一步一步踏踏实实往前走。

当然每个产品的要点不一样对Java来说质量是首先要保证的对质量的要求会远远高于对数量和对速度的要求。因为Java是一个非常基础的平台它也是整个Java生态的基础一旦它出了问题就会波及在它之上的所有工具、产品、厂商影响会非常非常大因此基础平台必须要谨慎。

但对于创业期的产品来说,可能会以一些可接受的质量代价来换取速度,这些都是要看实际情况来判断的。

极客时间Java已经更新到版本10但有调查显示目前绝大部分的程序员仍在使用Java 8不知道这一数据是否准确判断是否迁移需要考量哪些关键因素

杨晓峰的确是这样目前大部分用户还在使用Java 8还有人在使用Java 7甚至是Java 6但与此同时新版本的热度和接受度在不断提高。主要原因有以下两点

第一个原因语言版本升级从来不是个一蹴可就的事情。Java是一个基础平台它的生态中包涵大量类库工具比如Maven、Spring、Guava等还有各种基于它的基础产品比如Cassandra、Hadoop等。

对一个严肃的厂商来说升级不是一个简单的事情选择升级Java的前提是所有主要开源类库、软件、第三方厂商产品都已经支持了新版本。很高兴的是目前主流的项目都已经逐渐完成了对Java 10等新版本的支持。除此之外还得考虑新版本中有什么特性是自己必须的能对自己的效率产生很大提高的还有安全、性能等不同角度的考量。而这个过程必然是需要一定时间的。

第二个原因在过去的发版模式里Oracle为每个大的Java版本都提供了长期升级JDK 8按目前计划至少到明年年初才会停止免费升级相当于免费升级了5年。坦白说对比主流产品Java的免费支持周期从任何角度来说都不能算短背后是厂商大量的、持续的、默默无闻的投入。

如果想升级的话成熟的JDK10或者即将发布的JDK 11都会是一个好的选择。例如JDK 11是一个长期支持版本按照目前的发布计划它会有非常长的支持周期。这是一个非常重要的考虑因素Java这么多年起起伏伏但却能一直稳定保持在编程语言第一的位置跟背后有一个可信厂商的持续投入是分不开的。

另外从新特性的角度出发新版本里从强大的ZGC、更好的G1到基本的字符串改进再到各种基础类库、协议各方面都有非常大的提高不是修修补补而是本身能力的巨大提升。因此虽然升级到新版本会有一些学习曲线但一定是值得的。

极客时间现在很多新语言都极具冲击力您能谈谈Java目前面临的最大挑战以及未来的发展趋势么

杨晓峰虽然现在各种新语言活跃但我认为Java面临的最大的挑战并不在于外部语言的冲击而是计算模式和场景的变化。

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

但云计算兴起后微服务、Serverless等新的计算模式对编程语言的技术要求变成支持快速启动、高数据密度、短时间运行的工作负载等。另外像大数据、人工智能、深度学习这些领域会更看中语言对数据的运算能力等。

而这些方面恰恰是Java仍然需要进一步改进的。目前Java也在不断精进、不断加强这些方面的能力比如Amber旨在大大改善Java的开发效率让语法变得简单更加符合现代的编程思维比如Valhalla旨在提高Java的数据处理能力支持更加高效的数据处理和复杂数据类型等比如Panama旨在解决和本地代码交互的效率等问题比如Loom旨在让并发相关的开发变得更高效和平易近人还有引入Fiber等类似协程的机制。

除了不断提升基础能力、提升应用性能之外Java也在积极做瘦身去掉一些已经退出历史舞台的技术甩掉一些包袱让自己变得更简洁、更高效。

极客时间您能用一句话来概括Java的核心竞争力么能进一步介绍一下吗

杨晓峰Java最大的核心竞争力来源于全球超过1200万的 Java 程序员庞大的Java生态海量的类库、工具、产品构建的无所不能的竞争力。

从语言特性来讲Java有它的优势比如扩展性、可靠性、安全性、强大的JVM等。你可以重新设计一个语言去掉Java的历史包袱保留Java的长处还能吸收其他语言的优点。然而Java已经聚集起来的生态是不可替代的如果真想替代那将是一个庞大的不可估量的投资另外重复制造轮子的价值是什么呢。

很多问题不是靠语言本身能解决的而是要靠语言衍生出的各种类库和工具因此选择了Java 就相当于选择了一个最可靠的一站式解决平台。比如想搭建微服务框架在Java生态中能找到各种快速搭建的框架和方案还能找到足够多的优秀程序员。

总结来说Java有着世界上最完整的生态、最庞大的程序员群体。目前从小型设备到超大规模的应用开发中Java几乎是不可替代的真正的大规模系统很少能够离开Java。