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

接着上一章 《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,但也会出现同样的问题,经常会出现崩溃。

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

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

原创文章,作者:bd101bd101,如若转载,请注明出处:https://blog.ytso.com/251494.html

(0)
上一篇 2022年5月3日
下一篇 2022年5月3日

相关推荐

发表回复

登录后才能评论