在Java中的新function7

Java 7中将会实现哪些新function? 他们现在在做什么?

JDK 7发行说明中的​​Java SE 7 function和增强function

这是来自OpenJDK 7function页面的Java 7新function摘要:

 vm JSR 292:支持dynamictypes语言(InvokeDynamic)
        严格的类文件检查
 lang JSR 334:小语言增强(Project Coin)
核心升级类加载器体系结构
        closuresURLClassLoader的方法
        并发和集合更新(jsr166y)
 i18n Unicode 6.0
        区域增强
        独立的用户区域设置和用户界面区域设置
 ionet JSR 203:用于Java平台的更多新的I / O API(NIO.2)
        用于zip / jar档案的NIO.2文件系统提供者
         SCTP(stream控制传输协议)
         SDP(套接字直接协议)
        使用Windows Vista IPv6堆栈
         TLS 1.2
秒椭圆曲线密码术(ECC)
 jdbc JDBC 4.1
用于Java 2D的客户端XRenderpipe道
        为6u10graphicsfunction创build新的平台API
         Swing的灵气外观
         Swing JLayer组件
         Gervill声音合成器[新]
 web更新XML堆栈
pipe理增强的MBean [已更新]

Java 1.7新function的代码示例

试用资源声明

这个:

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(); } 

您可以声明多个资源closures:

 try ( InputStream in = new FileInputStream(src); OutputStream out = new FileOutputStream(dest)) { // code } 

数字文字中的下划线

 int one_million = 1_000_000; 

开关中的string

 String s = ... switch(s) { case "quux": processQuux(s); // fall-through case "foo": case "bar": processFooOrBar(s); break; case "baz": processBaz(s); // fall-through default: processDefault(s); break; } 

二进制文字

 int binary = 0b1001_1001; 

改进通用实例创build的types推断

 Map<String, List<String>> anagrams = new HashMap<String, List<String>>(); 

变为:

 Map<String, List<String>> anagrams = new HashMap<>(); 

捕获多个exception

这个:

 } catch (FirstException ex) { logger.error(ex); throw ex; } catch (SecondException ex) { logger.error(ex); throw ex; } 

变为:

 } catch (FirstException | SecondException ex) { logger.error(ex); throw ex; } 

SafeVarargs

这个:

 @SuppressWarnings({"unchecked", "varargs"}) public static void printAll(List<String>... lists){ for(List<String> list : lists){ System.out.println(list); } } 

变为:

 @SafeVarargs public static void printAll(List<String>... lists){ for(List<String> list : lists){ System.out.println(list); } } 

Java标准版的新function(JSE 7)

  1. 使用JLayer类装饰组件:

    JLayer类是Swing组件的灵活和强大的装饰器。 Java SE 7中的JLayer类在精神上类似于java.net中的JxLayer项目项目。 JLayer类最初是基于JXLayer项目,但是它的API是分开发展的。

  2. 开关语句中的string

    在JDK 7中,我们可以在switch语句的expression式中使用一个String对象。 Java编译器通过使用String对象的switch语句而不是链式的if-then-else语句生成通常更有效的字节码。

  3. 通用实例的types推断:

    只要编译器可以从上下文中推断出types参数,就可以用一组空types参数(<>)来replace调用generics类的构造函数所需的types参数。 这对尖括号非正式地称为钻石。 Java SE 7支持通用实例创build的有限types推断; 如果构造函数的参数化types在上下文中是显而易见的,那么只能使用types推断。 例如,下面的例子不能编译:

     List<String> l = new ArrayList<>(); l.add("A"); l.addAll(new ArrayList<>()); 

    相比之下,下面的例子编译:

     List<? extends String> list2 = new ArrayList<>(); l.addAll(list2); 
  4. 通过改进的types检查来捕获多个exceptiontypes和引发exception:

    在Java SE 7和更高版本中,单个catch块可以处理多种types的exception。 此function可以减less代码重复。 考虑以下代码,其中包含每个catch块中的重复代码:

     catch (IOException e) { logger.log(e); throw e; } catch (SQLException e) { logger.log(e); throw e; } 

    在Java SE 7之前的版本中,由于variablese具有不同的types,所以很难创build一个通用的方法来消除重复的代码。 以下示例在Java SE 7及更高版本中有效,可消除重复的代码:

     catch (IOException|SQLException e) { logger.log(e); throw e; } 

    catch子句指定块可以处理的exceptiontypes,每个exceptiontypes用垂直条(|)分隔。

  5. java.nio.file包

    java.nio.file包及其相关包java.nio.file.attribute为文件I / O和访问文件系统提供了全面的支持。 JDK 7中也提供了一个zip文件系统提供程序。

资料来源: http : //ohmjavaclasses.blogspot.com/

除了John Skeet所说的之外,下面是Java 7项目的概述 。 它包括一个列表和function的描述。

注意:JDK 7于2011年7月28日发布,所以现在你应该去官方的java SE站点 。

Java编程语言增强@ Java7

  1. 二进制文字
  2. 在switch语句中的string
  3. 尝试使用资源或ARM( 自动资源pipe理 )
  4. 多个exception处理
  5. 下划线文字
  6. 使用菱形语法创build通用实例的types推断
  7. 使用Varargs方法使用不可维护的forms参数时,改进了编译器警告和错误

官方参考
官方参考java8
维基参考

语言变化

 -Project Coin (small changes) -switch on Strings -try-with-resources -diamond operator 

库更改

 -new abstracted file-system API (NIO.2) (with support for virtual filesystems) -improved concurrency libraries -elliptic curve encryption -more incremental upgrades 

平台更改

 -support for dynamic languages 

下面是解释JAVA 7新增function的链接,解释清楚,每个function的可能小例子:

http://radar.oreilly.com/2011/09/java7-features.html

以下列表包含指向Java SE 7中增强页面的链接。

 Swing IO and New IO Networking Security Concurrency Utilities Rich Internet Applications (RIA)/Deployment Requesting and Customizing Applet Decoration in Dragg able Applets Embedding JNLP File in Applet Tag Deploying without Codebase Handling Applet Initialization Status with Event Handlers Java 2D Java XML – JAXP, JAXB, and JAX-WS Internationalization java.lang Package Multithreaded Custom Class Loaders in Java SE 7 Java Programming Language Binary Literals Strings in switch Statements The try-with-resources Statement Catching Multiple Exception Types and Rethrowing Exceptions with Improved Type Checking Underscores in Numeric Literals Type Inference for Generic Instance Creation Improved Compiler Warnings and Errors When Using Non-Reifiable Formal Parameters with Varargs Methods Java Virtual Machine (JVM) Java Virtual Machine Support for Non-Java Languages Garbage-First Collector Java HotSpot Virtual Machine Performance Enhancements JDBC 

参考1 参考2