是否有JavaScript的本地機器代碼編譯器? 我不是在談論虛擬機。 如果它不存在可以這樣做嗎?
我想知道是否可以編譯爲二進制由於語言的動態性質。是否有JavaScript的本地機器代碼編譯器?
回答
據我所知,JavaScript沒有靜態編譯器。這在理論上是可行的;然而,JavaScript的靜態編譯需要非常重量級的運行時來支持其所有功能(例如動態類型和eval)。作爲一個小問題,當需要靜態編譯Python(另一種動態語言)時,開發人員最終創建了一種語言,該語言是Python的一個非常有限的子集(稱爲RPython),沒有使用某些Python更動態的特性,那是能夠靜態編譯的。
如果你問這是爲了從JavaScript代碼創建一個獨立的可執行文件,我確定必須有一個包裝器,它基本上會創建一個包含腳本和嵌入式JavaScript VM的可執行文件(不幸的是,不知道什麼)。
這在理論上是可行的,但會涉及很多運行時支持包(甚至是一個完整的Javascript編譯器或解釋器來支持eval
)。
你正在尋找一個真正的本地代碼編譯器,或者你在尋找可以將Javascript代碼和運行時一起捆綁到一個可執行二進制文件中的東西嗎?
我正在尋找一個實際的本地代碼編譯器 – 2009-07-13 07:49:03
這絕對是可行的,但唯一的辦法我知道如何在目前這樣做是一個兩步的過程......
- 編譯使用Mozilla Rhino JSC的JavaScript到Java。
- 使用類似GNU's GCJ的方式將生成的java類文件編譯爲可執行文件。
爲什麼你想要?你期望找到什麼優勢?
這只是出於好奇。 我很喜歡javascript。 – 2009-07-13 07:51:27
我相信微軟有一個可下載的Jscript(「微軟的JavaScript」)編譯器
如果您有Windows: 使用打開命令提示符 : 如果你寫一個javascript文本文件,你可以通過編譯CD才能到文本文件目錄 (如果您有Windows)輸入:C:\ WINDOWS \ Microsoft.NET \框架\ V2.0.50727 \器jsc.exe textfile.js
否則: 下載一個JScript編譯器 鍵入jscript編譯器的目錄,然後鍵入javascript tex的名稱t文件
如果您不想輸出整個目錄名稱給編譯器,則可以添加環境變量。
這傢伙更好地解釋它: http://www.phpied.com/make-your-javascript-a-windows-exe/
我個人認爲這是真的很酷。我只希望有更多的文檔。
我很確定那是你在找什麼,但我有點新。
請注意,所有這些解決方案都DOM
較少,所以沒有像angular.js
或jquery
庫,只有underscore.js
/lodash
跟進到Falaina的回答, PyPy確實有一dist for JavaScript
另外,Appcelerator Titanium有一個js
>JavaBit
>android
谷歌的V8引擎解釋JavaScript的編譯成機器碼。這個特性用於我爲node.js和io.js項目編寫的EncloseJS編譯器。
Adobe AIR針對iOS的AOT編譯器靜態編譯JavaScript超集稱爲Actionscript 3.0,直到ABC字節碼,然後通過LLVM編寫機器代碼。如果您要編寫不帶類的AS3代碼並且沒有類型註釋,那麼它本質上應該是JavaScript,然後編譯器會很樂意將其編譯爲機器代碼。可悲的是,這不是開源軟件,你不能訪問任何DOM(許多人想到JavaScript時會想到它),因爲它本質上是在Flash Player實例中運行的。
- 1. 是否有編譯爲機器代碼的C C++ C#編譯器
- 2. 是否有Windows腳本編寫主機代碼的分析器?
- 3. 是否有可能將.NET IL代碼編譯爲機器代碼?
- 4. VB6編譯的代碼機器是否特定?
- 5. 編譯器是否只編譯可以執行的代碼?
- 6. 編譯器中是否生成三個地址代碼?
- 7. 是否有可能將C代碼編譯爲Javascript代碼?
- 8. Microsoft Visual C++ Express編譯器是否編譯C代碼?
- 9. Fortran 95編譯器是否可以編譯Fortran 77代碼?
- 10. ILSpy反編譯器的這一行代碼是否有效?
- 11. lesscss javascript編譯器中的死代碼
- 12. 是否可以查看由JVM熱點編譯器生成的機器代碼?
- 13. TeamCity是否可以在本地機器上運行源代碼?
- 14. Python:編譯成BYTECODE編譯爲機器代碼的好處?
- 15. 是否存在具有本地化編程語言版本的編譯器?
- 16. 手機是否有編譯器模擬器?
- 17. Titanium Mobile是否將JavaScript轉換爲本地Java或Objective C編譯的代碼?
- 18. 機器人的System.gc本地代碼
- 19. 是否將C#代碼編譯爲本機二進制文件?
- 20. 是否有可能使用pypy將Java字節碼編譯爲本地代碼?
- 21. 指定編譯器NVCC用於編譯主機代碼
- 22. 用C++編譯器編譯c代碼
- 23. 是否像C++代碼一樣快地編譯python代碼?
- 24. JavaScript字節碼編譯器?
- 25. 是否有Groovy GPath編譯器的XPath?
- 26. 是否有可能編寫被GWT編譯器忽略的代碼?
- 27. 是否可以在Windows機器上編譯Linux的CUDA C代碼?
- 28. 使用閉包編譯器自動編譯javascript源代碼
- 29. 衍生代碼編譯器
- 30. SML編譯器源代碼?
你說的是JScript.NET嗎? – Shimmy 2009-07-13 07:52:33
我會問一個小小的說明:通過「本地機器代碼編譯器」,你的意思是一個編譯器,它需要一個JavaScript程序並生成一個可執行文件(靜態編譯),或者你的意思是將JavaScript代碼轉換爲機器代碼(例如Tracemonkey(Firefox)和V8(Chrome)中的JIT編譯器將從當前正在執行的JavaScript中生成本地機器代碼,因此它不必多次解釋它們。) – Falaina 2009-07-13 08:15:30
我要求進行靜態編譯。 – 2009-07-13 09:18:43