深刻理解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);     } } }
相關文章
相關標籤/搜索