开篇作者就提出,Java8所做的改变在许多方面比java历史上任何一次改变都深远。而且好消息是,这些改变会让你编辑程序来更容易,再也不用写类似类似于以前的swing中的事件处理函数的啰嗦代码了。
 
   关于多线程,作者也提到,从Java的演变路径来看,他一直致力于让并发编程更容易、出错更少。比如在Java1.0里面有线程和锁的概念,这是当时的最佳实践,但事实证明,不具备专门知识的项目团队,很难可靠地使用这些基本模型。然后在Java 5.0的时候就添加了工业级的构建模块,比如线程池和并发集合。然后到Java7的时候又添加了,分支合并(Fork/Join)框架,使得并行变得更实用,但仍然很困难。所以,到Java8的时候,对并行有了一个更简单的新思路,不过你仍要遵循一些规则。
 
第一节,java怎么还在变?
    Java在编程语言世界中曾经做的不错,但是编程语言生态系统的气候正在变化,程序员越来越多的需要处理所谓的大数据,并希望利用多核计算机和计算机集群来有效的处理,这意味着要使用并行处理,Java以前对此并不支持。所以Java8对程序员的主要好处在于它提供了更多的编程工具和概念,能以更快,更重要的是能以更为简洁、更易于维护的方式解决新的或是现有的编程问题。
   接下来作者介绍了在java8中新增的流处理的概念,这里使用了载有Unix系统中的流式命令作为例子。
   第3小节作者介绍了行为参数化的概念。就是可以把代码或者函数作为参数传递给另外一个方法。
   接下来作者提到了函数式编程范式的两个基石第一,没有共享的可变数据,第二,将方法和函数传递给其他方法的能力
 
第二节,java中的函数
   在基于JVM的Scala和Groovy等语言的实践已经证明,让方法的概念作为一等值可以扩充程序员的工具库,从而让编程变得更简单。在这里,作者给了一个简单的例子来比较用Java8之前 和 之后的代码实现一个隐藏文件筛选的例子来说明函数式编程的优势。
   然后又给了一个,从一堆苹果中筛选出,不同颜色或者不同重量的苹果的例子来说明Lambda和Stream的好处。然后这里就引出了流的内部迭代(这是相对于传统的外部迭代来说的)的概念。在这里,作者提到了集合与流的区别,集合主要是为了存储和访问数据,而流主要是用于描述对数据的计算
 
第四节,默认方法
   开篇作者就提到Java8中加入默认方法主要是为了支持库设计师,让他们能够写出更容易改进的接口。作者用给List接口添加排序方法来说明这个默认方法带来的好处。
   当然,其实我觉得Java8的这种默认方法的概念,可能会把接口搞得不伦不类的,因为在这样的话接口就包含业务逻辑了,那实际上就相当于C++的抽象类。如何避免C++中臭名昭著的多重继承的菱形继承问题呢?据说在第九章有谈到,那我们就拭目以待吧!

读书笔记,《Java8实战》第一章,为什么要关心 Java8的更多相关文章

  1. 学习笔记-[Maven实战]-第一章:Maven简介

    Maven简介: Maven 可翻译为:知识的积累,也可以翻译为"专家"或"内行". Maven 是一个跨平台的项目管理工具,是Apache组织中一个很成功的开 ...

  2. 读书笔记http之第一章

    http TCP/IP协议各层: 应用层 决定了向用户提供应用服务时通信的活动. 比如 : FTP(FileTransferProtocol,文件传输协议)和DNS(DomainNameSystem, ...

  3. Spring实战第一章学习笔记

    Spring实战第一章学习笔记 Java开发的简化 为了降低Java开发的复杂性,Spring采取了以下四种策略: 基于POJO的轻量级和最小侵入性编程: 通过依赖注入和面向接口实现松耦合: 基于切面 ...

  4. 《Android开发艺术探索》读书笔记 (3) 第3章 View的事件体系

    本节和<Android群英传>中的第五章Scroll分析有关系,建议先阅读该章的总结 第3章 View的事件体系 3.1 View基本知识 (1)view的层次结构:ViewGroup也是 ...

  5. SQL Server2012 T-SQL基础教程--读书笔记(8 - 10章)

    SQL Server2012 T-SQL基础教程--读书笔记(8 - 10章) 示例数据库:点我 CHAPTER 08 数据修改 8.1 插入数据 8.1.1 INSERT VALUES 语句 8.1 ...

  6. AngularJS in Action读书笔记6(实战篇)——bug hunting

    这一系列文章感觉写的不好,思维跨度很大,原本是由于与<Angularjs in action>有种相见恨晚而激发要写点读后感之类的文章,但是在翻译或是阐述的时候还是会心有余而力不足,零零总 ...

  7. 《Android开发艺术探索》读书笔记 (13) 第13章 综合技术、第14章 JNI和NDK编程、第15章 Android性能优化

    第13章 综合技术 13.1 使用CrashHandler来获取应用的Crash信息 (1)应用发生Crash在所难免,但是如何采集crash信息以供后续开发处理这类问题呢?利用Thread类的set ...

  8. [读书笔记]项目管理实战:Microsoft Project精髓与方法

    <项目管理实战:Microsoft Project精髓与方法>是Bonnie Biafore 写的一本书.Bonnie Biafore 作为项目管理师(PMP),她有20余年为大中小型客户 ...

  9. 《Android开发艺术探索》读书笔记 (9) 第9章 四大组件的工作过程

    第9章 四大组件的工作过程 9.1 四大组件的运行状态 (1)四大组件中只有BroadcastReceiver既可以在AndroidManifest文件中注册,也可以在代码中注册,其他三个组件都必须在 ...

  10. activiti实战--第一章--认识Activiti

    学习资料:<Activiti实战> 第一章 认识Activiti 内容概览:讲解activiti的特点.接口概览.架构等基本信息. 1.3 Activiti的特点 1.使用mybatis ...

随机推荐

  1. BEM

    BEM代表块(Block),元素(Element),修饰符(Modifier).BEM是由Yandex团队提出的一种CSS Class 命名方法,旨在更好的创建CSS/Sass模块.通过增加前缀的办法 ...

  2. 8.7 正睿暑期集训营 Day4

    目录 2018.8.7 正睿暑期集训营 Day4 A 世界杯(贪心) B 数组(线段树) C 淘汰赛 考试代码 A B C 2018.8.7 正睿暑期集训营 Day4 时间:5h(实际) 期望得分:. ...

  3. BZOJ3501 : PA2008 Cliquers Strike Back

    \[\begin{eqnarray*}ans&=&m^{\sum_{i=1}^n Stirling2(n,i)\bmod 999999598}\bmod 999999599\\& ...

  4. 2018-2019-20172329 《Java软件结构与数据结构》第五周学习总结

    2018-2019-20172329 <Java软件结构与数据结构>第五周学习总结 教材学习内容总结 <Java软件结构与数据结构>第九章-排序与查找 一.查找 1.查找概念简 ...

  5. [Java]类的生命周期(下)类的初始化[转]

    上接深入java虚拟机——深入java虚拟机(二)——类加载器详解(上),在上一篇文章中,我们讲解了类的生命周期的加载和连接,这一篇我们接着上面往下看. 类的初始化:在类的生命周期执行完加载和连接之后 ...

  6. java之ibatis数据缓存

    使用IBatis作数据缓存 1.SqlMapConfig.xml中<settingscacheModelsEnabled="true" //设置为trueenhancemen ...

  7. linux脚本启动停止一个jar

    ###########################启动########################### #!/bin/sh ####定义一个函数在当前文件夹下读取所有jar文件 functi ...

  8. [Go] 如何正确地 抛出 错误 和 异常(error/panic/recover)?

    序言 错误 和 异常 是两个不同的概念,非常容易混淆.很多程序员习惯将一切非正常情况都看做错误,而不区分错误和异常,即使程序中可能有异常抛出,也将异常及时捕获并转换成错误.从表面上看,一切皆错误的思路 ...

  9. Linux声卡驱动框图

    1.声卡驱动注册完成后的框图 2.open & hw_params 完.

  10. AngularJS动态设置CSS

    使用AngularJS动态设置CSS大致有2种思路: 1.通过动态设置class名称 比如先定义2个样式: .show-true{    display:block;} .show-flase{    ...