導航:首頁 > 源碼編譯 > hotspot源碼的基礎

hotspot源碼的基礎

發布時間:2022-09-02 13:13:10

1. 《java虛擬機精講》epub下載在線閱讀全文,求百度網盤雲資源

《Java虛擬機精講》(高翔龍)電子書網盤下載免費在線閱讀

鏈接: https://pan..com/s/1xfrNROyJsWDumjLR07cVlA

提取碼: pgm6

書名:Java虛擬機精講

作者:高翔龍

豆瓣評分:7.9

出版社:電子工業出版社

出版年份:2015-5

頁數:280

內容簡介:

《Java虛擬機精講》內容簡介:HotSpot VM是目前市面上高性能JVM的代表作之一,它採用解釋器+JIT 編譯器的混合執行引擎,使得Java 程序的執行性能從此有了質的飛躍。本書以極其精練的語句詮釋了 HotSpot VM的方方面面,比如:位元組碼的編譯原理、位元組碼的內部組成結構、通過源碼的方式剖析 HotSpot VM 的啟動過程和初始化過程、Java 虛擬機的運行時內存、垃圾收集演算法、垃圾收集器(重點講解了Serial 收集器、ParNew收集器、Parallel收集器、CMS(Concurrent-Mark-Sweep)收集器和 G1(Garbage-First)收集器)、類載入機制,以及HotSpot VM 基於棧的架構模型和執行引擎(解釋器的工作流程、JIT 編譯器的工作流程、分層編譯策略、熱點探測功能)等技術。

如果你對JVM 感興趣,並且從未接觸過 JVM,那麼本書將會是你探索 JVM 世界的必備入門工具。

本書適用於任何對Java 虛擬機感興趣的Java 開發人員、系統架構師、Java 虛擬機愛好者。尤其是對於那些從未接觸過Java 虛擬機的Java 開發人員,本書筆者竭盡所能用最精練和直接的語句詮釋了有關Java 虛擬機的方方面面,只要你熟練掌握了Java 編程基礎,那麼閱讀本書你將不會感覺到任何的吃力和枯燥乏味。

作者簡介:

曾任平安科技高級架構師,負責高並發即時通訊系統「天下通」的系統架構設計、架構優化、核心功能研發等工作。目前就職於一家互聯網創業公司,擔任系統架構師,負責企業內部Hadoop大數據平台的推廣和實施、系統性能調優、對新員工技術培訓等工作,對系統架構設計、大數據、Java虛擬機等技術領域有著濃厚的興趣和豐富的實戰經驗。

2. openjdk oracle jdk 用哪個

首先要先明確之間,以及OpenJDK 6、OpenJDK 7、OpenJDK 7u和OpenJDK 8等項目之間是什麼關系,這有助於確定接下來編譯要使用的JDK版本和源碼分支。
從前面介紹的Java發展史中我們了解到OpenJDK是Sun在2006年末把Java開源而形成的項目,這里的「開源」是通常意義上的源碼開放形式,即源碼是可被復用的,例如IcedTea、UltraViolet都是從OpenJDK源碼衍生出的發行版。但如果僅從「開源」字面意義(開放可閱讀的源碼)上看,其實Sun自JDK 1.5之後就開始以Java Research License(JRL)的形式公布過Java源碼,主要用於研究人員閱讀(JRL許可證的開放源碼至JDK 1.6 Update 23為止)。把這些JRL許可證形式的Sun/OracleJDK源碼和對應版本的OpenJDK源碼進行比較,發現除了文件頭的版權注釋之外,其餘代碼基本上都是相同的,只有字體渲染部分存在一點差異,Oracle JDK採用了商業實現,而OpenJDK使用的是開源的FreeType。當然,「相同」是建立在兩者共有的組件基礎上的,Oracle JDK中還會存在一些Open JDK沒有的、商用閉源的功能,例如從JRockit移植改造而來的Java Flight Recorder。預計以後JRockit的MissionControl移植到HotSpot之後,也會以Oracle JDK專有、閉源的形式提供。
Oracle的項目發布經理Joe Darcy在OSCON 2011上對兩者關系的介紹也證實了OpenJDK 7和Oracle JDK 7在程序上是非常接近的,兩者共用了大量相同的代碼(如下圖,注意圖中提示了兩者共同代碼的佔比要遠高於圖形上看到的比例),所以我們編譯的OpenJDK,基本上可以認為性能、功能和執行邏輯上都和官方的Oracle JDK是一致的。
Dalvik 與java虛擬機:
1.java虛擬機基於棧。 基於棧的機器必須使用指令來載入和操作棧上數據,所需指令更多更多 .
而dalvik虛擬機是基於寄存器的:java虛擬機運行的是java位元組碼。
(java類會被編譯成一個或多個位元組碼.class文件,打包到.jar文件中,java虛擬機從相應的.class文件和.jar文件中獲取相應的位元組碼)2.Dalvik和Java之間的另外一大區別就是運行環境——Dalvik經過優化,允許在有限的內存中同時運行多個虛擬機的實例OpenJDK :
[root@localhost ~]# java -version
java version "1.6.0_39"
OpenJDK Runtime Environment (IcedTea6 1.13.11) (rhel-1.13.11.0.el5_11-x86_64)OpenJDK 64-Bit Server VM (build 23.25-b01, mixed mode)oracle jdk:
java version "1.8.0_91"
Java(TM) SE Runtime Environment (build 1.8.0_91-b14)Java HotSpot(TM) 64-Bit Server VM (build 25.91-b14, mixed mode)OpenJDK下載:
http://openjdk.java.net/install/index.htmlJDK 8:yum install java-1.8.0-openjdk
JDK 7:
yum install java-1.7.0-openjdk
JDK 6:yum install java-1.6.0-openjdk
1. HotSpot歷史
SUN的JDK版本從1.3.1開始運用HotSpot虛擬機, 2006年底開源,主要使用C++實現,JNI介面部分用C實現。
HotSpot是較新的Java虛擬機,用來代替JIT(Just in Time),可以大大提高Java運行的性能。
Java原先是把源代碼編譯為位元組碼在虛擬機執行,這樣執行速度較慢。而HotSpot將常用的部分代碼編譯為本地(原生,native)代碼,這樣顯著提高了性能。
HotSpot JVM 參數可以分為規則參數(standard options)和非規則參數(non-standard options)。
規則參數相對穩定,在JDK未來的版本里不會有太大的改動。
非規則參數則有因升級JDK而改動的可能。
規則和非規則參數這里不做介紹了,網上資料很多。
2.HotSpot基礎知識
HotSpot包括一個解釋器和兩個編譯器(client 和 server,二選一的),解釋與編譯混合執行模式,默認啟動解釋執行。
編譯器:java源代碼被編譯器編譯成class文件(位元組碼),java位元組碼在運行時可以被動態編譯(JIT)成本地代碼(前提是解釋與編譯混合執行模式且虛擬機不是剛啟動時)。
解釋器: 解釋器用來解釋class文件(位元組碼),java是解釋語言(書上這么說的)。
server啟動慢,佔用內存多,執行效率高,適用於伺服器端應用;client啟動快,佔用內存小,執行效率沒有server快,默認情況下不進行動態編譯,適用於桌面應用程序。
由-XX:+RewriteFrequentPairs參數控制 client模式默認關閉,server模式默認開啟在jre安裝目錄下的lib/i386/jvm.cfg 文件下。
java -version
Java HotSpot(TM) Client VM (build 14.3-b01, mixed mode, sharing)mixed mode 解釋與編譯 混合的執行模式 默認使用這種模式java -Xint -version
Java HotSpot(TM) Client VM (build 14.3-b01, interpreted mode, sharing)interpreted 純解釋模式 禁用JIT編譯
java -Xcomp -version
Java HotSpot(TM) Client VM (build 14.3-b01, compiled mode, sharing)compiled 純編譯模式(如果方法無法編譯,則回退到解釋模式執行無法編譯的方法)3.動態編譯
動態編譯(compile ring run-time),英文稱Dynamic compilation;Just In Time也是這個意思。
HotSpot對bytecode的編譯不是在程序運行前編譯的,而是在程序運行過程中編譯的。
HotSpot里運行著一個監視器(Profile Monitor),用來監視程序的運行狀況。
java位元組碼(class文件)是以解釋的方式被載入到虛擬機中(默認啟動時解釋執行)。 程序運行過程中,那一部分運用頻率大,那些對程序的性能影響重要。對程序運行效率影響大的代碼,稱為熱點(hotspot),HotSpot會把這些熱點動態地編譯成機器碼(native code),同時對機器碼進行優化,從而提高運行效率。對那些較少運行的代碼,HotSpot就不會把他們編譯。
HotSpot對位元組碼有三層處理:不編譯(位元組碼載入到虛擬機中時的狀態。也就是當虛擬機執行的時候再編譯),編譯(把位元組碼編譯成本地代碼。虛擬機執行的時候已經編譯好了,不要再編譯了),編譯並優化(不但把位元組碼編譯成本地代碼,而且還進行了優化)。
至於那些程序那些不編譯,那些編譯,那些優化,則是由監視器(Profile Monitor)決定。
4.為什麼不靜態編譯那?
為什麼位元組碼在裝載到虛擬機之前就編譯成本地代碼那?
動態編譯器也在許多方面比靜態編譯器優越。靜態編譯器通常很難准確預知程序運行過程中究竟什麼部分最需要優化。
函數調用都是很浪費系統時間的,因為有許多進棧出棧操作。因此有一種優化辦法,就是把原來的函數調用,通過編譯器的編譯,改成非函數調用,把函數代碼直接嵌到調用出,變成順序執行。
面向對象的語言支持多態,靜態編譯無效確定程序調用哪個方法,因為多態是在程序運行中確定調用哪個方法。
jdk 1.9 等價JDK9 J2SE9 JAVA9
jdk 1.8 等價JDK8 J2SE8 JAVA8
jdk 1.7 等價JDK7 J2SE7 JAVA7
jdk 1.6 等價JDK6 J2SE6 JAVA6
jdk 1.5 等價JDK5 J2SE5 JAVA5
jdk 1.4 等價J2SE1.4
jdk 1.3 等價J2SE1.3
jdk 1.2 等價J2SE1.2
jdk 1.1
openjdk源碼下載:
Oracle JDK只發布二進制安裝包,而OpenJDK只發布源碼復制代碼
獲取OpenJDK源碼有兩種方式:
第一種方式:
下載OpenJDK7u的源代碼:
hg clone http://hg.openjdk.java.net/jdk7u/jdk7u-devcd jdk7u-dev
chmod 755 get_source.sh
./get_source.sh
下載OpenJDK8u的源代碼:
hg clone http://hg.openjdk.java.net/jdk8u/jdk8u-devcd jdk8u-dev
./get_source.sh
注意:這是最直接的方式,從版本管理中看變更軌跡比看Release Note效果更好。但不足之處是速度太慢,雖然代碼總容量只有300 MB左右,但是文件數量太多,在筆者的網路下全部復制到本地需要數小時。
第二種方式,即直接下載官方打包好的源碼包
讀者可以從Source Bundle Releases頁面(地址:http://jdk7.java.net/source.html)取得打包好的源碼,到本地直接解壓即可。
一般來說,源碼包大概一至兩個月左右會更新一次,雖然不夠及時,但比起從Mercurial復制代碼的確方便和快捷許多。
筆者下載的是OpenJDK 7 Update 6 Build b21版源碼包,2012年8月28日發布,大概99MB,解壓後約為339MB。
備註:推薦在linux平台或者mac平台上面編譯jdk

3. JVM和Java HotSpot如何區分版本

你的虛擬機(JVM)版本是23.5-b02
java -version出來信息包含兩部分:Java軟體包發行版本信息和內核(JVM)版本信息。
java的發行包包含三種類型Java ME,Java SE,Java EE,發行包就相當於對外銷售的產品包,不同發行包會刪減部分特性,因此版本信息首先顯示發行包類型和版本。
JVM是Java平台的基礎和核心,一般在一個java大版本中JVM版本變化都是比較小的。HotSpot是一種JVM實現技術,相對以往的方式在性能和擴展能力上得到了很大的提升,因此它不是一個獨立產品,可以理解Sun(Oracle)實現的JVM版本的品牌商標。

4. HotSpot實戰的作品目錄

第1章初識HotSpot
1.1JDK概述
1.1.1JCP與JSR
1.1.2JDK的發展歷程
1.1.3Java 7的語法變化
1.2動手編譯虛擬機
1.2.1源代碼下載
1.2.2HotSpot源代碼結構
1.2.3搭建編譯環境
1.2.4編譯目標
1.2.5編譯過程
1.2.6編譯常見問題
1.3實戰:在HotSpot內調試HelloWorld
1.3.1認識GDB
1.3.2准備調試腳本
1.4小結
第2章啟動
2.1HotSpot內核
2.1.1如何閱讀源代碼
2.1.2HotSpot內核框架
2.1.3Prims
2.1.4Services
2.1.5Runtime
2.2啟動
2.2.1Launcher
2.2.2虛擬機生命周期
2.2.3入口:main函數
2.2.4主線程
2.2.5InitializeJVM函數
2.2.6JNI_CreateJavaVM函數
2.2.7調用Java主方法
2.2.8JVM退出路徑
2.3系統初始化
2.3.1配置OS模塊
2.3.2配置系統屬性
2.3.3載入系統庫
2.3.4啟動線程
2.3.5vm_init_globals函數:初始化全局數據結構
2.3.6init_globals函數:初始化全局模塊
2.4小結
第3章類與對象
3.1對象表示機制
3.1.1OOP-Klass二分模型
3.1.2Oops模塊
3.1.3OOP框架與對象訪問機制
3.1.4Klass與instanceKlass
3.1.5實戰:用HSDB調試HotSpot
3.2類的狀態轉換
3.2.1入口:Class文件
3.2.2類的狀態
3.2.3載入
3.2.4鏈接
3.2.5初始化
3.2.6實戰:類的「族譜」
3.2.7實戰:系統字典
3.3創建對象
3.3.1實例對象的創建流程
3.3.2實戰:探測JVM內部對象
3.4小結
第4章運行時數據區
4.1堆
4.1.1Java的自動內存管理
4.1.2堆的管理
4.2線程私有區域
4.2.1PC
4.2.2JVM棧
4.3方法區
4.3.1紐帶作用
4.3.2常量池
4.3.3常量池緩存:ConstantPoolCache
4.3.4方法的表示:methodOop
4.3.5方法的解析:將符號引用轉換成直接引用
4.3.6代碼放在哪裡:ConstMethodOop
4.3.7實戰:探測運行時常量池
4.4性能監控數據區:Perf Data
4.4.1描述這段空間:PerfMemory
4.4.2 查看
4.4.3 生產
4.5 轉儲
4.5.1 用VisualVM進行轉儲分析
4.5.2 JVM Crash
4.6 小結
第5章 垃圾收集
5.1 堆與GC
5.1.1 垃圾收集
5.1.2 分代收集
5.1.3 快速分配
5.1.4 棧上分配和逸出分析
5.1.5 GC公共模塊
5.2 垃圾收集器
5.2.1 設計演進
5.2.2 CMS收集器
5.2.3 G1收集器
5.3 實戰:性能分析方法
5.3.1 獲取GC日誌
5.3.2 GC監控信息
5.3.3 內存分析工具
5.3.4 選擇合適的收集器與GC性能評估
5.3.5 不要忽略JVM Crash日誌
5.4 小結
第6章 棧
6.1 硬體背景:了解真實機器
6.1.1 程序是如何運行的
6.1.2 x86與棧幀
6.1.3 ARM對Java硬體級加速:Jazelle技術
6.2 Java棧
6.2.1 寄存器式指令集與棧式指令集
6.2.2 HotSpot中的棧
6.2.3 棧幀
6.2.4 充分利用寄存器資源
6.2.5 虛擬機如何調用Java函數
6.2.6 優化:棧頂緩存
6.2.7 實戰:操作數棧
6.3 小結
第7章 解釋器和即時編譯器
7.1 概述
7.2 解釋器如何工作
7.2.1 Interpreter模塊
7.2.2 Code模塊
7.2.3 位元組碼表
7.2.4 Code Cache
7.2.5 InterpreterCodelet與Stubs隊列
7.2.6 Code生成器
7.2.7 模板表與轉發表
7.2.8 實戰:InterpreterCodelet
7.3 即時編譯器
7.3.1 概述
7.3.2 編譯器模塊
7.3.3 編譯器的基本結構
7.3.4 實戰:編譯原理實踐,了解編譯中間環節
7.4 小結
第8章 指令集
8.1 再說棧式指令集
8.2 數據傳送
8.2.1 局部變數、常量池和操作數棧之間的數據傳送
8.2.2 數據傳送指令
8.2.4 實戰:數組的越界檢查
8.3 類型轉換
8.4 對象的創建和操作
8.5 程序流程式控制制
8.5.1 控制轉移指令
8.5.2 條件轉移
8.5.3 無條件轉移
8.5.4 復合條件轉移
8.5.5 實戰:switch語句如何使用String
8.6 運算
8.6.1 加法:iadd
8.6.2 取負:ineg
8.7 函數的調用和返回
8.7.1 Java函數分發機制:VTABLE與ITABLE
8.7.2 invoke系列指令
8.7.3 動態分發:覆蓋
8.7.4 靜態分發:重載
8.8 異常
8.8.1 異常表
8.8.2 創建異常
8.8.3 try-catch
8.8.4 finally
8.9 小結
第9章 虛擬機監控工具
9.1 Attach機制
9.1.1 AttachProvider與VirtualMachine
9.1.2 命令的下發:execute()
9.1.3 命令的執行:Attach Listener守護線程
9.2 查看JVM進程
9.2.1 用jps查看Java進程
9.2.2 實戰:定製jps,允許查看庫路徑
9.3 查看和配置JVM
9.3.1 用jinfo查看JVM參數配置
9.3.2 實戰:擴展flags選項,允許查看命令行參數
9.4 堆內存轉儲工具
9.4.1 Heap Dump
9.4.2 原理
9.5 堆轉儲分析
9.5.1 Heap Dump分析工具:jhat
9.5.2 實戰:MAT分析過程
9.6 線程轉儲分析
9.6.1 jstack
9.6.2 實戰:如何分析資源等待
9.7 小結

5. 請教,推薦幾本java類書籍

1、《Effective Java(第三版)》(Effective Java 3rd Edition)
如果你還沒讀過這本書,那它絕對是 2019 年你必須讀的第一本書。第三版是一個長期版本,其實它早就該出版了。這版書也囊括了 JDK 7、8、9 的新特性。
我在 1 月份的第一個星期就拿到了這本書,它絕對是約書亞·布洛克(Joshua Bloch)給 Java 程序員非常好的新年禮物。
我花了大概一個星期就讀完了這本書。我發現讀的過程中,時常碰到新的知識點,特別是關於 Java 8 和 Java 9 的。
2、《寫給大忙人看的Java SE 9(第二版)》 (Core Java SE 9 for the Impatient (2nd Edition))
如果你急著學 Java 那我推薦這本書給你。我是凱 S·霍斯特曼 (Cay S. Horstmann)的一個忠實粉絲,他的文采之優美、涉獵之廣,都讓我很是佩服。
你讀了他寫的關於 Java 8、Scala 的書以及《Java 核心編程》之後,絕對也會成為他的粉絲。這本書已經針對 Java SE 9 全面更新。如果你想學習 Java 9,那2018年你應該先讀讀這本書。
3、《Spring 微服務實戰》(Spring Microservices in Action)
軟體開發世界正在加速轉向微服務架構,它在開發、維護、部署、擴容性及可靠性等方面有很多優勢。
感謝 Spring framework 提供這么多開發微服務的 Java 工具,比如 Spring Boot 和 Spring Cloud。
如果你對用 Spring framework 開發微服務有興趣,那麼這本書很適合你。
2019年Java學習,依舊正在進行時,身為一個踏入Java坑的老碼農,深感技術學習就是一個無底洞,需要不斷的去挖掘新的技術,為了跟上時代的發展,需要時時關注技術更新,進行學習,不過隨著技術的不斷深入學習,收獲還是不小的,正在向著資深技術官邁進!

6. Hotspot的源碼應該怎樣閱讀

如果你下的只是HotSpot VM的代碼的話那好辦,Oracle JDK 6/Oracle JDK 7/OpenJDK 6/OpenJDK 7里的HotSpot VM基本上目錄結構都是一樣的。

├—agent Serviceability Agent的客戶端實現
├—make 用來build出HotSpot的各種配置文件
├—src HotSpot VM的源代碼
│ ├—cpu CPU相關代碼(匯編器、模板解釋器、ad文件、部分runtime函數在這里實現)
│ ├—os 操作系相關代碼
│ ├—os_cpu 操作系統+CPU的組合相關的代碼
│ └—share 平台無關的共通代碼
│ ├—tools 工具
│ │ ├—hsdis 反匯編插件
│ │ ├—IdealGraphVisualizer 將server編譯器的中間代碼可視化的工具
│ │ ├—launcher 啟動程序「java」
│ │ ├—LogCompilation 將-XX:+LogCompilation輸出的日誌(hotspot.log)整理成更容易閱讀的格式的工具
│ │ └—ProjectCreator 生成Visual Studio的project文件的工具
│ └—vm HotSpot VM的核心代碼
│ ├—adlc 平台描述文件(上面的cpu或os_cpu里的*.ad文件)的編譯器
│ ├—asm 匯編器介面
│ ├—c1 client編譯器(又稱「C1」)
│ ├—ci 動態編譯器的公共服務/從動態編譯器到VM的介面
│ ├—classfile 類文件的處理(包括類載入和系統符號表等)
│ ├—code 動態生成的代碼的管理
│ ├—compiler 從VM調用動態編譯器的介面
│ ├—gc_implementation GC的實現
│ │ ├—concurrentMarkSweep Concurrent Mark Sweep GC的實現
│ │ ├—g1 Garbage-First GC的實現(不使用老的分代式GC框架)
│ │ ├—parallelScavenge ParallelScavenge GC的實現(server VM默認,不使用老的分代式GC框架)
│ │ ├—parNew ParNew GC的實現
│ │ └—shared GC的共通實現
│ ├—gc_interface GC的介面
│ ├—interpreter 解釋器,包括「模板解釋器」(官方版在用)和「C++解釋器」(官方版不在用)
│ ├—libadt 一些抽象數據結構
│ ├—memory 內存管理相關(老的分代式GC框架也在這里)
│ ├—oops HotSpot VM的對象系統的實現
│ ├—opto server編譯器(又稱「C2」或「Opto」)
│ ├—prims HotSpot VM的對外介面,包括部分標准庫的native部分和JVMTI實現
│ ├—runtime 運行時支持庫(包括線程管理、編譯器調度、鎖、反射等)
│ ├—services 主要是用來支持JMX之類的管理功能的介面
│ ├—shark 基於LLVM的JIT編譯器(官方版里沒有使用)
│ └—utilities 一些基本的工具類
└—test 單元測試

你看到的目錄結構應該是類似這樣的

7. 程序開發中spring框架要怎麼學習呢

1、打好基礎是重中之重

基礎部分可能很枯燥,但是一定要耐心堅持下去。因為打基礎好比是在造輪子造汽車,沒有打好基礎在後面的學習就好比走路,可以說後面遇到的百分之七八十的問題都是基礎沒學好造成的。

2、多看官方文檔多讀源碼

一定要看JDK相關類庫、常用框架各種功能的源碼,去了解其底層實現的原理。總的來說這個也是在打基礎的部分,Java基礎非常扎實才能看懂,在我們學習一個類的源碼時,肯定會衍生出其他各種各樣的問題,供我們來了解和學習,這也就是我們下一步學習的目標和方向。慢慢的,我們就會學習更多的知識,並積累更多的經驗。

3、系統性學習,循序漸進

不要急於求成,每個知識點都要看,並且每個知識點都要勤加練習。有的同學在學習過程中覺得這個知識點簡單,就跳著學習,其實這是個很大的問題,知識點細節必須要了解。我們學習Java需要循序漸進,一步一步來,不能操之過急。

4、遇到問題

遇到不會做的問題,當然不能置之不理。先在網上查,目前網路上針對很多問題都有完美的解決方案,如果網上沒有類似的問題,那可能是你犯了什麼小錯誤。也不要在這個問題上花費太多時間,這需要一定的學習技巧。Java中的知識有很強的相關性,有不懂的地方,可以用其他周邊相關知識再回過頭來理解,這樣既不會耽誤學習進度,又能理解自己不懂的地方

1)jvm有很多種,其實jvm是一個標准,sun做的那個叫hotspot,作者就是後來v8的作者lars bak,其他公司也做過jvm,其中做得比較好的有bea的jrockit,其他的包括ibm的r9,apple的jvm等在內,都做得不行,所以jvm主要是整合淘汰掉這些做得不好的jvm(s),整合成一個統一的openjdk。

2)java是典型的oop語言,其執行效率的優化,最早就是lars bak等人從smalltalk等長期優化的經驗中總結出來並apply到hotspot上去滴,而smalltalk在早期apple機上搞出了那種拖拖拽拽就開發出app的做法,後來vc,delphi之類的其實都是抄襲或者說借鑒apple的smalltalk的做法,jobs說微軟從頭到尾都在抄襲apple是空穴來風,這里空穴來風跟王垠使用的空穴來風是一個意思,有趣的是,java的gui並沒有繼承這種搞法,反而對這種拖拖拽拽就作出app的做法批判有加,到今天,其實java的gui都還不能真正做到拖拖拽拽就作出來,問題很多,個人建議對於純java的gui開發,還是以寫代碼為主。

3)jee也是一個或者說是一堆標准,知乎上有些人把maven,jenkins都算做jee是不對滴,jee的標准核心是ejb,其實就是一個xml配置化的java文件,這個標准在4的時候,達到了頂峰狀態,幾乎所有的挨踢大廠都主動支持該標准,之後開始走下坡路,支持的廠越來越少。

4)java和javascript的關系比很多人認為的要密切,javascript裡面的java這四個字母可不是白叫的,比如js的版權和商標都控制在oracle手裡,oracle對於js的支持甚至超過其對java的支持,並且喜歡捆綁銷售,比如jvm裡面就有一個js引擎。

5)jvm裡面除了js engine以外還有一個瀏覽器排版引擎webkit,就是apple safari和google chrome用的那個那個。

閱讀全文

與hotspot源碼的基礎相關的資料

熱點內容
湖南省常德通用壓縮機有限公司 瀏覽:109
伺服器的雙電是什麼意思 瀏覽:614
程序員離開後代碼運行幾天 瀏覽:386
多多樂app是什麼幹嘛的 瀏覽:346
文檔加密授權工具 瀏覽:436
命令與征服將軍閃退 瀏覽:132
vs2019預編譯怎麼設置 瀏覽:780
沈陽中軟python培訓班 瀏覽:493
逆戰文件夾怎麼放 瀏覽:120
怎麼統一刪除文件夾raw文件 瀏覽:121
卡爾曼濾波演算法書籍 瀏覽:769
安卓手機怎麼用愛思助手傳文件進蘋果手機上 瀏覽:844
安卓怎麼下載60秒生存 瀏覽:803
外向式文件夾 瀏覽:240
dospdf 瀏覽:431
怎麼修改騰訊雲伺服器ip 瀏覽:392
pdftoeps 瀏覽:496
為什麼鴻蒙那麼像安卓 瀏覽:736
安卓手機怎麼拍自媒體視頻 瀏覽:186
單片機各個中斷的初始化 瀏覽:724