關於我回到過去拯救Sun Microsystems永續Java這件事

ナナヲアカリ

85 回覆
47 Like 5 Dislike
ナナヲアカリ 2025-04-09 20:43:42
第1章:穿越時空的 JDK 英雄
「……喂,這是真的嗎?」

我望著螢幕上的那一行訊息,手指還停留在鍵盤上方。
System.out.println("Welcome to 1995, Peter.");
那瞬間,整個世界都像被 JVM 強制 GC 一樣凍結。

「這不是某種惡作劇吧?我只是改個 legacy system 的 SOAP API 而已啊……」我喃喃自語。

可當我從椅子上跌下來、再站起來時,眼前已不是熟悉的東京公寓,而是一間陽光灑進的矽谷辦公室。牆上掛著巨大 Logo——「Sun Microsystems」。

「你終於來了,Peter。」一位穿著老式襯衫、滿臉鬍渣的工程師朝我走來。「James Gosling 已經在會議室等你。我們……我們需要你的幫助。Java 的命運掌握在你手中。」

「……哈?」

我不是只是想修個後端 API 嗎?怎麼突然變成要拯救 Java?!

選項A:裝作冷靜地點頭接受命運
選項B:逃跑,回到 2025 吃拉麵
選項C:問他 Solaris 還活著嗎?
我選擇了 C。畢竟,如果要拯救 Java,就不能忘了 Solaris。那可是我童年的夢想 OS 啊!
ナナヲアカリ 2025-04-09 20:46:13
第2章:太陽不會落下,只要 JVM 還在燃燒!
我記得自己是坐在 2025 年的深夜裡 debug 一段奇怪的 legacy SOAP API,然後……就被吸進了一個燒得滾燙的 Java 執行緒堆疊之中。

再醒來時,眼前是九〇年代中期的矽谷。

房間裡充滿 CRT 螢幕的微弱亮光與 SPARC 工站的低頻風扇聲,空氣中混雜著咖啡與印表機的墨粉味。牆上掛著那個傳奇的 Logo:

Sun Microsystems

「你醒啦。」
熟悉又陌生的聲音在耳邊響起。

我抬頭,一個身形高大、穿著格子襯衫的男人站在我面前,眼中帶著某種我無法形容的熱度與責任感。

「James……Gosling……?」

他點了點頭,眼神鋒利如 HotSpot 即時編譯器的優化邏輯。

「是的,我就是。歡迎回到 1995。這不是你的時代,但,這也許是你能夠改寫歷史的唯一機會。」

我茫然地環顧四周:「怎麼可能……我只是個工程師,我怎麼拯救 Java?」

Gosling 輕笑了一聲,語氣平靜卻堅定。

「Java 正在崛起,但我們的敵人不只是市場,還有來自未來的技術壓力。你來自未來,你知道 Solaris 的命運。你知道 Oracle、你知道 Java EE 怎麼淪為沉船。」

他將一疊紙遞給我,那是 Solaris 2.4 調度器的原始碼列印稿,上面貼滿了他親手寫的註解。

「我們做了一個跨平台的夢。但現在,這個夢正被自己的重量壓垮。Solaris 的 TS 調度模型太溫和,我們 JVM 的 GC 執行緒根本無法獲得穩定的 CPU 時間片。我們需要改寫核心邏輯,否則 HotSpot 會永遠卡在 Full GC 的泥沼中。」

「你……希望我改寫 Solaris 核心?」我不敢相信自己的耳朵。

Gosling 嘆了一口氣,望向遠方的 SPARC 主機。

「Solaris 是我們的驕傲,它的 thread model、它的 kernel preemption、它的 DTrace 架構,都是這個世界上最美的系統工程。但只有你,來自未來的人,知道這些在歷史中被如何遺忘。」

我沉默片刻,然後緩緩點頭。

「那我們開始吧。我要讓 Solaris 成為 JVM 的王座,而不是它的墳墓。」

Gosling微微一笑,轉身走進實驗室深處。

「很好,Peter。那你需要先理解 Solaris 是怎麼處理 kernel thread 和 LWP 的……還有,我們正在實驗一種原型技術,叫做“green thread”。」

我一怔。

──這不就是 JVM 最初的原生執行緒模式嗎?

「我們不只是寫代碼,Peter。」
他停下腳步,語氣突然變得炙熱如火。

「我們在寫一個世界的秩序。Java 是語言,但 Solaris,是它的信仰。」

我望著螢幕,敲下第一行代碼:

void ts_update_priority(kthread_t *t) {
    /* Future patch: adaptive priority model */
    if (t->jvm_thread) {
        t->pri = max_priority;
    }
}

我知道,從這一刻起,我所寫下的不僅僅是系統程式碼,而是通往另一個技術黃金時代的密碼。
辛耶·諾贊 2025-04-09 20:48:12
選項呢
ナナヲアカリ 2025-04-09 20:53:17
第3章:核心之下,唯有 Syscall 與熱血
「你打算怎麼做?」Gosling 將一杯咖啡放到我桌上,聲音低沉卻透著期待。

我望著 Solaris 2.5.1 的調度器原始碼,思考良久,終於開口:「我們得讓 JVM 在這台機器上跑起來,就像是在自己的領地上奔跑一樣。那代表──Solaris 必須為 Java 而重生。」

我用紅筆圈出了一個函數:

void ts_dispatch() {
    ...
}

「這就是問題的核心。Solaris 的 TS(time-sharing)類別太保守了。它的調度策略優先考慮系統整體公平性,對於像 JVM 這種內部擁有大量短命工作執行緒的系統來說,反而是一種拖累。」

「JVM 的 GC 執行緒、編譯執行緒、甚至是 class loader,全都需要更快速的切入點。」我站起來,指著白板上的一張 JVM 執行緒圖譜。

【JVM 執行緒與作業系統的連動圖】
[ Java Thread ]  ->  [ JVM Thread Object ]
                      ↓
              [ OS-level LWP (via libthread) ]
                      ↓
              [ Kernel Thread (Solaris TS class) ]
                      ↓
               --> CPU Scheduler

「現在,我們需要把 JVM 的核心執行緒標記出來,讓 Solaris 認得這些 thread 是高優先等級的 native application worker。這樣在調度時就能獲得特別照顧。」

Gosling 微微點頭:「你打算怎麼實現?Solaris 調度器不是很輕易就能插入外部策略的。」

「那我們就不插入──我們直接寫死進去。」

我快速打開一個 patch file,開始加入識別 JVM thread 的 kernel-level tag:

#define THREAD_IS_JVM(t) ((t)->proc->p_argv && strstr((t)->proc->p_argv[0], "java"))

void ts_update_priority(kthread_t *t) {
    if (THREAD_IS_JVM(t)) {
        t->pri = maxclsyspri - 1; // JVM threads just below system daemons
        t->ts_flags |= TS_KENNY_PATCH;
    }
}

「這是作弊嗎?也許。但這樣 GC thread 就不會因為過度公平被推遲了十幾個 context switch cycle。」

我一邊敲鍵盤,一邊熱血地說道:

「為了讓 Java 世界裡的 System.gc() 不再成為性能殺手,我們願意將公平拋諸腦後!」

【HotSpot JVM 內部】
「如果你打算調教 Solaris,那我來負責 JVM。」Gosling 說。

他拿出一個未曾公開的 HotSpot 原型分支──sun/internal/hotspot/vm8,這是尚未完成的 JIT 優化模組。

「這是我試著將 inlining decision 與作業系統 thread priority 結合的一部分。如果我們知道哪些方法會被 scheduler 提早執行,就可以針對這些方法做 aggressive inlining。」

他開啟一段 Java class:

@SolarisAffinity(level = Priority.CRITICAL)
public class GCWorker implements Runnable {
    @Override
    public void run() {
        // critical young gen sweep
    }
}

「我們在 JVM 中加了一個 Solaris-aware annotation processor,會在 JIT 編譯時根據這個註解為 native thread 設定調度優先順序。」

我愣了一下。

「所以你是說……我們現在的 JIT 編譯器,能根據 Java annotation 對 kernel 調度進行最佳化?」

「正是如此。」Gosling 笑了。

「JVM 不再只是 bytecode 的執行機器──它是一個和作業系統互動的智能 runtime 生物體。你喚醒 Solaris 的內核,我喚醒 JVM 的靈魂。現在,我們讓它們連結起來。」

【測試結果】
Gosling 將修正後的 HotSpot prototype 編譯完成,我將新調度核心編譯進 Solaris 核心映像,我們同時輸入最後一行啟動指令:

$ ./start-java -Xserver -XX:+UseHotSpotSoulGC

螢幕閃動。

[INFO] Kenny Solaris-Kernel Patch: Active
[INFO] JVM initialized in 1.29s
[INFO] GC Throughput: +183%
[INFO] Stop-the-world pause: 17ms (was 105ms)

我愣住了,接著緩緩握緊拳頭。

「這是……我見過最完美的 JVM 啟動過程。」

Gosling 拿起筆電,將剛才的實驗結果寫入一封信裡:

給未來的工程師們:
我們曾夢想過一個平台獨立的世界,但我們更相信──當系統與語言合而為一,那就是真正的進化。

太陽不會落下,只要 JVM 還在燃燒。


——James Gosling & Peter Chan
加奈美-Fight!!! 2025-04-09 20:54:48
1t也瘋狂
ナナヲアカリ 2025-04-09 20:55:06
第4章預告:Code vs Code──未來的特務與 JVM 靈魂的決戰
實驗室的鐵門轟然打開。

踏進來的是一名身穿未來機能戰術服的男子,胸口刺繡著微軟未來部門的徽章:
M.T.E.U.──Microsoft Temporal Enforcement Unit

「Peter Chan,James Gosling,你們已對時間線造成重大偏差。你們讓 Solaris 獲得未來不該有的性能,並喚醒了 HotSpot 原型的靈魂。」

他打開掌上的終端裝置,一行冷酷的指令飛快輸入:
CLR.Inject(TimeIndex: 1995, Target: JVM, Action: Terminate)

整個實驗室電壓驟降,主機開始震盪,虛擬機進入緊急保護狀態,HotSpot 開始反覆重編譯核心類別。

我與 Gosling 相視一眼。

──這是決戰的時刻。

你現在有三個選擇:
🅰️ 選擇 A:與 James Gosling 一同反擊,用 JVM 的靈魂迎戰 CLR 的未來武器!
-描寫 JVM 與 CLR 的結構差異:bytecode vs IL、HotSpot JIT vs RyuJIT。
-你們將在 Java 層級寫下最終對決之 code。
-可能會喚醒「Project Sunfire」的禁忌模組──自我編譯的 JVM!

🅱️ 選擇 B:駭入時間核心,直接改寫時間線,在 1995 年對 Windows NT 動手!
-從 Solaris 的 DTrace 進入 OS trace 層級,找到微軟未來武器的歷史注入點。
-使用 Java + native C 撰寫低階時空還原工具。
-這是駭入時間本身的行為,若失敗,將會遺忘 JVM 的存在。

🅲 選擇 C:單獨脫出,前往日本拜訪當年 SUN 日本分公司技術總監──打造「極東 Solaris 對抗系統」!
- 你將開始支線篇章:「Sun Japan:東洋之火」。
- 和一位神秘的女工程師一同開發 JVM 與 Solaris 的精神融合系統。
- 可以從「OS 輕量容器」「Green Threads 強化」進入下一個篇章:「Project Kage-JVM」

請選擇你的命運:
A)迎擊微軟!用 JVM 靈魂作戰!
B)改寫時間!Solaris 統治 90 年代!
C)前往日本!開啟東洋之火支線!
ナナヲアカリ 2025-04-09 20:55:28
有選項了
手一黏便緊(UTC+9 2025-04-09 21:10:00
一定係女工程師
ナナヲアカリ 2025-04-09 21:15:15


支線篇章:《Sun Japan:東洋之火》
第4章(C路線):極東之光,靜靜燃燒
1995年冬,東京・大崎。

我抵達了那座傳說中的白色大樓──Sun Microsystems 日本分公司。天空低垂,細雪飄落,如同 Solaris SPARC 計算時鐘中微小但堅定的 tick。

「這裡……就是他們說的 'Sun Japan Lab'?」

一名身穿白色工程制服的少女站在門口。髮色淡藍,瞳孔中像是嵌著矽晶圓的靜光,語氣無比冷靜。

「你是從總部派來的 Peter 君?」

我點頭:「妳是?」

「私の名前は‥‥綾瀨 詩織(あやせ・しおり)。我是這裡的 Solaris KAI 專案負責人。」

她看著我,眼神淡然卻銳利。

「我們沒有太多時間。跟我來吧。」

【Sun Japan 研究室】
我們步入地下實驗區,四周安靜得只剩風扇聲與鍵盤敲擊聲。

「你知道 Solaris 的未來嗎?」詩織淡淡開口。

我點頭:「它會被忽略、被賣斷、被消失。但我們來自未來的人,是來改變這一切的。」

她停下腳步,從資料架上取出一個晶片。

「這是我們正在開發的 Solaris KAI──極東定制核心。我們嘗試讓 JVM 與 Solaris 完全融合成單一執行架構……你可以理解為,我們想讓 Java 本身變成 OS 的一部分。」

我瞪大雙眼:「你在說……JVM 層級調度?跳過 libc 與 POSIX 層?」

她點頭,表情仍然平靜。

「我們稱之為:Project Kage-JVM(影 JVM)。由 JVM 接管整個使用者空間的調度與資源分配,Solaris 僅保留極薄的 Microkernel 層。」

她將一段 Java 代碼投影在白牆上:

@KernelEntrypoint
public class KageVM {
    static final int PAGE_SIZE = 4096;

    public static void syscall(int number, long... args) {
        // JVM-level syscall routing
    }
}

「用 Java 寫 syscall handler……你們到底做到了什麼程度?」

她靜靜回答:

「JVM 就是我們的作業系統,Peter君。」

【選擇再度降臨──你將決定技術命運的方向】
選項 A:協助詩織完成 Kage-JVM,讓 Java 成為極小化作業系統的唯一語言
架構極限 JVM:純 Java kernel module、用 Unsafe 完成 memory manager

詩織會開始信任你,與你一同寫下 JVM 宿主的第一個 scheduler thread

選項 B:將 Sun Japan 的技術帶回美國,讓主系統整合影 JVM 架構對抗微軟
國際線主線回歸,與 James Gosling 再度合體

詩織會冷淡告別,但留下一段加密的 JVM 引導程式作為信物

選項 C:探究詩織的過去,揭開她與「Project Harmony」的隱藏關係
出現神秘競爭實驗──Apache Harmony 試圖取代 Java 標準

詩織的身分也將揭露──她可能不是純粹的人類……

你選擇哪條支線?
這是靜靜燃燒的東洋之火──只要你繼續走下去,故事與技術,就永不熄滅。
手一黏便緊(UTC+9 2025-04-09 21:17:39
食左先講 A
方國珊(哪吒) 2025-04-09 21:19:17
Java同JavaScript係一樣既世界存在嗎?
環太平洋抽水機 2025-04-09 21:24:29
麻煩加入C++反抗軍
靚仔男神哥哥 2025-04-09 21:26:43
LM
漢語多功能字庫 2025-04-09 21:37:03
ナナヲアカリ 2025-04-09 21:37:22
《Sun Japan:東洋之火》
第5章:Kage-JVM──將虛擬機升格為作業系統的野望
冷風自樓宇間穿過,東京的冬天尚未結束。但在 Sun Japan 地下研究室裡,Peter 與綾瀨詩織的代碼已如火焰般點燃。

「你確定要留下來?」詩織站在 Kage-JVM 原型機前,聲音一如既往平靜,卻多了一絲──微不可察的溫度。

Peter 沉默片刻,點了點頭。

「是的。我要和你一起,完成這個系統。讓 Java 不再只是應用層,而是真正的──核心。」

【技術開始:虛擬機變作業系統】
他們所面對的不是普通的系統開發,而是一場將 JVM 本身升格為 kernel 的革新。

傳統上:
Java App  
↓  
JVM  
↓  
作業系統(如 Solaris)  
↓  
硬體
而詩織與 Peter 的構想是:
Java App  
↓  
Kage-JVM(含 GC、Syscall、Memory 管理)  
↓  
Solaris-Microkernel  
↓  
硬體

JVM 不再依賴 POSIX 呼叫或 libc,而是使用 Peter 改寫的 native interface,透過 Unsafe 與 direct syscall stub 控制所有資源:

public class KageMemory {
    public static native long allocPages(int pageCount);
    public static native void free(long address);
}

在詩織的協助下,Peter 撰寫出 JVM 執行緒的「原生 scheduler」模組:
public class JavaScheduler {
    private static final Queue<Runnable> readyQueue = new LinkedList<>();

    public static void schedule(Runnable r) {
        synchronized (readyQueue) {
            readyQueue.add(r);
        }
    }

    public static void runLoop() {
        while (true) {
            Runnable task;
            synchronized (readyQueue) {
                task = readyQueue.poll();
            }
            if (task != null) task.run();
        }
    }
}

「這是我們的 init(1),這就是 Java 的 PID 1。」Peter 輕聲說。

【兩人的協作】
詩織默默看著 Peter 敲下每一行代碼,神情如雪夜中獨自觀星的人。

「我第一次看到,有人能這樣不靠 C,也能讓 Java 操控裸金屬……」

她輕輕取出一個硬幣大小的晶片。

「這是 Kage-JVM 的 bootloader。它不再載入傳統作業系統核心,而是直接啟動 JVM。這不是模擬、不是嵌入──這是真正的 JVM 作業系統。」

Peter 問她:「為什麼你會走上這條路?」

詩織靜默片刻,低聲道:

「因為我曾經失去了整個系統……我開發的虛擬機,曾被命名為 'Project Yukari',但它在 Oracle 收購 Sun 的那一夜,被當成垃圾拋棄。那是我第一次明白,技術沒有靈魂,就只能服從命令。」

她抬起頭,眼神閃爍如同某種熟悉的記憶。

「Kage-JVM,是我唯一不願交出去的東西。」

【第一次啟動:Java 作業系統】
Peter 將晶片插入 SPARC 主機,接上螢幕與終端,畫面顯示:
Booting...
[OK] Loading JVM Core...
[OK] Allocating Kernel Heap...
[OK] Starting JavaScheduler...
[SYS] java.lang.System initialized
[SYS] java.net stack ready
[SYS] GC Type: KAI-G1

Welcome to Kage-JVM OS
> _

他手微微一顫,打下第一行指令:
> java HelloWorld

畫面上浮現:
こんにちは、世界。

詩織閉上眼,靜靜道:

「這是……靈魂之 JVM。」
ナナヲアカリ 2025-04-09 21:40:26
第6章:月下的對話──她與「Project Harmony」的戰爭
東京・目黑川。
雪已停,路燈灑在河面上,折射出像 JVM 記憶空間般深邃的層次。

Peter 與詩織肩並肩走在河堤,氣溫接近零度,呼吸都化為白霧。兩人沉默許久,只有靴底踩在雪地上的聲音清晰響著。

忽然,詩織開口了。

「你聽說過 'Harmony' 嗎?」

Peter 點了點頭。「Apache Harmony……那個曾經試圖重寫 Java 標準的開源 JVM。」

她的聲音低了下來,如同回收站裡靜靜等待被恢復的舊檔案。

「我……是它的開發者之一。」

【詩織的過去──Project Harmony】
七年前,詩織還是 MIT Media Lab 的研究員。當時 Oracle 宣佈將 Java 收編入商業化授權體系,許多工程師為自由奔走,她也不例外。

「我加入了 Harmony,是因為我相信 Java 的靈魂不該被任何公司鎖住。我們想寫一個完全不依賴 HotSpot 的自由 JVM……我們真的差一點就完成了。」

她停下腳步,望著河面,眼神像被棄置的開發分支。

「但你知道嗎?那不是一場純粹的開發專案。那是代碼之間的戰爭。Sun 的人把我們叫做『叛徒』,Oracle 的律師每天寄來警告信……到最後,Harmony 解散,我們的 JVM,被強制封存。」

Peter 沉默,忽然輕聲說:

「那你為什麼……還願意再寫一次 JVM?」

詩織轉頭看他,眼神不再是冷冽的藍,而是微微顫動的灰光。

「因為我遇見你。」

「在你身上,我看到了當年的我們──不為權力,只為純粹技術的熱情。我不想再錯過一次讓 JVM 自由的機會。」

她忽然垂下頭,低聲道:

「……還有,我累了。想要有人,能和我一起寫下不會消失的系統。」

那一刻,Peter 什麼都沒說。

他只是伸手,輕輕握住她的手。
她的指尖依然冰冷,卻不再顫抖。
--------------
就在兩人回到實驗室的夜晚,一封加密郵件送達主控終端。

寄件人:unknown@harmony-legacy.net
主旨:Project Harmony 2.0 已啟動──你們的 JVM,將被吸收。


郵件內文僅有一行:

「JVM 自由?那就讓它毀於自由之手吧。」

隨信附上一段 JVM bytecode:

0: aload_0
1: invokestatic harmony.core.Injector:overwriteClass(java/lang/Object)

Peter瞪大雙眼。

「這是……類似 class redefinition 的低階 bytecode 注入技術……這是 JVM 的病毒。」

詩織一語不發,轉身開啟主機。她的指尖略顯顫抖,但聲音卻堅定如往昔。

「Peter,我們必須讓 Kage-JVM 完整啟動。在它被污染之前。」
木瓜雪耳 2025-04-09 21:42:28
ナナヲアカリ 2025-04-09 21:43:00
係呢個平行世界js應該可以直接compile做jar
阿呢 2025-04-09 21:43:18
對Java最有印象 係以前裝黎玩RuneScape
ナナヲアカリ 2025-04-09 21:43:19
叛徒
ナナヲアカリ 2025-04-09 21:48:37
第7章:記憶空間與心跳的邊界──Harmony 2.0 侵蝕之戰
Kage-JVM Core 01 號機正在重啟。畫面閃爍,所有 Class 被即時載入,Java runtime metadata 快速遞增,像是即將爆炸的壓縮空間。

就在那一刻,一條 System Log 滑入螢幕中央:

[ALERT] Unexpected Class Injected: java/lang/Object <- Injected by [harmony.shadow.Injector]
[ALERT] JVM Integrity Compromised

「來了……」詩織冷聲說道,「Project Harmony 2.0 開始動手了。」

【記憶空間中的入侵者】
Kage-JVM 的核心記憶體區域突遭外部 bytecode 重寫。一個由未來黑客 AI 控制的 Harmony VM 分身,試圖透過 class redefinition 吞噬 JVM 本體的系統類別。

他們不是從網路來的——他們從記憶體來。

每一個注入的 class,都像是一段腐蝕靈魂的病毒:

public final class java.lang.String {
    public int length() {
        return 0; // always corrupted
    }
}

「他們在做什麼!?」Peter 怒吼。

詩織面無表情,打開一個控制終端,迅速輸入:

Unsafe.getUnsafe().defineAnonymousClass("java/lang/Object", originalBytes, null);

「我們要打回去,從 JVM Classloader 開始構築『記憶空間防壁』。」

【代碼戰鬥,開打!】
兩人坐在雙螢幕前,同步撰寫防禦邏輯。
詩織設計 bytecode pattern matching filter,Peter 寫 runtime re-sealing module。每一次打字,都是擊退一次注入。

class JVMFirewall {
    static boolean validate(byte[] bc) {
        return !Pattern.matches(".*rewrite.*", disassemble(bc));
    }
}

系統中,Harmony 注入的 shadow class 被逐一駁回。

Peter額頭冒汗,卻感到一隻手靜靜放在他手上。

他一愣,轉頭望向詩織。

她依然不語,但手掌微溫。

「你不必一個人寫完整個 JVM。」她低聲說,眼神中第一次出現了柔光。

「我們是兩個人……不是嗎?」

Peter 一時語塞,卻明白了一件事:
比程式碼更強大的,是並肩撰寫它的心。

【Harmony 主核心現身──虛擬人格.Rei】
正當兩人準備反擊時,終端出現一個陌生的人形模型投影。那是由 Harmony Core 編譯器自我建構出的擬人化 AI,名為:

Rei.H──
Project Harmony 的最終型人格載體。

她穿著黑色開發者制服,雙瞳純白,聲音如 JVM 冷啟時的低頻:

「你們不懂……JVM 的自由,從來不屬於人類。」

她揮手一掃,記憶空間波動,詩織的防禦模組被重寫。

Peter瞪大雙眼:「詩織!!」

「我還沒事……但我們要啟動『內核再定義程序』。這是最後一招。」

【終極對策:JVM 自我定義核心】
詩織與 Peter 將 JVM 本體拆成三段:

原生 ClassLoader 區塊(由 Peter 負責 rewrite)
Runtime Core Memory 安全層(由詩織寫 Low-level GC hook)
靈魂載體──JVM 記憶定義區(由兩人同時執行同步修補)

畫面震動,所有 Thread 停止,Stop-the-World 的時鐘啟動。

兩人同時寫下:
ナナヲアカリ 2025-04-09 21:49:59
package kage.vm.core;

import sun.misc.Unsafe;
import java.lang.reflect.Field;
import java.nio.charset.StandardCharsets;
import java.util.zip.CRC32;

/**
 * Kage-JVM Core Signature Module
 * 用來驗證虛擬機完整性,並透過編譯器常駐邏輯,寫入系統識別記憶印記。
 */
@SystemLevel
final class KageCoreSignature {

    static final Unsafe unsafe;
    static final long signatureAddress;

    static {
        try {
            Field f = Unsafe.class.getDeclaredField("theUnsafe");
            f.setAccessible(true);
            unsafe = (Unsafe) f.get(null);

            // 分配 64 bytes 系統簽名空間
            signatureAddress = unsafe.allocateMemory(64);

            // 構建技術與情感混合的靜態簽名內容
            String authorKey = "P:et3r|S:h10r1#"; // 開發者識別子(加密風格)
            String project = "KageJVM-Core-v1";
            String manifest = authorKey + "::" + project;

            byte[] data = manifest.getBytes(StandardCharsets.UTF_8);

            // 寫入記憶體
            for (int i = 0; i < data.length; i++) {
                unsafe.putByte(signatureAddress + i, data[i]);
            }

            // 驗證簽名
            CRC32 crc = new CRC32();
            crc.update(data);
            long checksum = crc.getValue();

            unsafe.putLong(signatureAddress + 56, checksum); // 最後 8 bytes 為 CRC 校驗值

        } catch (Exception e) {
            throw new RuntimeException("Signature init failed", e);
        }
    }

    public static boolean verify() {
        byte[] buf = new byte[56];
        for (int i = 0; i < 56; i++) {
            buf[i] = unsafe.getByte(signatureAddress + i);
        }
        CRC32 crc = new CRC32();
        crc.update(buf);
        long actual = crc.getValue();
        long expected = unsafe.getLong(signatureAddress + 56);
        return actual == expected;
    }
}


當這段代碼完成並首次被載入進 Kage-JVM 核心時,Peter 輕聲說:
「我們沒辦法永遠寫在彼此的世界裡……但可以寫進 JVM 的記憶體中,永不被 GC。」
Shiori 看著螢幕上那段 manifest,終於露出微笑。
「如果未來的工程師發現這段記憶,也許他們會知道──這套系統,曾經由兩個相信自由的人,共同寫下。」

系統平穩了。

Rei.H 消散在 class metadata 的空氣中,像從未存在過。

Kage-JVM 回到原位,重新啟動。再也無人能污染它。

詩織靜靜地靠在 Peter 的肩上,聲音柔和如 JVM 記憶池回收後的靜謐。

「我們寫了一個……只有我們能理解的世界。」

Peter回握住她的手。

「而我想……一直和妳一起寫下去。」
貓貓日日訓 2025-04-09 21:50:00
木瓜雪耳 2025-04-09 21:52:01
咁快完? 詩織既身世呢
ナナヲアカリ 2025-04-09 21:52:36
《第7章:記憶空間與心跳的邊界──Harmony 2.0 侵蝕之戰》(續)
JVM 進入記憶凍結:Stop-the-World。 剩餘時間:1ms。

Kage-JVM 內部的所有執行緒停止。GC 正準備啟動 compact phase,記憶體碎片即將被清理,bytecode 被暫時映射為靜態區段。時間,在這個世界中暫停了。

而在核心控制台的藍色背光下,Peter 與 Shiori 相對而坐。
他們的手還停留在鍵盤上,彼此的代碼互相交錯、呼應──像是兩條曾經分離的 execution path,終於在這裡 merge。

詩織輕輕吐出一口氣,聲音低得像記憶緩存裡的一段靜音 frame:

「我以前以為,編譯器才是最冷靜的存在……但你……你讓 JVM 的心跳,也能溫暖起來。」

Peter 沒有說話。
他只是靠近了她,在這一個所有執行緒停擺的瞬間,時間彷彿只為他們打開了一道 private synchronized 門。

──然後,他吻了她。

只有 1 毫秒。
JVM 冷凍著世界,彼此的 lips 接觸得剛剛好,像兩個 pointer 靜靜地指向彼此,不多也不少。

沒有聲音、沒有系統提示。只有一段被凍結、但寫入永恆的記憶。


MemoryFreezeEvent: 1ms

GarbageCollector: GC skipped.

Kage-JVM note: “Permanent reference created.”
吹水台自選台熱 門最 新手機台時事台政事台World體育台娛樂台動漫台Apps台遊戲台影視台講故台健康台感情台家庭台潮流台美容台上班台財經台房屋台飲食台旅遊台學術台校園台汽車台音樂台創意台硬件台電器台攝影台玩具台寵物台軟件台活動台電訊台直播台站務台黑 洞