深入理解java虚拟机《一》

Posted on 2019-03-17 23:19  Mr.ning  阅读(185)  评论(0编辑  收藏  举报

一、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,内部类,反射等

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

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

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

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

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

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