云原生时代,Java还有优势么?

1、最近,很多后端工程师都在讨论,Rust、Go和Java这三门语言的对比。虽然我们经常拿PHP是世界上最好的语言来开玩笑。但具体到工作里,确实语言的选择非常重要,这一定程度上会直接决定一个工程师薪资的高低。

2、简单说下这三门语言的情况吧,Java是一门有20多年历史的老牌语言,虽然有很多的问题,但企业市场上他仍然是当之无愧的霸主,你要知道Java的优势是它庞大的用户群和成熟的软件生态。Go语言这两年在字节跳动等企业有了很大的普及度,它已经是一门成熟的企业级编程语言,未来想象空间很大(云原生)。目前,Go语言的TOP3应用领域为微服务、工具以及基础设施。

3、Rust的定位是一门系统语言,你要知道,Mozilla 孵化 Rust,是为了打造一个更好的 Firefox。今年Rust 基金会正式成立,五大科技巨头支持,这也表明了巨头对这门语言的看好。微软今天组建了Rust团队,说他们准备用Rust重写部分核心Windows API。从目前的判断来看,Rust 将是未来企业中不可或缺的技术,可能是C++的继任者。

4、以上这几个点,是我从中立的媒体视角看到的一些观点,希望对你的选择能提供帮助。咱们再说回Java,我想如果你大概率看过,或者至少听过周志明老师的《深入理解Java虚拟机》。我前段时间在QCon大会听了周老师关于Java的一场分享,觉得收获特别大。下面再给你分享一些关键点。

5、Java 与其他语言竞争,底气从来不在于语法、类库有多么先进好用,而是来自它庞大的用户群和极其成熟的软件生态,这在朝夕之间难以撼动。然而,这个现在看起来仍然坚不可摧的 Java 帝国,其统治地位的稳固程度不仅没有高枕无忧,反而说是危机四伏也不为过。

6、举个例子,刚学Java的时候,咱们都听说过“一次编写,到处运行”这口号。20 多年前,Java 成熟之前,开发者如果希望程序在 Linux、Solaris、Windows 等不同平台,在 x86、AMD64、SPARC、MIPS、ARM 等不同指令集架构上都能正常运行,就必须针对每种组合,编译出对应的二进制发行包,或者索性直接分发源代码,由使用者在自己的平台上编译。Java当时发布就是想解决这个痛点问题的。

7、但现在,这些问题基本已经不存在了,Linux、x86一统天下,车同轮,书同文,甚至还有Docker这些的新技术加持。Java当年想解决的那个问题已经不再痛了,反而,它的一些特性甚至有些鸡肋。譬如,Java 总体上是面向大规模、长时间的服务端应用而设计的,严(luō)谨(suō)的语法利于约束所有人写出较一致的代码;静态类型动态链接的语言结构,利于多人协作开发,让软件触及更大规模;即时编译器、性能制导优化、垃圾收集子系统等 Java 最具代表性的技术特征,都是为了便于长时间运行的程序能享受到硬件规模发展的红利。

8、另一方面,在微服务的背景下,提倡服务围绕业务能力而非技术来构建应用,不再追求实现上的一致,一个系统由不同语言、不同技术框架所实现的服务来组成是完全合理的。服务化拆分后,很可能单个微服务不再需要再面对数十、数百 GB 乃至 TB 的内存。有了高可用的服务集群,也无须追求单个服务要 7×24 小时不可间断地运行,它们随时可以中断和更新。

9、基于 Java 虚拟机的执行机制,使得任何 Java 的程序都会有固定的基础内存开销,以及固定的启动时间,而且 Java 生态中广泛采用的依赖注入进一步将启动时间拉长,使得容器的冷启动时间很难缩短。虽然在云原生时代依然有很多适合 Java 发挥的领域,但是具备弹性与韧性、随时可以中断重启的微型服务的确已经形成了一股潮流,在逐步蚕食大型系统的领地。

10、正是由于潮流趋势的改变,新一代的语言与技术尤其重视轻量化和快速响应能力,大多又重新回归到了原生语言(Native Language,如 Golang、Rust)之上。

11、这是大的背景,我当时听到这里,茅塞顿开。因为之前我完全是限于到语法细节,从来没有站在这个高度和广度上理解语言的迭代和进化。那Java语言接下来会怎么发展?我们应该基于什么样的趋势去做未来的职业规划呢?

12、卖个关子也,10月10日(周日)晚上8点,我会连麦周志明老师,和他聊聊Java的昨天、现在和未来。周志明老师是国内Java语言方向的天花板了吧。

31aaf4e5a637df9a2948bcca923b8694.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值