極客時間-左耳聽風-程序員攻略-Java底層知識

Java 字節碼相關

字節碼編程,也就是動態修改或是動態生成 Java 字節碼。Java 的字節碼至關於彙編,其中的一些細節。html

不使用 JVMTI 操做字節碼,而是用一些更好用的庫。這裏有三個庫能夠比較容易地作這個事。java

  • asmtools - 用於生產環境的 Java .class 文件開發工具。
  • Byte Buddy - 代碼生成庫:運行時建立 Class 文件而不須要編譯器幫助。
  • Jitescript - 和 BiteScript 相似的字節碼生成庫。

Byte Buddy,在 2015 年還獲了 Oracle 的 「Duke’s Choice」大獎,其中說 Byte Buddy 極大地發展了 Java 的技術。git

使用字節碼編程能夠玩出不少高級玩法,最高級的仍是在 Java 程序運行時進行字節碼修改和代碼注入。這個方式使用 Java 這門靜態語言在運行時能夠進行各類動態的代碼修改,並且能夠進行無侵入的編程。github

Java Agent 的技術。Java Agent 使用的是 「Java Instrumentation API」,其主要方法是實現一個叫 premain()的方法(嗯,一個比 main()函數還要超前執行的 main 函數),而後把你的代碼編譯成一個 jar 文件。在 JVM 啓動時,使用這樣的命令行來引入你的 jar 文件:java -javaagent:yourAwesomeAgent.jar -jar App.jar算法

更爲詳細的文章能夠參看:「Java Code Geeks: Java Agents」編程

示例項目:jvm-monitoring-agent 或是 EntryPointKR/Agent.java。多線程

若是想用 ByteBuddy 來玩,你能夠看看這篇文章 「經過使用 Byte Buddy,便捷地建立 Java Agent」。oracle

學習如何用 Java Agent 作監控,項目 Stage Monitor。jvm

JVM 相關

Java 底層知識中另外一個很是重要的內容——JVM。jsp

JVM 的規格說明書,Java 8 的, The Java Virtual Machine Specification Java SE 8 Edition

中文翻譯,GitHub Repo - 「java-virtual-machine-specification」。

JVM Anatomy Park JVM 解剖公園,帶你一點一點地把 JVM 中的一些技術解開。

學習 Java 底層原理還有 Java 的內存模型,官方文章是 JSR 133。還有馬里蘭大學的威廉·皮尤(William Pugh)教授收集的和 Java 內存模型相關的文獻 - The Java Memory Model

內存方面兩篇文章。

  • The JSR-133 Cookbook for Compiler Writers,解釋了怎樣實現 Java 內存模型,特別是在考慮到多處理器(或多核)系統的狀況下,多線程和讀寫屏障的實現。
  • Using JDK 9 Memory Order Modes,講了怎樣經過 VarHandle 來使用 plain、opaque、release/acquire 和 volatile 四種共享內存的訪問模式,並剖析了底層的原理。

垃圾回收機制 《The Garbage Collection Handbook》,這本書很是全面地介紹了垃圾收集的原理、設計和算法。可是這本書也是至關難啃的。中文翻譯《垃圾回收算法手冊

調優垃圾回收, Garbage Collection Tuning Guide ,它是 Hotspot Java 虛擬機的垃圾回收調優指南。

Quick Tips for Fast Code on the JVM 裏面有寫出更快的 Java 代碼的幾個小提示。

小結

Java 最黑科技的玩法就是字節碼編程,也就是動態修改或是動態生成 Java 字節碼。Java 的字節碼至關於彙編。

通常不使用 JVMTI 操做字節碼,而是用一些更好用的庫,如 asmtools、Byte Buddy 和 BiteScript 等。使用字節碼編程能夠玩出不少高級玩法,其中最高級的玩法是在 Java 程序運行時進行字節碼修改和代碼注入。

Java Agent 技術更好地實現這種高級玩法。

JVM 也是學習 Java 過程當中很是重要的一部份內容。閱讀JVM 的規格說明書是系統瞭解 JVM 規範的最佳文檔, JVM Anatomy Park 系列文章,也很是值得一讀。

Java 的內存模型和垃圾回收機制,出了如何調優垃圾回收方面的資料。

相關文章
相關標籤/搜索