jdk1.7?jdk1.7什么时候发布的
大家好,今天来为大家解答jdk1.7这个问题的一些问题点,包括jdk1.7什么时候发布的也一样很多人还不知道,因此呢,今天就来为大家分析分析,现在让我们一起来看看吧!如果解决了您的问题,还望您关注下本站哦,谢谢~
jdk1.7和jdk1.8区别
在JDK1.7的新特性方面主要有下面几方面的增强:
1.jdk7语法上
1.1二进制变量的表示,支持将整数类型用二进制来表示,用0b开头。
1.2 Switch语句支持string类型
1.3 Try-with-resource语句
注意:实现java.lang.AutoCloseable接口的资源都可以放到try中,跟final里面的关闭资源类似;按照声明逆序关闭资源;Try块抛出的异常通过Throwable.getSuppressed获取
1.4 Catch多个异常说明:Catch异常类型为final;生成Bytecode会比多个catch小; Rethrow时保持异常类型
1.5数字类型的下划线表示更友好的表示方式,不过要注意下划线添加的一些标准
1.6泛型实例的创建可以通过类型推断来简化可以去掉后面new部分的泛型类型,只用<>就可以了
1.7在可变参数方法中传递非具体化参数,改进编译警告和错误
1.8信息更丰富的回溯追踪就是上面try中try语句和里面的语句同时抛出异常时,异常栈的信息
2. NIO2的一些新特性
1.java.nio.file和java.nio.file.attribute包支持更详细属性,比如权限,所有者
2. symbolic and hard links支持
3. Path访问文件系统,Files支持各种文件操作
4.高效的访问metadata信息
5.递归查找文件树,文件扩展搜索
6.文件系统修改通知机制
7.File类操作API兼容
8.文件随机访问增强 mapping a region,locl a region,绝对位置读取
9. AIO Reactor(基于事件)和Proactor
2.1IO and New IO监听文件系统变化通知
通过FileSystems.getDefault().newWatchService()获取watchService,然后将需要监听的path目录注册到这个watchservice中,对于这个目录的文件修改,新增,删除等实践可以配置,然后就自动能监听到响应的事件。
2.2 IO and New IO遍历文件树,通过继承SimpleFileVisitor类,实现事件遍历目录树的操作,然后通过Files.walkFileTree(listDir, opts, Integer.MAX_VALUE, walk);这个API来遍历目录树
2.3 AIO异步IO文件和网络异步IO在java
NIO2实现了,都是用AsynchronousFileChannel,AsynchronousSocketChanne等实现,关于同步阻塞IO,同步非阻塞IO,异步阻塞IO和异步非阻塞IO。Java NIO2中就实现了操作系统的异步非阻塞IO。
3. JDBC 4.1
3.1.可以使用try-with-resources自动关闭Connection, ResultSet,和 Statement资源对象
3.2. RowSet 1.1:引入RowSetFactory接口和RowSetProvider类,可以创建JDBC driver支持的各种 row sets,这里的rowset实现其实就是将sql语句上的一些操作转为方法的操作,封装了一些功能。
3.3. JDBC-ODBC驱动会在jdk8中删除
4.并发工具增强
4.1.fork-join
最大的增强,充分利用多核特性,将大问题分解成各个子问题,由多个cpu可以同时解决多个子问题,最后合并结果,继承RecursiveTask,实现compute方法,然后调用fork计算,最后用join合并结果。
4.2.ThreadLocalRandon并发下随机数生成类,保证并发下的随机数生成的线程安全,实际上就是使用threadlocal
4.3. phaser类似cyclebarrier和countdownlatch,不过可以动态添加资源减少资源
5. Networking增强
新增URLClassLoader close方法,可以及时关闭资源,后续重新加载class文件时不会导致资源被占用或者无法释放问题
URLClassLoader.newInstance(new URL[]{}).close();
新增Sockets Direct Protocol
绕过操作系统的数据拷贝,将数据从一台机器的内存数据通过网络直接传输到另外一台机器的内存中
6. Multithreaded Custom Class Loaders
解决并发下加载class可能导致的死锁问题,这个是jdk1.6的一些新版本就解决了,jdk7也做了一些优化。有兴趣可以仔细从官方文档详细了解
JDK1.8的新特性
一、接口的默认方法
Java 8允许我们给接口添加一个非抽象的方法实现,只需要使用 default关键字即可,这个特征又叫做扩展方法。
二、Lambda表达式
在Java 8中你就没必要使用这种传统的匿名对象的方式了,Java 8提供了更简洁的语法,lambda表达式:
Collections.sort(names,(String a, String b)->{
return b.compareTo(a);
});
三、函数式接口
Lambda表达式是如何在java的类型系统中表示的呢?每一个lambda表达式都对应一个类型,通常是接口类型。而“函数式接口”是指仅仅只包含一个抽象方法的接口,每一个该类型的lambda表达式都会被匹配到这个抽象方法。因为默认方法不算抽象方法,所以你也可以给你的函数式接口添加默认方法。
四、方法与构造函数引用
Java 8允许你使用::关键字来传递方法或者构造函数引用,上面的代码展示了如何引用一个静态方法,我们也可以引用一个对象的方法:
converter= something::startsWith;
String converted= converter.convert("Java");
System.out.println(converted);
五、Lambda作用域
在lambda表达式中访问外层作用域和老版本的匿名对象中的方式很相似。你可以直接访问标记了final的外层局部变量,或者实例的字段以及静态变量。
六、访问局部变量
可以直接在lambda表达式中访问外层的局部变量:
七、访问对象字段与静态变量
和本地变量不同的是,lambda内部对于实例的字段以及静态变量是即可读又可写。该行为和匿名对象是一致的:
八、访问接口的默认方法
JDK 1.8 API包含了很多内建的函数式接口,在老Java中常用到的比如Comparator或者Runnable接口,这些接口都增加了@FunctionalInterface注解以便能用在lambda上。
Java 8 API同样还提供了很多全新的函数式接口来让工作更加方便,有一些接口是来自Google Guava库里的,即便你对这些很熟悉了,还是有必要看看这些是如何扩展到lambda上使用的。
jdk1.6与1.7的区别
JDK1.7的新特性:
首先是模块化特性:现在的 Java7也是采用了模块的划分方式来提速,一些不是必须的模块并没有下载和安装,因此在使用全新的Java7的虚拟机的时候会发现真的很快,当虚拟机需要用到某些功能的时候,再下载和启用相应的模块,这样使得最初需要下载的虚拟机大小得到了有效的控制。同时对启动速度也有了很大的改善。如果你对 OpenJDK的架构比较熟悉,你甚至可以定制JDK的模块。
其次是多语言支持:这里的多语言不是指中文英文之类的语言,而是说Java7的虚拟机对多种动态程序语言增加了支持,比如:Rubby、 Python等等。对这些动态语言的支持极大地扩展了Java虚拟机的能力。对于那些熟悉这些动态语言的程序员而言,在使用Java虚拟机的过程中同样可以使用它们熟悉的语言进行功能的编写,而这些语言是跑在功能强大的JVM之上的。
再有是开发者的开发效率得到了改善:Java7通过多种特性来增强开发效率。比如对语言本身做了一些细小的改变来简化程序的编写,在多线程并发与控制方面:轻量级的分离与合并框架,一个支持并发访问的HashMap等等。通过注解增强程序的静态检查。提供了一些新的API用于文件系统的访问、异步的输入输出操作、Socket通道的配置与绑定、多点数据包的传送等等。
最后是执行效率的提高,也是给人感觉最真切体验的特性:压缩了64位的对象指针,Java7通过对对象指针由 64位压缩到与32位指针相匹配的技术使得内存和内存带块的消耗得到了很大的降低因而提高了执行效率。此外还提供了新的垃圾回收机制(G1)来降低垃圾回收的负载和增强垃圾回收的效果。G1垃圾回收机制拥有更低的暂停率和更好的可预测性。
jdk1.7什么时候发布的
2011年7月28日就已经发布了!
下载地址:http://www.oracle.com/technetwork/java/javase/downloads/java-se-jdk-7-download-432154.html
ava发展的时间表。(版本号名称中文名发布日期)
JDK 1.1.4 Sparkler宝石 1997-09-12
JDK 1.1.5 Pumpkin南瓜 1997-12-13
JDK 1.1.6 Abigail阿比盖尔--女子名 1998-04-24
JDK 1.1.7 Brutus布鲁图--古罗马政治家和将军 1998-09-28
JDK 1.1.8 Chelsea切尔西--城市名 1999-04-08
J2SE 1.2 Playground运动场 1998-12-04
J2SE 1.2.1 none无 1999-03-30
J2SE 1.2.2 Cricket蟋蟀 1999-07-08
J2SE 1.3 Kestrel美洲红隼 2000-05-08
J2SE 1.3.1 Ladybird瓢虫 2001-05-17
J2SE 1.4.0 Merlin灰背隼 2002-02-13
J2SE 1.4.1 grasshopper蚱蜢 2002-09-16
J2SE 1.4.2 Mantis螳螂 2003-06-26
J2SE 5.0(1.5.0) Tiger老虎 2004-10
J2SE 6.0(Beta) Mustang野马 2006-04
从这个表中我们可以看出一个非常有意思的现象,就是JDK的每一个版本号都使用一个开发代号表示(就是表中的中文名)。而且从JDK1.2.2开始,主要版本(如1.3,1.4,5.0)都是以鸟类或哺乳动物来命名的.而它们的bug修正版本(如1.2.2,1.3.1,1.4.2)都是以昆虫命名的。
1995年5月23日,Java语言诞生
1996年1月,第一个JDK-JDK1.0诞生
1996年4月,10个最主要的操作系统供应商申明将在其产品中嵌入JAVA技术
1996年9月,约8.3万个网页应用了JAVA技术来制作
1997年2月18日,JDK1.1发布
1997年4月2日,JavaOne会议召开,参与者逾一万人,创当时全球同类会议规模之纪录
1997年9月,JavaDeveloperConnection社区成员超过十万
1998年2月,JDK1.1被下载超过2,000,000次
1998年12月8日,JAVA2企业平台J2EE发布
1999年6月,SUN公司发布Java的三个版本:标准版、企业版和微型版(J2SE、J2EE、J2ME)
2000年5月8日,JDK1.3发布
2000年5月29日,JDK1.4发布
2001年6月5日,NOKIA宣布,到2003年将出售1亿部支持Java的手机
2001年9月24日,J2EE1.3发布
2002年2月26日,J2SE1.4发布,自此Java的计算能力有了大幅提升。
2004年9月30日18:00PM,J2SE1.5发布,是Java语言的发展史上的又一里程碑事件。为了表示这个版本的重要性,J2SE1.5更名为J2SE5.0
2005年6月,JavaOne大会召开,SUN公司公开Java SE 6。此时,Java的各种版本已经更名以取消其中的数字“2”:J2EE更名为Java EE, J2SE更名为Java SE,J2ME更名为Java ME。
2006年11月13日,SUN公司宣布Java全线采纳GNU General Public License Version 2,从而公开了Java的源代码。
OK,本文到此结束,希望对大家有所帮助。