开篇作者就提出,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. android 自定义view android onmeasure onlayot ondraw

    韩梦飞沙  韩亚飞  313134555@qq.com  yue31313  han_meng_fei_sha android onmeasure onlayot ondraw 顺序 ====== 1 ...

  2. C/C++ 和 PHP 技术经典图书,学习视频资料总结

    技术经典图书 1.<计算机科学导论> 作者:(美)佛罗赞,(美)莫沙拉夫著,刘艺等译(强推) 涵盖了大部分计算机课程的内容,但都是简介,是最基础的知识,非常适合计算机初学者看,强烈建议把课 ...

  3. 【转载】Android dip,px,pt,sp 的区别

     dip: device independent pixels(设备独立像素). 不同设备有不同的显示效果,这个和设备硬件有关,一般我们为了支持WVGA.HVGA和QVGA 推荐使用这个,不依赖像素. ...

  4. Visual Studio新的 .csporj 文件

    Visual Studio新的 .csporj 文件非常方便,虽然目前还不支持WPF.WinForm等工程,但应用到控制台程序,类库还是没有任何问题的.只需要简单的用如下内容替换老的csproj即可: ...

  5. LPC-LINK 2 LPC4370 简化线路图

  6. SQL Server DATEDIFF() 函数(SQL计算时间差)

    select  *   from   task_list  where 1=1 and    datediff(dd,carateTime,getdate()) =0      定义和用法 DATED ...

  7. Task Parallel Library02,更进一步

    在前一篇中,了解了Task的基本用法 如果一个方法返回Task,Task<T>,如何获取Task的返回值,获取值的过程会阻塞线程吗? static void Main(string[] a ...

  8. lufylegend:Lbuttion等UI组件

    1,矩形按钮LButtonSample1 首先来看看LButtonSample1按钮的绘制. 在lufylegend.js引擎中可以利用LButton类来添加一个按钮,但是你需要传入按钮弹起和按钮按下 ...

  9. spring集成jpa【为什么有 persistant.xml 文件呢?】

    原文地址: http://www.cnblogs.com/javahuang/archive/2012/12/19/2824633.html spring集成JPA的其中一种方式 JPA和hibern ...

  10. Android 关于“NetworkOnMainThreadException”出错提示的原因及解决办法

    几乎每天都在论坛里面看到有网友问这个问题,代码是无误的,在低版本的API上都可以运行的,但在3.0以上的版本就会出现NetworkOnMainThreadException 出现android.os. ...