GraalVM引入了對COBOL的支援,擴大了支援範圍,一個執行時可以支援多種可互操作的語言。這就把可以在多個平臺上執行的Java(語言)的範圍擴充套件到了可以在多個平臺上執行多種語言的Java(虛擬機器)。
這項工作是Christoph Schobesberger在10月份透過他在JKU Linz大學的研究工作介紹的。該技術的工作原理是透過GraalVM與LLVM位碼的整合。透過LLVM的路徑不同於HotSpot實現對替代語言如Nashorn(Java 8中的JavaScript,後來被廢棄)和JRuby(一個活躍的外部專案)的支援方式。HotSpot實現的目標是Java位元組碼和JSR-292(動態語言)及其後續的JIT最佳化,而像TruffleRuby這樣的GraalVM語言則在LLVM層面追求最佳化,以實現原生超前編譯。GraalVM除了原生編譯外,還提供了HotSpot模式。
多語言(polyglot)程式設計的作用是GraalVM的一個目的,開發者可以建立可互操作的軟體,這些軟體是原生編譯的,連線到另一種語言的庫,這些庫提供了好處,但作者可能不理解。以COBOL為例,用GnuCobol編譯的應用程式可以讓懂Java的開發者參與。這種橋樑可以幫助彌補維護可能用COBOL編寫但難以維護的舊軟體系統的差距。IBM系統媒體表示,每年約有10%的COBOL工程師退休,平均年齡為58歲,可以改變系統與Java的互操作性。IBM還被指在各種年齡歧視訴訟中鼓勵員工強制退休。
除了COBOL整合之外,GraalVM還維護著一個活躍的多語言列表,其中有執行程式的指令。這個列表包括其他語言。JavaScript/Node、Python、R、Ruby和WebAssembly。這項工作大部分源於Thomas Wurthinger等人的研究,他們在2015年的ACM論文 "High-performance cross-language interoperability in a multi-language runtime "中描述了這些研究。管理跨語言執行的一個關鍵能力是能夠看到並可視化這些語言的執行情況,以發現編譯器層面的缺陷。這種視覺化是透過Ideal Graph Visualizer實現的。
雖然GraalVM及其多語言模型的吸引力可以吸引開發者,但AOT編譯的主要好處並不總是能達到降低資源和成本的預期效果。Payara的一篇部落格文章分析了無伺服器或容器化執行模型上不同工作負載的執行成本。雖然一些應用可能會獲得成本收益,但在某些情況下,基於記憶體需求和應用使用模式,成本收益可能會反向作用。作為一系列的小功能,大多數無伺服器系統使用單一的語言,而不是多語言能力。
一段塵封36年的COBOL程式碼重現天日,還是在施瓦辛格的經典之作《終結者》。
終結者也用COBOL?
電影《終結者》中的一個場景,竟然使用了COBOL程式碼!
所以甲骨文這次幹了個大事. 特別是在聖誕節期間公佈這個, 真的太可以了.
你以為2020年就這樣過去了, 但人們總能得到驚喜