jvm是Java Virtual Machine 的簡稱意味Java虛擬機,指經過軟件模擬的具備完整硬件系統功能的、運行在一個徹底隔離環境中的完整計算機系統正則表達式
有哪些虛擬機編程
虛擬機名稱 實現方式
VMWare 使用軟件模擬物理CPU的指令集
Visual Box 使用軟件模擬物理CPU的指令集
JVM 使用軟件模擬Java 字節碼的指令集
複製代碼
1996年 SUN JDK 1.0 Classic VM,純解釋運行,使用外掛進行JITjvm
1997年 JDK1.1 發佈 AWT、內部類、JDBC、RMI、反射模塊化
1998年 JDK1.2 Solaris Exact VM JIT 解釋器混合 Accurate Memory Management 精確內存管理,數據類型敏感 提高的GC性能。從這時開始稱爲Java2 J2SE J2EE J2ME得出現加入Swing Collections性能
2000年 JDK 1.3 Hotspot 做爲默認虛擬機發布 加入JavaSound加密
2002年 JDK 1.4 Classic VM退出歷史舞臺 Assert正則表達式 NIO IpV6 日誌API 加密類庫spa
2004年發佈 JDK1.5 即 JDK5 、J2SE 5 、Java 5 泛型、註解、裝箱、枚舉、可變長的參數、Foreach循環指針
JDK1.6 JDK六、腳本語言支持、JDBC 4.0、Java編譯器 API日誌
2011年 JDK7發佈 延誤項目推出到JDK8 、G一、動態語言加強、64位系統中的壓縮指針、NIO 2.0code
2014年 JDK8發佈 Lambda表達式、語法加強、Java類型註解
2016年JDK9 模塊化
使用最爲普遍的JVM爲HotSpot
HotSpot 爲Longview Technologies開發 被SUN收購
2006年 Java開源 並創建OpenJDK HotSpot,成爲Sun JDK和OpenJDK中所帶的虛擬機
2008 年 Oracle收購BEA,獲得JRockit VM
2010年Oracle 收購 Sun,獲得Hotspot
Oracle宣佈在JDK8時整合JRockit和Hotspot,優點互補 在Hotspot基礎上,移植JRockit優秀特性
KVM :SUN發佈,IOS Android前,普遍用於手機系統
CDC/CLDC HotSpot :手機、電子書、PDA等設備上創建統一的Java編程接口 J2ME的重要組成部分
JRockit :BEA
IBM J9 VM : IBM內部
Apache Harmony : 兼容於JDK 1.5和JDK 1.6的Java程序運行平臺與Oracle關係惡劣 退出JCP ,Java社區的分裂 OpenJDK出現後,受到挑戰 2011年 退役 沒有大規模商用經歷 對Android的發展有積極做用
Java語言規範
語法 變量 類型 文法
複製代碼
JVM規範
Class文件類型 運行時數據 幀棧 虛擬機的啓動 虛擬機的指令集
複製代碼
Java語言規範定義了什麼是Java語言,Java語言和JVM相對獨立,Groovy、Clojure、Scala,這三種均可以運行在JVM上。JVM主要定義二進制class文件和JVM指令集等
整數得表達
原碼:第一位爲符號位(0爲正數,1爲負數)
反碼:符號位不動,原碼取反
負數補碼:符號位不動,反碼加1
正數補碼:和原碼相同
打印整數的二進制表示 int a=-6; for(int i=0;i<32;i++){ int t=(a & 0x80000000>>>i)>>>(31-i); System.out.print(t); }
爲何要用到補碼呢? 由於在人們的計算概念中零是沒有正負之分的,統一0的處理 統一處理加減法,無需增長減法器操做