最近在研究ApkTool源碼的時候發(fā)現(xiàn)main函數(shù)的第一句就有點一頭霧水,然后去網(wǎng)上查了一下雌续,感覺大部分都沒有說清楚為什么要這么用斩个,也許是我沒有理解透吧,現(xiàn)在記錄一下驯杜。
// headless
System.setProperty("java.awt.headless", "true");
例如下面這個博客的內(nèi)容好像就是翻譯了一下官方文檔部分內(nèi)容
https://www.cnblogs.com/frankyou/p/9528048.html
摘錄如下:
1. 什么是 java.awt.headless?
Headless模式是系統(tǒng)的一種配置模式做个。在系統(tǒng)可能缺少顯示設(shè)備鸽心、鍵盤或鼠標(biāo)這些外設(shè)的情況下可以使用該模式。
2. 何時使用和headless mode居暖?
Headless模式雖然不是我們愿意見到的顽频,但事實上我們卻常常需要在該模式下工作,尤其是服務(wù)器端程序開發(fā)者太闺。因為服務(wù)器(如提供Web服務(wù)的主機(jī))往往可能缺少前述設(shè)備糯景,但又需要使用他們提供的功能,生成相應(yīng)的數(shù)據(jù)省骂,以提供給客戶端(如瀏覽器所在的配有相關(guān)的顯示設(shè)備蟀淮、鍵盤和鼠標(biāo)的主機(jī))。?
3. 如何使用和Headless mode钞澳?
一般是在程序開始激活headless模式怠惶,告訴程序,現(xiàn)在你要工作在Headless mode下轧粟,就不要指望硬件幫忙了策治,你得自力更生,依靠系統(tǒng)的計算能力模擬出這些特性來:System.setProperty("java.awt.headless", "true");
官網(wǎng)地址傳送門:https://www.oracle.com/technical-resources/articles/javase/headless.html
一輪分析下來我理解如下:
當(dāng)我們寫的java程序本身不許要顯示awt界面兰吟,例如命令行程序通惫,后端程序。
為了提高計算效率和適配性我們可以使用這種模式混蔼,關(guān)閉圖形顯示等功能可以大大節(jié)省設(shè)備的計算能力履腋,而且對一些本身沒有相關(guān)顯示設(shè)備的機(jī)器也能適配,程序也可以正常運(yùn)行拄丰。
如理解有誤還請大家指正府树!