开篇作者就提出,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. 面向对象设计原则 单一职责原则(Single responsibility principle)

    单一职责原则(SRP:Single responsibility principle) 又称单一功能原则,面向对象的基本原则之一.它规定 一个类应该只有一个发生变化的原因. 该原则由罗伯特·C·马丁( ...

  2. BZOJ3500 : PA2008 Cliquers

    设g[i]表示n=i时的答案,则OEIS上可以找到如下递推式: g[i]=g[i-1]+g[i-2]-g[i-5]-g[i-7]+... 其中符号为++--交替,第i项为f[i],f[1]=1,f[2 ...

  3. Linux学习笔记05—文件与目录权限

    1. 绝对路径与相对路径绝对路径:路径的写法一定由根目录 ‘/’写起,例如 /usr/local/mysql 这就是绝对路径相对路径:路径的写法不是由根目录 ‘/’写起,例如:首先用户进入到/, 然后 ...

  4. Windows访问Linux的Ext4格式分区

    Ext2Fsd是Windows下一套很实用的Driver,虽然名称是ext2fsd但ext3/ext4都可读取,安装完成后电脑便可直接认得ext格式扇区 虽然官方介绍只能支持到Windows 8,但实 ...

  5. [原创]浅谈H5页面性能测试

    [原创]浅谈H5页面性能测试 H5页面我想各位都不陌生,随着移动互联网兴起,不管是App,还是H5都火起来了,最突出的2个表现是ios/android/前端等工程师薪水大涨,尤其是资深前端工程师40W ...

  6. WebClient 通过get和post请求api

    //get 请求        string url = string.Format("http://localhost:28450/api/values?str1=a&str2=b ...

  7. MTK65XX平台充电调试总结

    MTK平台充电调试总结 摘要:调试电池的充放电管理,首先须要深入了解锂电池的电池原理和特点.充放电特性以及主要的电池安全问题.然后须要对MTK的电池管理驱动程序有深入的了解.理解电池充放电算法的基本原 ...

  8. Revit API注册事件

    start using Autodesk.Revit.DB.Events; //http://revit.haotui.com [Autodesk.Revit.Attributes.Transacti ...

  9. VB.NET中Module的概念

    今天学习VB.NET,发现VB.NET里面有一个Module的东西,如下图(图-1)所示: 图-1 上网查了一下VB.NET里面的Module,才发现这是学习VB.NET遇到的第一个典型的问题就是:为 ...

  10. EBS 系统当前完成请求时间监测

    /* Formatted on 2018/3/14 23:32:17 (QP5 v5.256.13226.35538) */ SELECT REQUEST_ID , PROGRAM , ROUND ( ...