Java能為應(yīng)用程序提供統(tǒng)一的平臺(tái)嗎?

字號(hào):

Java作為一種成熟的語言,同時(shí)作為一種優(yōu)秀的平臺(tái),已被廣為接受。很多的程序員對(duì)Java技術(shù)很精通。如果說在進(jìn)行軟件開發(fā)的時(shí)候,把Java這個(gè)平臺(tái)拋掉或?qū)χ萌糌杪?,?duì)現(xiàn)在的開發(fā)者來說,這是一件忍痛割愛的事情。不管是為了更好的提高程序的性能或是穩(wěn)定性,還是看中了Java非常豐富的類庫,非Java應(yīng)用程序在JVM上運(yùn)行已經(jīng)吊足了程序員的胃口。那么,Java可以為應(yīng)用程序提供統(tǒng)一的運(yùn)行平臺(tái)嗎?JVM能承擔(dān)這一艱巨的任務(wù)否?
    一、 引言
    最近筆者讀到一篇”Use Java to Improve Drupal's Scalability”的文章。作者(Geert Bevin)在使用Drupal(一套采用GPL授權(quán)的開放源碼軟件,它可以讓個(gè)人或社區(qū)使用者很容易地發(fā)表、管理并組織一個(gè)網(wǎng)站里大量且多樣的內(nèi)容,已經(jīng)有許多個(gè)人和組織采用Drupal來建立各種不同的網(wǎng)站)時(shí)遇到了程序穩(wěn)定性方面的瓶頸。由于Drupal使用數(shù)據(jù)庫作為緩存,而PHP在跨越Request時(shí)是不會(huì)保存對(duì)象的狀態(tài)信息的,所以他決定使用Terracotta——一個(gè)JVM級(jí)的開源群集框架,能提供:HTTP Session復(fù)制,分布式緩存,POJO群集,跨越群集的JVM來實(shí)現(xiàn)分布式應(yīng)用程序協(xié)調(diào)。使用這一替代方案后,盡管他也遇到了一些別的小問題,但穩(wěn)定性的問題最終得以解決。同時(shí),將PHP在Java下運(yùn)行,還可以得到更加安全的運(yùn)行環(huán)境。
    上面的例子,我們可以看出,應(yīng)用程序雖然采用了非Java的技術(shù)來構(gòu)建,但最終在Java的環(huán)境下運(yùn)行,并通過JVM來提高應(yīng)用程序的穩(wěn)定性和性能。而且,非Java編寫的程序可以在JVM上更加快速的運(yùn)行,這是非常有意思且有意義的事情。而在不久之前,也許三年或四年前,程序員經(jīng)常報(bào)怨,一種語言編寫的程序往往只能在特定的環(huán)境下運(yùn)行。當(dāng)然,這也包括Java本身。
    當(dāng)然,如今而言,這聽上去有點(diǎn)不夠人性化。因?yàn)椴还苁荘HP應(yīng)用程序,Ruby on Rails應(yīng)用程序,或是.NET應(yīng)用程序,似乎都可以在Java環(huán)境下運(yùn)行了。更有甚者宣稱,這三種應(yīng)用程序在Java環(huán)境下的運(yùn)行效率比他們?cè)诟髯蕴囟ǖ沫h(huán)境下運(yùn)行的效率還要高。
    不管是為了更好的提高程序的性能或是穩(wěn)定性,還是看中了Java非常豐富的類庫,非Java應(yīng)用程序在JVM上運(yùn)行已經(jīng)吊足了程序員的胃口。那么,Java可以為應(yīng)用程序提供統(tǒng)一的運(yùn)行平臺(tái)嗎?JVM能承擔(dān)這一艱巨的任務(wù)否?