Java jdk1.7 新特性(jdk1.5到jdk1.8的新特性系列)

JAVA herman 1135浏览 0评论
公告:“业余草”微信公众号提供免费CSDN下载服务(只下Java资源),关注业余草微信公众号,添加作者微信:xttblog,发送下载链接帮助你免费下载!
本博客日IP超过1800,PV 2600 左右,急需赞助商。
极客时间所有课程通过我的二维码购买后返现24元微信红包,请加博主新的微信号:xttblog,之前的微信号好友位已满,备注:返现
所有面试题(java、前端、数据库、springboot等)一网打尽,请关注文末小程序
视频教程免费领

接着上一章 《jdk1.6的新特性》,本章我们进行 jdk.17的新特性。

首先是模块化特性:现在的 Java7也是采用了模块的划分方式来提速,一些不是必须的模块并没有下载和安装,因此在使用全新的Java7的虚拟机的时候会发现真的很快,当虚拟机需要用到某些功能的时候,再下载和启用相应的模块,这样使得最初需要下载的虚拟机大小得到了有效的控制。同时对启动速度也有了很大的改善。如果你对 OpenJDK的架构比较熟悉,你甚至可以定制JDK的模块。
 
其次是多语言支持:这里的多语言不是指中文英文之类的语言,而是说Java7的虚拟机对多种动态程序语言增加了支持,比如:Rubby、 Python等等。对这些动态语言的支持极大地扩展了Java虚拟机的能力。对于那些熟悉这些动态语言的程序员而言,在使用Java虚拟机的过程中同样可以使用它们熟悉的语言进行功能的编写,而这些语言是跑在功能强大的JVM之上的。
 
再有是开发者的开发效率得到了改善:Java7通过多种特性来增强开发效率。比如对语言本身做了一些细小的改变来简化程序的编写,在多线程并发与控制方面:轻量级的分离与合并框架,一个支持并发访问的HashMap等等。通过注解增强程序的静态检查。提供了一些新的API用于文件系统的访问、异步的输入输出操作、Socket通道的配置与绑定、多点数据包的传送等等。
 
最后是执行效率的提高,也是给人感觉最真切体验的特性:压缩了64位的对象指针,Java7通过对对象指针由64位压缩到与32位指针相匹配的技术使得内存和内存带块的消耗得到了很大的降低因而提高了执行效率。此外还提供了新的垃圾回收机制(G1)来降低垃圾回收的负载和增强垃圾回收的效果。G1垃圾回收机制拥有更低的暂停率和更好的可预测性。

jdk1.7新特性

  1. 对集合类的语言支持; 
  2. 自动资源管理; 
  3. 改进的通用实例创建类型推断; 
  4. 数字字面量下划线支持; 
  5. switch中使用string; 
  6. 二进制字面量; 
  7. 简化可变参数方法调用;
  8. 新增一些取环境信息的工具方法;
  9. Boolean类型反转,空指针安全,参与位运算;
  10. 两个char间的equals;
  11. 安全的加减乘除;
  12. map集合支持并发请求 ,且可以写成 Map map = {name:"xxx",age:18};

switch中使用字串

String s = "test";   
switch (s) {   
case "test" :   
     System.out.println("test"); 
case "test1" :   
    System.out.println("test1"); 
    break ;   
default :   
    System.out.println("break"); 
    break ;   
}

泛型实例化类型自动推断

运用List<String> tempList = new ArrayList<>(); 

集合像数组一样赋值

语法上支持集合,而不一定是数组

final List<Integer> piDigits = [ 1,2,3,4,5,8 ];

新增一些取环境信息的工具方法

File System.getJavaIoTempDir() // IO临时文件夹
File System.getJavaHomeDir() // JRE的安装目录
File System.getUserHomeDir() // 当前用户目录
File System.getUserDir() // 启动java进程时所在的目录

Boolean类型反转,空指针安全,参与位运算

Boolean Booleans.negate(Boolean booleanObj)
True => False , False => True, Null => Null
boolean Booleans.and(boolean[] array)
boolean Booleans.or(boolean[] array)
boolean Booleans.xor(boolean[] array)
boolean Booleans.and(Boolean[] array)
boolean Booleans.or(Boolean[] array)
boolean Booleans.xor(Boolean[] array)

两个char间的equals

boolean Character.equalsIgnoreCase(char ch1, char ch2);

安全的加减乘除

int Math.safeToInt(long value)
int Math.safeNegate(int value)
long Math.safeSubtract(long value1, int value2)
long Math.safeSubtract(long value1, long value2)
int Math.safeMultiply(int value1, int value2)
long Math.safeMultiply(long value1, int value2)
long Math.safeMultiply(long value1, long value2)
long Math.safeNegate(long value)
int Math.safeAdd(int value1, int value2)
long Math.safeAdd(long value1, int value2)
long Math.safeAdd(long value1, long value2)
int Math.safeSubtract(int value1, int value2)

map集合支持并发请求

且可以写成 Map map = {name:"xxx",age:18};

java 7更新内容

允许在 switch中使用字符串
  ◆自动资源管理
  ◆通用实例创建来改进类型推断(diamond)
  ◆简化 的Varargs方法调用
  ◆更好的整型文字综合性建议
  ◆Collections集合的语言支持
  ◆JSR292的语言支持
在the OpenJDK 7特性页面中,你还可以看到其他的功能。
这些功能分为不同的种类:
虚拟机(VM)
  ◆压缩的64位对象指针
  ◆G1垃圾回收器GC(G1)
  ◆JSR 292:非Java语言的虚拟机支持(动态调用,InvokeDynamic)
语言方面(lang)
SR 294:模块化编程的语言以及虚拟机支持
  ◆JSR 308:Java类型注释
  ◆语言微小增强(我所谈论的 Project Coin)
  ◆JSR TBD: Project Lambda
内核(core)
模块化(Jigsaw项目)
  ◆对类加载器的结构进行升级
  ◆关闭URLClassLoader的方法
  ◆Unicode 5.1标准
  ◆并行以及集合的升级(jsr166y)
  ◆JSR 203:Java平台(NIO.2)的更多新型I/O API
  ◆SCTP (流控制传输协议,Stream Control Transmission Protocol)
  ◆SDP (套接字直接协议,Sockets Direct Protocol)
  ◆椭圆曲线加密技术(ECC)
客户端(client)
Java 2D的XRender管道
  ◆转发端口6u10部署特性
  ◆为6u10图形功能创建新的平台API
  ◆Swing的Nimbus外观和感觉
  ◆Swing的JLayer元件
网络(web)
更新XML的栈
就像你所看到的,这涉及了很多东西。几个月前,我亲自尝试了新的Garbage Collector (GC),其性能表现给我留下了非常深刻的印象。不幸的是,JVM几个小时就会崩溃一次,所以这个产品不能使用JVM。虽然在Java 1.6中也可以使用这个GC,但也会出现同样的问题,经常会出现崩溃。

业余草公众号

最后,欢迎关注我的个人微信公众号:业余草(yyucao)!可加QQ1群:135430763(2000人群已满),QQ2群:454796847(已满),QQ3群:187424846(已满)。QQ群进群密码:xttblog,想加微信群的朋友,之前的微信号好友已满,请加博主新的微信号:xttblog,备注:“xttblog”,添加博主微信拉你进群。备注错误不会同意好友申请。再次感谢您的关注!后续有精彩内容会第一时间发给您!原创文章投稿请发送至532009913@qq.com邮箱。商务合作可添加助理微信进行沟通!

本文原文出处:业余草: » Java jdk1.7 新特性(jdk1.5到jdk1.8的新特性系列)