買這商品的人也買了...
-
人月神話:軟體專案管理之道 (20 週年紀念版)(The Mythical Man-Month: Essays on Software Engineering, Anniversary Edition, 2/e)$480$379 -
使用者故事對照 (User Story Mapping: Discover the Whole Story, Build the Right Product)$580$458 -
為你自己學 Git$500$390 -
$422持續交付 2.0 業務引領的 DevOps 精要 -
$505雲原生應用構建:基於 OpenShift -
網站可靠性工程工作手冊|導入 SRE 的實用方法 (The Site Reliability Workbook)$780$616 -
$500Spring Batch 權威指南 (The Definitive Guide to Spring Batch: Modern Finite Batch Processing in the Cloud) -
JavaScript 大全, 7/e (Javascript: The Definitive Guide: Master the World's Most-Used Programming Language, 7/e)$1,200$948 -
Python 刷題鍛鍊班:老手都刷過的 50 道程式題, 求職面試最給力 (Python Workout: 50 ten-minute exercises)$480$408 -
矽谷工程師教你 Kubernetes:史上最全 CI/CD 中文應用指南(iT邦幫忙鐵人賽系列書)$600$468 -
架構師的自我修煉:技術、架構和未來$534$507 -
大話 AWS 雲端架構:雲端應用架構圖解輕鬆學, 2/e$620$484 -
敏捷測試 : 以持續測試促進持續交付$779$740 -
$611Quarkus 實踐指南:構建新一代的 Kubernetes 原生 Java 微服務 -
$607Quarkus 雲原生微服務開發實戰 -
Martin Fowler 的企業級軟體架構模式:軟體重構教父傳授 51個模式,活用設計思考與架構決策 (Patterns of Enterprise Application Architecture)$800$624 -
Python 小專案大集合:提升功力的 81個簡單有趣小程式$720$562 -
Rust 程式設計, 2/e (Programming Rust: Fast, Safe Systems Development, 2/e)$1,200$948 -
$658深入探索 JVM 垃圾回收:ARM 服務器垃圾回收的挑戰和優化 -
演算法生存指南$800$632 -
CSS 大全, 5/e (CSS: The Definitive Guide: Web Layout and Presentation, 5/e)$1,480$1,169 -
億級流量系統架構設計與實戰$768$730 -
Linux 核心除錯實務 (Linux Kernel Debugging: Leverage proven tools and advanced techniques to effectively debug Linux kernels and kernel modules)$800$632 -
API 設計模式|簡化整合的訊息交換技術 (Patterns for API Design: Simplifying Integration with Loosely Coupled Message Exchanges)$850$672 -
資料庫內部原理|深入了解分散式資料系統的運作方式$780$616
中文年末書展|繁簡參展書2書75折 詳見活動內容 »
-
75折
為你寫的 Vue Components:從原子到系統,一步步用設計思維打造面面俱到的元件實戰力 (iThome 鐵人賽系列書)$780$585 -
75折
BDD in Action, 2/e (中文版)$960$720 -
75折
看不見的戰場:社群、AI 與企業資安危機$750$563 -
79折
AI 精準提問 × 高效應用:DeepSeek、ChatGPT、Claude、Gemini、Copilot 一本搞定$390$308 -
7折
超實用!Word.Excel.PowerPoint 辦公室 Office 365 省時高手必備 50招, 4/e (暢銷回饋版)$420$294 -
75折
裂縫碎光:資安數位生存戰$550$412 -
85折
日本當代最強插畫 2025 : 150位當代最強畫師豪華作品集$640$544 -
79折
Google BI 解決方案:Looker Studio × AI 數據驅動行銷實作,完美整合 Google Analytics 4、Google Ads、ChatGPT、Gemini$630$498 -
79折
超有料 Plus!職場第一實用的 AI 工作術 - 用對 AI 工具、自動化 Agent, 讓生產力全面進化!$599$473 -
75折
從零開始學 Visual C# 2022 程式設計, 4/e (暢銷回饋版)$690$518 -
75折
Windows 11 制霸攻略:圖解 AI 與 Copilot 應用,輕鬆搞懂新手必學的 Windows 技巧$640$480 -
75折
精準駕馭 Word!論文寫作絕非難事 (好評回饋版)$480$360 -
Sam Yang 的插畫藝術:用 Procreate / PS 畫出最強男友視角 x 女孩美好日常$699$629 -
79折
AI 加持!Google Sheets 超級工作流$599$473 -
78折
想要 SSR? 快使用 Nuxt 吧!:Nuxt 讓 Vue.js 更好處理 SEO 搜尋引擎最佳化(iThome鐵人賽系列書)$780$608 -
75折
超實用!業務.總管.人資的辦公室 WORD 365 省時高手必備 50招 (第二版)$500$375 -
7折
Node-RED + YOLO + ESP32-CAM:AIoT 智慧物聯網與邊緣 AI 專題實戰$680$476 -
79折
「生成式⇄AI」:52 個零程式互動體驗,打造新世代人工智慧素養$599$473 -
7折
Windows APT Warfare:惡意程式前線戰術指南, 3/e$720$504 -
75折
我輩程式人:回顧從 Ada 到 AI 這條程式路,程式人如何改變世界的歷史與未來展望 (We, Programmers: A Chronicle of Coders from Ada to AI)$850$637 -
75折
不用自己寫!用 GitHub Copilot 搞定 LLM 應用開發$600$450 -
79折
Tensorflow 接班王者:Google JAX 深度學習又快又強大 (好評回饋版)$780$616 -
79折
GPT4 會你也會 - 共融機器人的多模態互動式情感分析 (好評回饋版)$700$553 -
79折
技術士技能檢定 電腦軟體應用丙級術科解題教本|Office 2021$460$363 -
75折
Notion 與 Notion AI 全能實戰手冊:生活、學習與職場的智慧策略 (暢銷回饋版)$560$420
相關主題
商品描述
全書邏輯上分為3篇。
1.第1篇首先概要介紹Java編譯器的演進過程,
然後介紹Java靜態編譯的基本原理、總體能力和發展前景
2.第2篇詳細介紹GraalVM如何實現Java的靜態編譯,
著重介紹是如何支持現有Java特性。
3.第3篇主要關註GraalVM的實踐應用。
靜態編譯目前還未能達到開箱即用的狀態,
這一部分會介紹如何將傳統Java應用編譯為二進制可執行文件或靜態庫文件。
通過閱讀本書,讀者可以瞭解和掌握目前新的Java靜態編譯技術的原理、特性和優缺點,
能夠判斷評估自己的業務是否適用於靜態編譯、是否值得投入資源對現有業務進行靜態化改造。
作者簡介
林子熠 博士,阿裡巴巴集團技術專家,曾任華為技術有限公司高級軟件開發工程師。
專註於Java靜態編譯方向,主要負責Java靜態編譯技術在阿裡巴巴生態中的應用,並以落地實踐中發現的問題為切入點,向GraalVM社區貢獻了多項重要特性,是GraalVM社區建設的積極參與者;曾作為核心人員,負責將華為方舟編譯器前端的Java字節碼和Art Dex字節碼轉換為方舟中間語言的開發工作;曾受邀作為上海JUG2019報告嘉賓和北京QCon2020報告嘉賓,介紹GraalVM靜態編譯技術;曾在編譯器領域國際頂級學術會議CGO 2021的Graal專項論壇中報告對Java序列化特性的靜態編譯支持實現。
目錄大綱
序
前言
第一部分 從解釋執行到靜態編譯:Java的編譯發展之路
第1章 Java靜態編譯技術的誕生2
1.1 Java程序的運行生命週期3
1.1.1 初始化4
1.1.2 程序預熱5
1.2 冷啟動問題8
1.3 初識Java靜態編譯技術11
1.3.1 什麼是Java靜態編譯11
1.3.2 靜態編譯的優勢12
1.3.3 靜態編譯的局限性13
1.4 小結15
第2章 Java靜態編譯的業界實現16
2.1 Oracle GraalVM16
2.1.1 GraalVM是什麼17
2.1.2 GraalVM靜態編譯優點19
2.1.3 GraalVM靜態編譯缺點20
2.1.4 GraalVM發展分析21
2.2 華為方舟編譯器22
2.3 小結24
第3章 GraalVM整體結構25
3.1 子項目與組件25
3.2 GraalVM編譯系統工具mx29
3.3 在IDE中打開GraalVM32
3.4 小結33
第4章 從Java程序到本地代碼:靜態編譯應用流程34
4.1 獲取GraalVM JDK35
4.1.1 下載發布版35
4.1.2 下載Docker鏡像37
4.2 從源碼編譯37
4.2.1 編譯準備37
4.2.2 編譯38
4.3 獲取依賴庫40
4.4 預執行目標應用程序41
4.5 靜態編譯目標應用程序43
4.5.1 命令行模式編譯43
4.5.2 配置文件模式45
4.5.3 Maven插件模式46
4.5.4 Gradle插件模式47
4.6 靜態編譯Java程序實例48
4.6.1 靜態編譯HelloWorld49
4.6.2 靜態編譯Spring Boot應用實例50
4.7 小結52
第二部分 靜態編譯實現原理
第5章 Substrate VM靜態編譯框架54
5.1 靜態編譯啟動器55
5.2 靜態編譯實現流程57
5.2.1 類加載59
5.2.2 準備60
5.2.3 靜態分析61
5.2.4 全局構建63
5.2.5 編譯64
5.2.6 生成image65
5.2.7 寫文件65
5.3 Substrate VM運行時支持67
5.3.1 內存管理67
5.3.2 系統信號處理機制69
5.4 小結70
第6章 Feature機制71
6.1 Feature機制概覽71
6.2 Feature管理73
6.2.1 註冊與調用Feature73
6.2.2 Feature依賴74
6.3 Feature影響編譯流程75
6.3.1 Feature函數的入參回調75
6.3.2 訪問ImageSingletons單例庫76
6.4 GraalFeature實現靜態編譯優化77
6.4.1 GraalVM編譯器基礎知識77
6.4.2 擴展lowering79
6.4.3 註冊圖的擴展插件79
6.5 Feature接口函數80
6.6 小結82
第7章 編譯時替換機制83
7.1 替換機制在Substrate VM中的應用84
7.2 基於註解的替換85
7.2.1 替換類85
7.2.2 替換枚舉類型87
7.2.3 替換函數88
7.2.4 替換構造函數89
7.2.5 替換類中的域90
7.2.6 替換類的靜態初始化函數92
7.3 實現原理93
7.3.1 替換機制責任鏈93
7.3.2 確定待替換元素集合96
7.3.3 自定義替換內容98
7.4 小結98
第8章 類提前初始化優化100
8.1 Java中的類初始化100
8.2 編譯時的類初始化101
8.2.1 類提前初始化的性能分析102
8.2.2 類提前初始化的安全性分析103
8.3 優化實現原理106
8.3.1 早期階段分析107
8.3.2 中期階段分析109
8.3.3 後期階段分析111
8.4 手動設置類初始化時機112
8.5 小結113
第9章 反射的實現與優化114
9.1 反射在傳統Java中的實現115
9.2 基於配置的支持119
9.2.1 反射配置文件119
9.2.2 配置局限性121
9.3 Substrate VM的反射實現122
9.3.1 解析配置並註冊反射信息123
9.3.2 反射函數常量折疊優化124
9.3.3 函數反射調用過程優化125
9.4 其他類似動態特性的支持126
9.4.1 JNI調用127
9.4.2 動態代理127
9.4.3 資源訪問128
9.4.4 序列化特性129
9.5 小結129
第10章 序列化131
10.1 序列化特性的JDK原生實現131
10.1.1 序列化/反序列化基本流程132
10.1.2 序列化中的靜態編譯不友好特性133
10.2 靜態編譯的序列化實現136
10.2.1 解決動態類加載問題136
10.2.2 解決new抽像類問題138
10.2.3 靜態初始化函數檢查139
10.3 局限性139
10.4 小結141
第11章 跨語言編程:用Java語言編寫共享庫142
11.1 樣例項目cinterfacetutorial 143
11.2 共享庫的Java實現源碼解析145
11.2.1 聲明共享庫上下文145
11.2.2 實現C基本數據結構146
11.2.3 實現C的結構體繼承149
11.2.4 暴露共享庫API149
11.2.5 直接調用C函數152
11.2.6 共享庫函數的返回值153
11.3 靜態編譯JNI共享庫153
11.3.1 JNIDemo項目組織結構153
11.3.2 JNI庫API函數的聲明155
11.3.3 JNI函數編程基本過程156
11.3.4 JNI函數參數傳入String157
11.3.5 自定義JNI函數指針類型158
11.3.6 調用Java函數159
11.4 小結160
第12章 CLibrary機制161
12.1 isolate161
12.1.1 錯誤的多線程調用:簡單複用isolate162
12.1.2 正確的多線程調用:為每個線程新建isolate163
12.1.3 正確的多線程調用:映射線程與isolate164
12.2 WordBase接口系統165
12.3 註解系統167
12.3.1 @CContext註解167
12.3.2 @CEntryPoint註解172
12.3.3 @InvokeCFunctionPointer註解173
12.4 正確釋放內存173
12.5 小結175
第三部分 靜態編譯實戰
第13章 靜態編譯Serverless應用到阿裡雲函數計算平臺178
13.1 阿裡雲函數計算平臺178
13.2 靜態編譯基於Micronaut的Spring-Boot示例項目179
13.3 部署到阿裡雲180
13.4 性能比較180
13.5 小結182
第14章 native-image-agent的實現183
14.1 native-image-agent與JVMTI183
14.2 實現靜態編譯的JVMTI Agent185
14.3 native-image-agent的可用選項188
14.4 小結190
第15章 調試191
15.1 編譯debug版本的native image191
15.2 使用GDB調試native image193
15.2.1 啟動GDB194
15.2.2 增加函數斷點194
15.2.3 GDB TUI分屏界面195
15.2.4 單步調試197
15.2.5 查看Java對象的值197
15.3 小結199
