深刻理解java虚拟机《一》

1、java发展史java

  1995.5.23 Oak语言更名为java,sun正式发布java 1.0版本正则表达式

  1996.1.23 JDK 1.0发布,java语言第一个正式版本运行环境 主要包括:java虚拟机 Applet AWT数据库

  1997.2.19 JDK1.1发布,包括技术:jar文件格式,jdbc,JavaBeans,RMI,内部类,反射等windows

  1998.12.4 JDK1.2发布, 这个版本中区分了 三个方向(企业开发的J2EE,移动终端开发的J2ME,桌面应用开发的J2SE),包含技术:EJB,java plug-in,java idl ,Swing,Collections集合类等api

  1999.4.27 HotSpot虚拟机发布,JDK1.2中包含以后成为JDK默认的虚拟机服务器

  2000.5.8  JDK1.3发布,提供了java 2D api,添加了数学计算和Timer API等app

  2002.2.13 JDK1.4发布,发布内容主要包含:正则表达式,异常链,NIO,日志类,XML解析器等socket

  2004.9.30 JDK1.5发布,技术包含:自动装箱,泛型,动态注解,枚举,可变长参数,froeach循环等(1.5是官方声明能够支持windows9X平台的最后一个jdk版本)ui

  2006.12.11 JDK1.6发布,技术包含:动态语言支持,提供编译API,微型http服务器API | 虚拟机改动:锁与同步、垃圾收集、类加载等搜索引擎

  2009.2.19 JDK1.7发布,(书中未详细说明,主要怀念了sun公司的动荡时期,2009.4.20 Oracle收购SUN公司,一个巨头落幕……)

  后面内容为搜索引擎提供 👇👇👇👇

  技术包含:switch中添加对String类型的支持,

     添加二进制表示

     数字中可加入分隔符         

异常处理
①Throwable类添加addSuppressed方法和getSuppressed方法。支持原始异常中加入被抑制的异常。
异常抑制:在try和finally中同一时候抛出异常时,finally中抛出的异常会在异常栈中向上传递,而try中产生的原始异常会消失。
在Java7以前的版本号,可以将原始异常保存。在finally中产生异常时抛出原始异常:
public void read(String filename) throws BaseException { FileInputStream input = null; IOException readException = null; try { input = new FileInputStream(filename); } catch (IOException ex) { readException = ex; //保存原始异常 } finally { if (input != null) { try { input.close(); } catch (IOException ex) { if (readException == null) { readException = ex; } } } if (readException != null) { throw new BaseException(readException); } } } 在Java7中的版本号,可以使用addSuppressed方法记录被抑制的异常: public void read(String filename) throws IOException { FileInputStream input = null; IOException readException = null; try { input = new FileInputStream(filename); } catch (IOException ex) { readException = ex; } finally { if (input != null) { try { input.close(); } catch (IOException ex) { if (readException != null) { //此处的差异 readException.addSuppressed(ex); } else { readException = ex; } } } if (readException != null) { throw readException; } } } ②catch子句可以同一时候捕获多个异常 public void testSequence() { try { Integer.parseInt("Hello"); } catch (NumberFormatException | RuntimeException e) { //使用'|'切割,多个类型,一个对象e } } ③try-with-resources语句 Java7以前需要在finally中关闭socket、文件、数据库链接等资源; Java7中在try语句中申请资源,实现资源的本身主动释放(资源类必须实现java.lang.AutoCloseable接口,通常的文件、数据库链接等均已实现该接口,close方法将被本身主动调用)。 public void read(String filename) throws IOException { try (BufferedReader reader = new BufferedReader(new FileReader(filename))) { StringBuilder builder = new StringBuilder();     String line = null;      while((line=reader.readLine())!=null){      builder.append(line);      builder.append(String.format("%n"));      }      return builder.toString(); } } try子句中可以管理多个资源: public void copyFile(String fromPath, String toPath) throws IOException { try ( InputStream input = new FileInputStream(fromPath);    OutputStream output = new FileOutputStream(toPath) ) { byte[] buffer = new byte[8192];     int len = -1;     while( (len=input.read(buffer))!=-1 ) {      output.write(buffer, 0, len);     } } }
相关文章
相关标签/搜索