标签:
第一部分:用Java7做开发
第一章:初识java7
1.1语言与平台《Java语言规范(JLP)》《JVM规范(VMSpec)》
1.2Coin项目:浓缩的都是精华
修改过程:1.更新JLS
2.在源码编译器中实现一个原型
3.为修改增加必要的类库支持
4.编写测试和用例
5.更新文档
如果修改触及VM或者平台,则还需要
1.更新VMSpec
2.实现VM的修改
3.在类文件和VM工具中增加支持
4.考虑对反射的影响
5.考虑对序列化的影响
6.想一想对本地组件的影响,比如Java本地接口(JNI)
注:修改类型系统是很危险的自寻思路
1.3Coin项目的修改
1.3.1 switch 中的String支持
java6之前switch支持byte、char、short和int及枚举常量,
java7之后增加对String支持
1.3.2更强的数值文本表示法
1.数值常量(如基本类型中的integer)可以用二进制表示
2.在整型常量中可以使用下划线来提高可读性
对于系统底层程序员好,尤其处理原始网络协议、加密、处理比特的程序员
java6之前处理二进制:int x=Integer.parseInt("1100110",2);
java7 int x=1100110;
数字太长,容易眼花,参考Ruby,增加下划线
如 int x=1000_000_000 编译后会去掉"_"
1.3.3改善后的异常处理
支持多个异常一起处理java7:catch(IOException|NullPointerException|FileNotFoundException e){}
异常抛出java7:catch(final IOException e){throw e;}
1.3.4try-with-resources(TWR)
注:这个修改通过编译器实现
try(FileInputStream fin=new FileInputStream("someFile.bin");
ObjectInputStream in=new ObjectInputStream(fin)){//...}
此处不用手动关闭资源,所有资源类都实现了AutoClose(),也就是说所有类都受到修改!建议在资源相关类使用!
1.3.5砖石语法
java6:Map<Integer,Map<String,String>> user=new HashMap<Integer,Map<String,String>>();
java7:Map<Integer,Map<String,String>> user=new HashMap();
编译器级别修改!
1.3.6部分可能修改类型的警告转移到API提供者而不是API使用者@SafeVarargs
第二章:新I/O
标签:
原文地址:http://my.oschina.net/686991/blog/508905