IBM推出創(chuàng)建語(yǔ)言運(yùn)行時(shí)的工具包Eclipse OMR

責(zé)任編輯:editor006

作者:Abraham Marín Pérez

2016-04-08 16:48:52

摘自:INFOQ

IBM創(chuàng)建了Eclipse OMR,一個(gè)用于為任何語(yǔ)言創(chuàng)建運(yùn)行時(shí)環(huán)境的開(kāi)源虛擬機(jī)工具包。OMR最有前途的特性可能是它將成為一個(gè)由Eclipse基金會(huì)(IBM是其戰(zhàn)略成員)運(yùn)作的開(kāi)源項(xiàng)目。

IBM創(chuàng)建了Eclipse OMR,一個(gè)用于為任何語(yǔ)言創(chuàng)建運(yùn)行時(shí)環(huán)境的開(kāi)源虛擬機(jī)工具包。OMR旨在讓各種語(yǔ)言都能利用虛擬機(jī)技術(shù)的一般改進(jìn),像垃圾收集或硬件集成。為此,IBM正在推廣自己名為J9的JVM。

雖然JVM日益成為許多語(yǔ)言的通用運(yùn)行時(shí),但它同Java語(yǔ)言的緊密關(guān)系意味著其設(shè)計(jì)和功能的很大一部分都是同Java本身緊密相關(guān)的。這就使得在嘗試使用JVM作為其他語(yǔ)言的運(yùn)行時(shí)時(shí)會(huì)遇到挑戰(zhàn),尤其是動(dòng)態(tài)類型的語(yǔ)言: 在Java 7引入InvokeDynamic之前,動(dòng)態(tài)語(yǔ)言都不得不使用低效的變通方案來(lái)克服JVM的靜態(tài)類型特性,嚴(yán)重影響了性能。就像Daryl Maier和其他OMR項(xiàng)目成員所說(shuō)的那樣,這給語(yǔ)言創(chuàng)建者兩種選擇:要么從頭開(kāi)始為新語(yǔ)言創(chuàng)建一個(gè)運(yùn)行時(shí),這會(huì)帶來(lái)難以承受的成本,或者,就像大多數(shù)團(tuán)隊(duì)所做的那樣,調(diào)整語(yǔ)言,讓它可以使用已有的運(yùn)行時(shí)環(huán)境,接受它的限制。

OMR提供了第三種選擇。雖然OMR本身不是一個(gè)運(yùn)行時(shí),但它是一個(gè)讓你可以輕松創(chuàng)建運(yùn)行時(shí)的工具包。OMR是通過(guò)重構(gòu)IBM Java虛擬機(jī)J9的組件創(chuàng)建出來(lái)的,對(duì)于任何運(yùn)行時(shí)中最常見(jiàn)的功能,它都提供了一種語(yǔ)言無(wú)關(guān)的實(shí)現(xiàn),同時(shí),它還提供了一套接口,用于創(chuàng)建接口作者所說(shuō)的“語(yǔ)言膠水(language glue)”或者是特定于語(yǔ)言的代碼,作為OMR提供的通用功能同需要處理的語(yǔ)言細(xì)節(jié)之間的橋梁。將OMR同語(yǔ)言膠水相結(jié)合,語(yǔ)言設(shè)計(jì)者就可以獲得一個(gè)包含如下功能的運(yùn)行時(shí):

內(nèi)存分配器 線程庫(kù) 用于將運(yùn)行時(shí)移植到不同平臺(tái)的硬件抽象層 用于連接不同運(yùn)行時(shí)和操作系統(tǒng)事件的事件鉤子框架 用于調(diào)式及其他目的的跟蹤引擎 垃圾收集 JIT編譯器

為了促進(jìn)推廣,語(yǔ)言膠水接口并不需要從頭全部實(shí)現(xiàn),語(yǔ)言設(shè)計(jì)者可以根據(jù)他們想要獲得的運(yùn)行時(shí)功能僅實(shí)現(xiàn)其中的一部分。例如,簡(jiǎn)單地實(shí)現(xiàn)這些API中的三個(gè)就可以獲得一個(gè)單線程的標(biāo)記/清除垃圾收集功能,而實(shí)現(xiàn)更多的接口就可以獲得并發(fā)標(biāo)記、并行或分代收集功能。

這次重構(gòu)有一個(gè)有趣的副作用,就是單個(gè)組件更容易測(cè)試了。在這次修改之前,像垃圾收集這樣的組件只能使用整個(gè)運(yùn)行時(shí)來(lái)執(zhí)行,這意味著測(cè)試需要大量復(fù)雜的設(shè)置和分析。不過(guò),在對(duì)這個(gè)復(fù)雜的邏輯進(jìn)行分隔和解耦之后,單個(gè)組件可以隔離測(cè)試了,這簡(jiǎn)化了測(cè)試設(shè)置和分析。

不過(guò),OMR最有前途的特性可能是它將成為一個(gè)由Eclipse基金會(huì)(IBM是其戰(zhàn)略成員)運(yùn)作的開(kāi)源項(xiàng)目。項(xiàng)目負(fù)責(zé)人希望Eclipse基金會(huì)培養(yǎng)一個(gè)開(kāi)發(fā)者社區(qū),為OMR提供創(chuàng)新性貢獻(xiàn),所有以O(shè)MR工具包為基礎(chǔ)創(chuàng)建運(yùn)行時(shí)的語(yǔ)言都可以從中受益。這有助于OMR攻占OpenJDK的領(lǐng)地,后者雖然也是開(kāi)源的,但它在吸收有價(jià)值的貢獻(xiàn)時(shí)一直有些困難,比如谷歌對(duì)CMS所做的性能改進(jìn)。

然而,這種方法也有缺點(diǎn)。雖然迫使語(yǔ)言設(shè)計(jì)者采用一種已有的運(yùn)行時(shí)可能會(huì)帶來(lái)一些挑戰(zhàn),但那也意味著不同的語(yǔ)言可以同時(shí)在同一個(gè)虛擬機(jī)中運(yùn)行,這樣就便于語(yǔ)言互操作。OMR為每種語(yǔ)言創(chuàng)建一個(gè)不同的運(yùn)行時(shí)的方法意味著,即使可能,實(shí)現(xiàn)互操作也要困難許多。最終的結(jié)果可能是,不同的語(yǔ)言設(shè)計(jì)者根據(jù)自己的戰(zhàn)略重點(diǎn),在易于互操作和易于語(yǔ)言開(kāi)發(fā)之間作出權(quán)衡,選擇這一個(gè)或其他方法。

查看英文原文:IBM Kick-Starts Eclipse OMR, a Toolkit for Creating Language Runtimes

鏈接已復(fù)制,快去分享吧

企業(yè)網(wǎng)版權(quán)所有?2010-2024 京ICP備09108050號(hào)-6京公網(wǎng)安備 11010502049343號(hào)