如果说今年Java开发平台有什么大事儿,那就要数将于年底发布的Java 7了。进入2010年,Java 7有哪些新的进展?这些新的特性更新对我们有哪些好处?该如何使用?Java 7的性能如何?本文将给你答案。
这里的内容主要包括其最 新更新、一些代码实例、跟以前版本的Java进行性能比较需要参考的一些基准、以及什么时候它才会发布等信息。
首先,让我们来看最重要 的事情。为了确定JDK 7中有哪些语言方面的微小变化,有关人员建立了一个名叫Project Coin的项目。描述了最终的五个变化(比五个多一点)。
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,但也会出现同样的问题,经常会出现崩溃。
我想,这就是Java1.7增加新特性的原因。那么,现在我们最 好去看一些代码实例。
Java 7新特性的代码实例
下面列出的大多数例子都是来源于Joe Wright博客中(Java7中的新语言特性)的高水平文章。
集合的语言支持
在这里我们主要讲的 是,当创建一个List、Set或者Map的时候,你怎样尽量少写代码。你不必先实例化Object,然后再给Collection添加元素。你现在只需 1行代码就可以完成。
List list = ["item"];
String item = list[0];
Set set = {"item"};
Map map = {"key" : 1};
int value = map["key"];
自动资源管理
由于try / catch语句的原因,冗长的代码令人非常头痛。你或许会喜欢这个全新的特性。
实际上,下面这些代码:
BufferedReader br = new BufferedReader(new FileReader(path));
try {
return br.readLine();
}
finally
{
br.close();
}
转变成了如下这种形式:
try (BufferedReader br = new BufferedReader(new FileReader(path)) {
return br.readLine();
}
通用实例创建来改进类型推断(diamond)
当你把对象的接口申明指定成范型后,你在对象实例化时不得不再指定一次。现 在,你不必如此了,因为你可以这样:
Map> map = new HashMap<>();
数值文字的加强
我不敢肯定这个对大多数人都有用。你可以这样做:
int billion = 1_000_000_000;
允许在 switch中使用字符串
这个无需解释,其意思很明确。
String availability = "available";
switch(availability)
{
case "available":
//code
break;
case "unavailable":
//code
break;
case "merged":
//code
default:
//code
break;
}
二进制文字
你可以使用前缀0b创建二进制文字
int binary = 0b1001_1001;
以上这些就 是Java1.7的代码实例。如果有人能给我指出还有哪些没有包含进去,那就更好了。我敢肯定,已经有其他的开发人员对此进行了关注。
Java 1.7的性能表现
Java 7的性能有多大的提升?这里我们来针对Java 7做一个测试,内容如下。在一台装有ArchLinux系统的Macbook Pro电脑上(因特尔Duo CPU T7700,主频2.40GHz,有两年的使用时间)运行了这些测试。内存是2Gb的,把Heap Size设置成了728m(-Xms728m -Xmx728m)。
◆测试1 为一个List添加100万个字符串值(String字符串是一个UUID,是用UUID.randomUUID()产生的)。
◆测试 2 带有100万键、值对的HashMap。每个键、值对通过并行线程进行计算。键是一个UUID,值int是用Math.random()产生的。
◆测试3 把100万个ArrayList条目打印到一定数量的文件(1000个)中。把条目写进恰巧并行的不同文件中。
我只比较了 Java1.6 (1.6.0_19) 和 Java 1.7 (b87)。后来根据评论的要求,我把Java1.5也添加了进来,但是并没有添加Java1.4,因为它的时间太久远了。
结果如下所 示:
Java 7的发布日期
在2009年11月的时候,Java1.7计划是在2010年9月发布,到那时还将发布3个里 程碑版本。其中,里程碑6在build 84版中已经完成,里程碑7的第一个测试版B85也计划在2010年3月4日完成,而本文使用的B87版本已在2010年3月25日发布。这样看起 来,Java 1.7很有可能在2010年9月发布。让我们等待吧。
<script type="text/javascript"></script>
分享到:
相关推荐
### Java反射性能测试分析 #### 引言 Java反射机制是Java编程语言中一个强大的特性,它允许程序在运行时动态地访问、检测和修改类、接口、字段和方法等对象。然而,反射操作通常会引入额外的开销,这在性能敏感的...
在“examples”文件夹中,你可能会找到展示这些技术实际应用的代码示例。通过阅读和运行这些代码,你可以更好地理解Java EE 7各组件的用法,并能将其应用于自己的项目中。"license.txt"文件可能是包含该代码库许可...
Java反射机制是Java编程语言中的一个强大特性,它允许程序在运行时检查和操作类、接口、字段和方法的信息,甚至能够动态调用方法和创建对象。反射机制为Java提供了元数据的能力,使得代码能够在不知道具体类型的情况...
"Java示例代码"通常指的是为了教学、演示或测试特定功能而编写的简短程序片段。这些代码实例帮助开发者理解Java语言的语法、特性以及如何解决实际问题。 在Java编程中,我们遇到的关键概念包括: 1. 类(Class)与...
在“Java测试和示例代码”这个主题中,我们主要关注的是如何通过编写和执行测试来验证Java代码的正确性和性能。测试在软件开发过程中至关重要,因为它有助于发现和修复错误,确保软件的质量和稳定性。常见的Java测试...
这本书可能涵盖了Java语言的高级特性和最新发展,包括Java 9及后续版本的新特性。 在学习Java时,理论知识固然重要,但实践经验同样不可或缺。这个压缩包中的"corejava9"文件夹很可能是书中的各个章节或主题的实例...
Java后台示例代码是针对基于JAVA企业级平台开发的内容管理系统的实例展示,旨在提供开发者一个实践和学习的参考。在企业级应用开发中,Java语言因其高效性、安全性以及稳定性等特性,被广泛用于构建复杂且高负载的...
6. 性能测试工具: - JMeter:Apache项目,用于性能和负载测试,可测试Web应用和其他服务器。 - Gatling:高性能的压力测试工具,适用于高并发场景。 7. 日志和调试工具: - Log4j:流行的日志记录框架,便于...
书中不仅提供了丰富的重构技巧,还包括了实用的示例和最佳实践,旨在帮助开发者更高效地完成代码转换,并提升重构后代码的质量和性能。 #### 二、重构技巧与方法 **1. 语法转换** - **基础语法差异**:Kotlin在很...
1. **源代码**:这些是与教程配套的示例程序,覆盖了Java 7的基本概念和特性,如类、对象、封装、继承、多态、异常处理、集合框架、IO流等。通过实际操作和运行代码,学习者可以更好地理解理论知识。 2. **习题解答...
- **跨平台支持**:Java的“一次编写,到处运行”特性使得Xith3D能在多种操作系统上运行,无需重写代码。 总之,Xith3D不仅是一个强大的3D开发工具,也是深入学习Java图形编程和游戏开发的宝贵资源。通过阅读源码、...
JavaCodeRepo是一个包含随机Java代码示例的资源库,它为初学者和有经验的开发者提供了丰富的学习材料。这个项目主要是为了帮助理解Java编程语言的各种概念、语法和最佳实践。让我们深入探讨一下这个压缩包中可能包含...
在这个"优道PDF控件 Java代码示例"压缩包中,包含了一些关键组件和资源,帮助开发者快速理解和使用这个控件。 首先,`readme.txt`文件通常是压缩包的使用指南,它可能包含了安装步骤、配置说明以及一些注意事项。这...
【标题】:在Java SpringBoot项目中集成OceanBase数据库的测试代码 【正文】: Java SpringBoot框架是现代化企业级应用开发的首选工具,它简化了配置,提供了大量的starter模块来快速搭建应用。而OceanBase是一款...
`CopyFile.java`可能是用于对比两者的文件复制性能的代码示例。在IO中,这可能涉及到使用`FileInputStream`和`FileOutputStream`的read和write方法;而在NIO中,可能使用`FileChannel`的transferTo或transferFrom...
在本示例中,我们将探讨如何使用 Thrift 的 Java 实现,以及提供的 Thrift0.9.1 版本的示例代码。 Thrift 的核心思想是通过定义一种中间表示(IDL,接口定义语言)来描述服务和数据类型。这些 IDL 文件被编译成各种...
在实际使用这种工具时,开发者应该了解转换的局限性,理解哪些部分可能需要手动调整,以及如何测试和验证转换后的代码以确保功能正确性和性能。此外,对于复杂的C++项目,转换可能不是最佳解决方案,因为可能会丢失...
Java反射是Java编程语言中的一个强大特性,它允许运行中的Java程序对自身进行检查并且可以直接操作程序的内部属性。在Java中,反射机制主要由java.lang.Class类、java.lang.reflect包下的Constructor、Method和Field...
在"2019最新 java9新特性课程讲解.txt"文件中,你将详细了解到这些特性的具体实现、使用示例以及如何将它们融入到你的Java开发实践中。通过学习这个课程,你可以提升自己的Java技能,更好地适应不断发展的Java生态...
Java动态特性eval的相关实现主要涉及Java的反射机制、表达式求值以及编译器接口。在JavaScript中,`eval()`函数能够将一个字符串作为代码执行,从而实现动态编程。Java中虽然没有直接对应的内置方法,但通过一些技术...