關(guān)于嵌入式系統(tǒng)最煩人的事情之一就是它們?nèi)狈σ粋€(gè)公共的API。對(duì)于那些希望在基于不同操作系統(tǒng)的產(chǎn)品之間共享應(yīng)用程序代碼的公司來說,這是一個(gè)特別問題。我曾經(jīng)工作過的一個(gè)公司甚至在操作系統(tǒng)之上創(chuàng)建它們自己的層,只是為了把它們的應(yīng)用程序從這些操作系統(tǒng)之間的差別里分用出來。但是可以肯定,這不過是把創(chuàng)建另一個(gè)API 的問題加入到總的問題中來。每一個(gè)嵌入式的操作系統(tǒng)的基本功能大致一樣。每一個(gè)函數(shù)或者方法代表了操作系統(tǒng)可以向應(yīng)用程序提供的一種服務(wù)。但是沒有那么多不同的可能的服務(wù)。經(jīng)常是這種情況:兩個(gè)實(shí)現(xiàn)之間真正的不同只是在于函數(shù)和方法的名稱。
這個(gè)問題已經(jīng)持續(xù)了幾十年了,并且在可見的日子里也不會(huì)解決。然而,與此同時(shí)的Win32 和POSIX API 已經(jīng)分別占據(jù)了PC 機(jī)和Unix 工作站。因此,為什么沒有出現(xiàn)一個(gè)嵌入式操作系統(tǒng)的類似標(biāo)準(zhǔn)呢?不是因?yàn)槿狈L試。實(shí)際上,原始POSIX 標(biāo)準(zhǔn)(IEEE 1003.1)的tb作者們也為實(shí)時(shí)操作系統(tǒng)創(chuàng)建了一個(gè)標(biāo)準(zhǔn)(IEEE 1003.4h)。一些很像Unix 的嵌入式操作系統(tǒng)(讓人想起了VxWorks 和LynxOS)是符合這個(gè)標(biāo)準(zhǔn)API 的。然而,對(duì)于絕大部分的應(yīng)用程序員來說,必須為每一個(gè)使用的操作系統(tǒng)學(xué)習(xí)一個(gè)新的API。
幸運(yùn)的是,有了一線曙光,Java 編程語言已經(jīng)支持嵌入式的多任務(wù)和任務(wù)同步。那意味著不管Java 程序運(yùn)行在什么樣的操作系統(tǒng)中,創(chuàng)建和處理任務(wù)以及使它們同步的機(jī)理是一樣的。由于這個(gè)以及其他的一些原因,對(duì)于嵌入式程序員來說Java 會(huì)是一個(gè)很好的語言。我希望有一天大家需要一本關(guān)于嵌入式系統(tǒng)用Java 語言編程的書,并且因此不再需要這樣介紹了。