我的web項目中有超過2000個JS文件需要格式化。我知道Google的閉包編譯器擅長這樣做,實際上我正在使用它來爲整個JS文件的格式編寫一個工具。我的要求是格式化的JS文件將在同一個地方替換原來的文件。任何用於格式化JavaScript文件的高性能Java API?
我寫了一個Java程序來查找每一個JS文件中的web項目,當發現某文件,一個線程將負責執行命令
java -jar compiler.jar --js C:/project/xyz/abc.js --js_output_file C:/project/xyz/abc.js`
和原來的JS文件(ABC .js)將被格式化。
但我發現這種方式不是那麼高效。事情是我使用ExecutorService來運行線程,每個線程花費大約10秒來爲文件進行格式化。所以你可以想象完成超過2000個文件需要多長時間。
下面是代碼片段。
ExecutorService executor = Executors.newFixedThreadPool(10);
// ...
for(File jsFile : root.listFiles()) {
Runnable formatThread = new FormatThread(jsFilePath.getAbsolutePath());
//execute command "java -jar compiler.jar in run(), handled by ProcessBuilder
executor.execute(formatThread);
}
我曾嘗試增加線程池大小,但CPU和內存很快在程序啓動後消耗很高。
我的問題是
- 什麼是格式化等一大批由Java編寫的應用程序文件的有效方法?
- ExecutorService在我的程序中的用法是否正確,適合我的用例?
- 任何其他Java API可以快速格式化Javascript文件?其實我需要的只是刪除空行和用戶評論,但不需要壓縮文件。
你真的不應該合併多個不相關的問題 – byxor
'其實我需要的是簡單地刪除空行和用戶comments'聽起來並不像代碼格式化了良好的條件。 – Azodious
我正在研究一個名爲'crem'的項目,它可以讓您從源代碼中刪除評論。到目前爲止,Java是唯一支持的語言,但我還沒有發佈,並且不想在這裏做廣告。你可以在github上找到它。 – byxor