Java 8版本最大的改进就是Lambda表达式,其目的是使Java更易于为多核处理器编写代码;其次,新加入的Nashorn引擎也使得Java程序可以和JavaScript代码互操作;再者,新的日期时间API、GC改进、并发改进也相当令人期待。现在开始要灌输一些概念性的东西了,这能帮助你理解lambda更加透彻一点,如果你之前听说过,也可当是温习,所谓温故而知新……

头条推荐

Java 8 正式发布,新特性全搜罗

相信大家对lambda 表达式都有一定的理解了,但只是代码简洁了这个好处的话,并不能打动很多观众,java 8也不会这么令人期待,其实java 8引入lambda迫切需求是因为lambda 表达式能简化集合上数据的多线程或者多核的处理,提供更快的集合处理速度 ,这个后续会讲到,关于JEP126的这一特性,将分3部分,之所以分开,是因为这一特性可写的东西太多了,这部分让读者…………>>详细

Java 8特性探究(1):通往lambda之路_语法篇

现在开始要灌输一些概念性的东西了,这能帮助你理解lambda更加透彻一点,如果你之前听说过,也可当是温习,所谓温故而知新......

在开始之前,可以同步下载jdk 8 和  IDE,IDE根据个人习惯了,不过eclipse官方版本还没出来,所以目前看的话,netbean7.4是首选的,毕竟前段子刚刚出的正式版本,以下是他们的下载地址。

函数式接口

函数式接口(functional interface 也叫功能性接口,其实是同一个东西)。简单来说,函数式接口是只包含一个方法的接口。比如Java标准库中的java.lang.Runnable和 java.util.Comparator都是典型的函数式接口。java 8提供 @FunctionalInterface作为注解,这个注解是非必须的,只要接口符合函数式接口的标准(即只包含一个方法的接口),虚拟机会自动判断, 但 最好在接口上使用注解@FunctionalInterface进行声明,以免团队的其他人员错误地往接口中添加新的方法。

阅读全文

Java 8特性探究(2):深入解析默认方法

上篇讲了lambda表达式的语法,但只是 JEP126 特性的一部分,另一部分就是默认方法(也称为虚拟扩展方法或防护方法)

什么是默认方法,为什么要有默认方法

简单说,就是接口可以有实现方法,而且不需要实现类去实现其方法。只需在方法名前面加个default关键字即可。

为什么要有这个特性?首先,之前的接口是个双刃剑,好处是面向抽象而不是面向具体编程,缺陷是,当需要修改接口时候,需要修改全部实现该接口的类,目前的 java 8之前的集合框架没有foreach方法,通常能想到的解决办法是在JDK里给相关的接口添加新的方法及实现。然而,对于已经发布的版本,是没法在给接口 添加新方法的同时不影响已有的实现。所以引进的默认方法。他们的目的是为了使接口没有引入与现有的实现不兼容发展。

简单的例子

阅读全文

Java 8新特性探究(3):解开lambda最强作用的神秘面纱

 

我们期待了很久lambda为java带来闭包的概念,但是如果我们不在集合中使用它的话,就损失了很大价值。现有接口迁移成为lambda风格的问题已经通过default methods解决了,在这篇文章将深入解析Java集合里面的批量数据操作(bulk operation),解开lambda最强作用的神秘面纱。

1.关于JSR335

JSR是Java Specification Requests的缩写,意思是Java 规范请求,Java 8 版本的主要改进是 Lambda 项目(JSR 335),其目的是使 Java 更易于为多核处理器编写代码。JSR 335=lambda表达式+接口改进(默认方法)+批量数据操作。加上前面两篇,我们已是完整的学习了JSR335的相关内容了。

阅读全文

Java 8新特性探究(4):类型注解 复杂还是便捷

注解大家都知道,从java5开始加入这一特性,发展到现在已然是遍地开花,在很多框架中得到了广泛的使用,用来简化程序中的配置。那充满争议的类型注解究竟是什么?复杂还是便捷?

什么是类型注解

在java 8之前,注解只能是在声明的地方所使用,比如类,方法,属性;java 8里面,注解可以应用在任何地方,比如:

  • 创建类实例

new @Interned MyObject();

阅读全文

Java 8新特性探究(5):重复注解

 什么是重复注解

允许在同一申明类型(类,属性,或方法)的多次使用同一个注解

一个简单的例子

java 8之前也有重复使用注解的解决方案,但可读性不是很好,比如下面的代码:

  1. public @interface Authority {  
  2.      String role();  
  3. }  
  4.  
  5. public @interface Authorities {  
  6.     Authority[] value();  
  7. }  
  8.  
  9. public class RepeatAnnotationUseOldVersion {  
  10.       
  11.     @Authorities({@Authority(role="Admin"),@Authority(role="Manager")})  
  12.     public void doSomeThing(){  
  13.     }  
  14. }  

 

由另一个注解来存储重复注解,在使用时候,用存储注解Authorities来扩展重复注解,我们再来看看java 8里面的做法:

阅读全文

Java 8新特性探究(6):泛型的目标类型推断

 

简单理解泛型

泛型是Java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。通俗点将就是“类型的变量”。这种类型变量可以用在类、接口和方法的创建中。

理解Java泛型最简单的方法是把它看成一种便捷语法,能节省你某些Java类型转换(casting)上的操作:

  1. List<Apple> box = new ArrayList<Apple>();box.add(new Apple());Apple apple =box.get(0);   

上面的代码自身已表达的很清楚:box是一个装有Apple对象的List。get方法返回一个Apple对象实例,这个过程不需要进行类型转换。没有泛型,上面的代码需要写成这样:

  1. Apple apple = (Apple)box.get(0); 

泛型的尴尬

泛型的最大优点是提供了程序的类型安全同时可以向后兼容,但也有尴尬的地方,就是每次定义时都要写明泛型的类型,这样显示指定不仅感觉有些冗长,最主要是很多程序员不熟悉泛型,因此很多时候不能够给出正确的类型参数,现在通过编译器自动推断泛型的参数类型,能够减少这样的情况,并提高代码可读性。

阅读全文

Java 8新特性探究(7):深入解析日期和时间-JSR310

 

博客一个月没更新了,这次给大家讲下java8时间与日期API。

众所周知,日期是商业逻辑计算一个关键的部分,任何企业应用程序都需要处理时间问题。应用程序需要知道当前的时间点和下一个时间点,有时它们还必须计算这两个时间点之间的路径。但java之前的日期做法太令人恶心了,我们先来吐槽一下

吐槽java.util.Date跟Calendar

Tiago Fernandez做过一次投票,选举最烂的JAVA API,排第一的EJB2.X,第二的就是日期API。

阅读全文

Java 8新特性探究(8):精简的JRE详解

Oracle公司如期发布了Java 8正式版!没有让广大javaer失望。对于一个人来说,18岁是人生的转折点,从稚嫩走向成熟,法律意味着你是完全民事行为能力人,不再收益于未成年人保护法,到今年为止,java也走过了18年,java8是一个新的里程碑,带来了前所未有的诸多特性,lambda表达式,Stream API,新的Date time api,多核并发支持,重大安全问题改进等,相信java会越来越好,丰富的类库以及庞大的开源生态环境是其他语言所不具备的,说起丰富的类库,很多同学就吐槽了,java该减肥了,确实是该减肥,java8有个很好的特性,即JEP161(http://openjdk.java.net/jeps/161 ),该特性定义了Java SE平台规范的一些子集,使java应用程序不需要整个JRE平台即可部署和运行在小型设备上。开发人员可以基于目标硬件的可用资源选择一个合适的JRE运行环境。

好处

1.更小的Java环境需要更少的计算资源。

2.一个较小的运行时环境可以更好的优化性能和启动时间。

3.消除未使用的代码从安全的角度总是好的。

阅读全文

Java 8新特性探究(9):跟OOM:Permgen说再见吧

 

很多开发者都在其系统中见过“java.lang.OutOfMemoryError: PermGen space”这一问题。这往往是由类加载器相关的内存泄漏以及新类加载器的创建导致的,通常出现于代码热部署时。相对于正式产品,该问题在开发机上出现的频率更高,在产品中最常见的“问题”是默认值太低了。常用的解决方法是将其设置为256MB或更高。

PermGen space简单介绍

PermGen space的全称是Permanent Generation space,是指内存的永久保存区域,说说为什么会内存益出:这一部分用于存放Class和Meta的信息,Class在被 Load的时候被放入PermGen space区域,它和和存放Instance的Heap区域不同,所以如果你的APP会LOAD很多CLASS的话,就很可能出现PermGen space错误。这种错误常见在web服务器对JSP进行pre compile的时候。

JVM 种类有很多,比如 Oralce-Sun Hotspot, Oralce JRockit, IBM J9, Taobao JVM(淘宝好样的!)等等。当然武林盟主是Hotspot了,这个毫无争议。需要注意的是,PermGen space是Oracle-Sun Hotspot才有,JRockit以及J9是没有这个区域。

阅读全文

更多Java8内容

Java 8发出提示 可能将不再
今天安装Java JDK 8 108版时安装程序弹出提示,大意是 Java 8 需要更新版本…
Java 8是否还需要LINQ?还是
LINQ一直是.net程序系统中的一个非常棒的东东. Visual Studio 2008 已经引…
甲骨文限制Java 9对Java 8的
就在开发人员们准备由Java开发工具包(简称JDK)8向JDK 9迈进之际,甲骨文…
Java 8最终发布日期敲定,有
Oracle 公司计划于 2014 年 3 月 18 日发布 Java 8,这一日期已经敲定,即…
IntelliJ IDEA 13.1 RC2 完
IntelliJ IDEA 13.1 RC2 发布了,完成了最终对 Java 8 的支持改进。你应该…
Java并没没落:最新Java 8简
欢迎阅读我编写的Java 8介绍。本教程将带领你一步一步地认识这门语言的新特…
Java 8 Nashorn 脚本引擎
java8 终于来了.函数式接口,lambda表达式期待很久了.新的武器在手,应该可以…
Java 8 彻底改变数据库访问
Java 8终于到来了! 经过几年的等待, java程序员终于能在java中得到函数式编…
Java 8 的默认方法和多重继
在我通读文档,并写下一些示例程序来确保自己对这些新的特性有一个良好的理…

更多热点推荐

编程学习好去处:35 个快速
学习编码和设计时最大的问题在于,它从来不是一件简单的事,它需要投入很多…
2014年四大热门语言的最佳实
在过去的一两年里编程领域迎来了翻天覆地的变化,如果说C,JAVA这些在过去…
IT人的自我导向型学习:学习
每个人都想成为架构师、CTO,但是你的工作要求、周围环境、领导者等都有可…
Node.js真的无所不能?那些
其实到今天为止,很少有哪些大的互联网公司是和 Node.js 无关的。LinkedIn…
腾讯程序员一年写3亿行代码
据图表显示,腾讯程序员在2013年共写了约3亿行代码,同比去年增长30%。其中…
【特别推荐】12款最佳的网站
下面向大家推荐12款精心挑选的网站加载速度和性能测试工具,帮助快速,全面…
程序员在囧途之招聘历险记
本文是51CTO博客作者shenyisyn的文章,以下内容来自于民间程序员HR的个人访…
老程序员的下场 程序员老了
50多岁时你的职业仕途会成为一个问题。如果你有很好的技术,有人雇你,你会…
坐在马桶上看算法:快速排序
算法的精髓在于,跟它一比高数也显得那么生动活泼…。本文由啊哈磊吐槽而成…
开发者如何快速开启 Python
有人会问python能干什么?毫不客气地说,Python是什么都能干。C受限于较为…
C#开发微信公众平台-就这么
最近公司在做微信开发,其实就是接口开发,网上找了很多资料,当然园友也写…
独家编译:细数十大最热门的
在决定该具体采用哪一款JavaScript框架时,业界主导方向是其中颇具决定性的…
一个7岁女孩能告诉你的关于
准备好了吗——一个7岁女孩将要让你自叹不如。…

投    票

您最看好Java 8哪个新特性
Lambda表达式
Nashorn引擎
新的日期时间API,GC改进、并发
模块化的准备
简洁的配置文件
泛型接口改进
引入函数式接口
Streams编程

专题推荐

美国旧金山时间3月31日,在红木城Oracle公司总部,Oracle公司总裁Mark Hurd与中国媒体51CTO.com等进行了45
2014甲骨文总部之旅 51CTO高
美国旧金山时间3月31日,在红木城Oracle公司总部,Oracle公司总裁Mark Hurd与中...
这是一本介绍如何使用HTML5和JavaScript进行Android游戏开发的书。它将指导您从一个空白HTML页面开始直到完
Android Web Game App高级编
这是一本介绍如何使用HTML5和JavaScript进行Android游戏开发的书。它将指导您从...
从2006年12月份Sun发布Java 6后,经过五年多的不懈努力在2011年7月底发布了Java 7正式版!这也是Sun被Oracl
这次终于不跳票 Java8正式版
从2006年12月份Sun发布Java 6后,经过五年多的不懈努力在2011年7月底发布了Java...
借助Google的三大论文,Hadoop打开了低成本海量数据处理之门;同时,借助了开源运动,Hadoop生态圈得以迅速
大象腾飞:Hadoop开源工具盘
借助Google的三大论文,Hadoop打开了低成本海量数据处理之门;同时,借助了开源...

一周排行

留言评论