苹果|读Java实战(第二版)笔记01_Java的变化

苹果|读Java实战(第二版)笔记01_Java的变化

文章图片

苹果|读Java实战(第二版)笔记01_Java的变化


读Java实战(第二版)笔记01_Java的变化
1. 语言的演变1.1. C和C++仍然是构建操作系统和各种嵌入式系统的流行工具1.2. Java和C#等安全型语言在诸多运行资源不太紧张的应用中已经取代了C和C++1.3. Java可能会被同样运行在JVM上的竞争对手语言(如Scala或Groovy)取代1.4. Ada、Algol、COBOL、Pascal、Delphi、SNOBOL没落1.4.1. COBOL一度是最重要的商用语言之一2. Java的演进路径2.1. Java 8于2014年3月2.1.1. 比Java历史上任何一次改变都深远2.1.2. 长支持(LTS)2.2. Java 9于2017年9月2.2.1. 效率提升方面的重要改进2.2.2. 反应式编程支持2.2.2.1. RxJava2.2.2.2. Akka2.2.2.3. 构建高并发系统的标准方式2.3. Java 10于2018年3月2.3.1. 对类型推断做了微调2.4. Java 11于2018年9月2.4.1. 异步HTTP客户端库2.4.2. 长支持(LTS)2.5. 12 2019 年 3 月2.5.1. switch语句增强;数字转字符串NumberFormat;G1收集器的优化2.6. 13 2019 年 9 月2.6.1. switch优化更新;文本块升级;增加ZGC以将未使用的堆内存返回给操作系统2.7. 14 2020 年 3 月2.7.1. instanceof模式匹配;提出Records类;空指针异常的地方变得更具体;移除CMS垃圾收集器2.8. 15 2020 年 9 月2.8.1. 密封类;隐藏类;ZGC 成为正式的垃圾收集器2.9. 16 2021 年 3 月2.9.1. 内存管理提升;新的打包工具;UNIX-Domain Socket channels;Value-based Classes的警告;提供了 C++ 14语言特性2.10. 17 2021 年 9 月2.10.1. 恢复始终严格的浮点语义;增强型伪随机数发生器;弃用即将删除的Applet API2.10.2. 长支持(LTS)2.11. 18 2022 年 3 月2.11.1. 指定 UTF-8 作为标准 Java API 的默认字符集;引入一个简单的 Web 服务器;支持在 Java API 文档中加入代码片段2.12. 19 2022 年 9 月2.12.1. 结构化并发2.12.2. Record模式2.12.3. 外部函数和内存 API2.12.4. 虚拟线程2.12.5. switch 表达式和语句的模式匹配2.13. 从Java的演进路径来看 , 它一直致力于让并发编程更容易、出错更少3. Java8解决了两个迫切需求3.1. 编写更简洁的代码3.1.1. Stream API3.1.1.1. 由Stream库来选择底层最佳执行机制3.1.1.2. 避免用synchronized编写代码3.1.2. 向方法传递代码的技巧3.1.3. 接口的默认方法3.2. 更方便地利用处理器的多核4. 流处理4.1. 流是一系列数据项 , 一次只生成一项4.2. 程序可以从输入流中一个一个读取数据项 , 然后以同样的方式将数据项写入输出流5. 函数式编程范式的基石5.1. 没有共享的可变数据5.1.1. 一个方法可以通过它将参数值转换为结果的方式来完整描述5.1.2. 就像一个数学函数 , 没有可见的副作用5.1.3. 所写的代码不能访问共享的可变数据来完成它的工作5.1.4. “纯函数”“无副作用函数”或“无状态函数”5.2. 将方法和函数(即代码)传递给其他方法的能力5.2.1. 用行为参数化把代码传递给方法6. 命令式编程范式6.1. 写的程序则是一系列改变状态的指令7. 默认方法7.1. 默认方法只是推进程序演进的一种技术 , 并不会直接帮助你实现某个特性7.2. 接口可以包含实现类没有提供实现的方法签名了7.3. 给接口设计者提供了一种扩充接口的方式 , 而不会破坏现有的代码7.4. 使用default关键字来表示8. 方法和Lambda作为一等值8.1. 方法引用8.2. Lambda8.2.1. 匿名函数8.2.2. 长度多于几行的话 , 还是应该用方法引用来指向一个有描述性名称的方法 , 而不是使用匿名的Lambda8.3. 以代码的清晰度为准绳9. 谓词(predicate)9.1. 在数学上常常用来代表类似于函数的东西 , 它接受一个参数值 , 并返回true或false9.2. Function<TBoolean>9.3. Predicate