关注 ▲程序员小跃▲ 和优秀的你,一起奔跑
这是程序员小跃的第 149 篇原创分享
作者 l 程序员小跃
来源 l 程序员小跃(ID:runningdimple)
今天开始,跃哥将和去年阅读《Head First 设计模式》差不多的模式来,和大家一起学习《Java 实战》的内容。通过前一本书,那本书跃哥二刷,所以读完之后对设计模式又有了深刻的理解,以至于后续学习极客时间上的设计模式专栏,压力就没那么大了。
所以这次我又通过《Java 实战》来对 Java8 之后的特性进行学习,将是一件很棒的事情。为什么我们要学习 Java8,因为 Java8 版本新增了很多特性,将 8 之前和 8之后有了一个分水岭,学习了这些新特性,我们写代码的效率会更好,软件运行的效率也会更高,升职加薪嘛,那也是必然的。
首先,跃哥问大家一个问题,你的第一个 Java 版本是什么呢?
跃哥自己先说。我是在大二的时候接触的 Java,我的第一个版本是 Java 6。因为我在此之前入门过 C、C++,有了面向过程和面向对象的基础,所以初次学习 Java 语言的时候,并没有想象中那么难。其实也是因为吃过 C、C++苦,一看到 Java 就兴奋了。
但是,Java 也有不同的地方,学校里的 Java 入门是从零开始,其实现在很多书籍也是如此,从下载 JDK 到配置安装环境,然后使用txt 文本新建我人生中的第一个 Java 文件,并且用 javac 命令编译,运行,整个过程现在说起来容易,第一次还是有点懵逼。
那么,你的第一个 Java 版本是什么呢?如果是 Java8 之前的,那你学习本书的时候,需要转变很多思想,因为 Java8 使用起来很方便;如果你用的是 Java 8 之后的,比如 Java 11(跃哥这次特意安装了 11,来跟上脚步,11 是最新的长支持版本),那你对这本书的内容并不会陌生,因为你初学的时候,就自带了这些语法,你是在复习。
但是这次跃哥并不考虑使用记事本,用命令行来编译 Java,毕竟咱们很多都已经入门了 Java,我们这次使用 IDEA 来完成一系列操作,谁让 IDEA 这么香啊,哈哈。《终于,我也到了和Eclipse说再见的时候,难说再见》
今年是 Java 的 25 周年,自从 Java 问世以来,就受到了学生、项目经理和程序员等一大批活跃用户的欢迎。这一语言极富活力,不断被用在大大小小的项目里。尤其是现在大数据,高并发,数据中台等的影响下,Java 微服务领域更是火爆。
我们也知道,Java 现在是每半年更新一个版本,它通过增加新功能,得到良好的升级。其实 Java8 在 2014 年 3 月就发布了,但是现在还有很多小伙伴用的是老式的语法来实现功能,没有发挥出巨大的威力。
举个例子,我们需要对一个苹果列表进行排序,按重量排序。用老式的语法,你可能会写出如下代码:
Collections.sort(inventory, new Comparator() {
public int compare(Apple a1, Apple a2) {
return a1.getWeight().compareTo(a2.getWeight());
}
)
但是,通过Java 8,你可以编写更简洁的代码,实现更高的效率。如下:
inventory.sort(comparing(Apple::getWeight));
哈哈,你没看错,就是这么简单,就完成了排序,从 3 行代码缩减到了 1 行代码,香不香。
Java 8 对硬件也有影响:现在我们用的 CPU 都是多核的,在 Java8 之前我们必须利用线程才能很好地利用多核 CPU 的性能;否则程序就是在单核上使用,白白浪费了多核的性能。
但是 Java8 之后,对并行有了一个更简单的思路,发挥了更大的威力。简答描述就是,我们能用更简洁的代码,且更简单地使用了多核处理器。跃哥先来一个总结,后续会在我们的学习中逐步使用了解他的精髓,我们主要用到 Java8 的Stream API、向方法传递代码的技巧、接口中的默认方法*,这些都能简化我们的代码,有很好利用电脑的性能,想想都兴奋。
跃哥在这里又问大家一个问题,你知道现在的编程语言有多少吗?除了大家熟知的 C、C++、Java、Python、C#、PHP、Swift、Kotlin......我们熟知的 TIOBE 编程语言排行榜里就有 N 种。在 1966 年当时著名的计算机科学家彼得·兰丁在一篇标志性论文中写道,当时已经有 700 种编程语言了,恐怖吧。
所以,编程语言要在这么多竞争中脱颖而出,其实是很难的一件事情。编程语言也是一个生态,新的语言出现,旧语言就会被取代,除非后者演变地很快,能跟上时代发展的节奏。Java 就具备了这种特性,在过去的20几年里,Java 成功地霸占了编程生态系统中的一大块,同时替代了竞争对手语言,身为一名 Javaer,还是挺骄傲,挺自豪的。
Java 因为“一次编写,随处运行”模式,以及早期浏览器安全地执行 Java 小应用的能力让它占领了大学市场,毕业生随后把它带进了业界。后来机器变得越来越快,程序员的时间变得越来越宝贵,所以 Java 的面向对象模型发挥了重要的作用,被各种使用。
跃哥之前学习 Java,是 Android 开发的需要,现在 Android 是全球使用相当广泛的手机操作系统,编写 Android App 大有人在,有很大一部分也是使用的 Java;还有数据请求越来越多,数据中台,微服务的出现,让 Java 在这方面有了很大的发展;以及一些良好的 Java 社群支持,所以 Java 成为了使用广泛的语言。
这些还不够,Java8 的出现,最要的好处在于它提供了更多的编程工具概念,能以更快、更简洁、更易于维护的方式解决新的或现有的编程问题。这也是我学习 Java 实战,学习新特性的原因。因为这些新特性,能让你有更足的底气,编写更好的程序,哈哈。
讲了这么多,其实还是想对在 Java 编程路上行走的同学们说一声:赶紧掌握Java 8 之后的一些特性。从文中举例的排序,就能看出 Java8 对代码行数的减少,对效率的提升。
还有,提到的 Stream API、Lambda 表达式、函数式编程这些能让多核的CPU 发挥出更大的威力,处理更多的数据,让效率提升成为可能。
而且,Java 社区现在频繁更新,最新的已经到了 Java 14,只为适应社会的进步,时代的发展,如果你还不会 Java8 的新特性,你觉得你对得起自己是一位 Javaer 么。
来吧,和跃哥一起学习 Java 新特性,一起在Java 的路上走得更远。
跃哥一直都有视频号的,后续视频号里也会同步一些学习的心得,欢迎大家一起来看看,提提意见。
作者:程序员小跃,前华为 Android 开发,现游戏公司 Java 架构,奔跑中的技术人!
0、六月我在工作中蜕变,勤奋小人打架终于赢了
觉得不错点“在看”!