技術中(zhōng)心

這裏象征着我(wǒ)(wǒ)們的态度和能力

Java:過去(qù)、未來的互聯網編程之王
發布者:admin    信息來源:本站原創    發布時間:2015-07-31      浏覽次數:9416
分(fēn)享到:

  Java對你而言是什麽?一(yī)門你大(dà)學裏學過的語言?一(yī)個IT行業的通用語言?你相信Java已經爲下(xià)一(yī)次互聯網爆炸做好了準備麽?Java 一(yī)方面爲嵌入式計算做了增強,而另一(yī)方面爲實時應用做了精簡,本文将介紹爲什麽 Java 是IoT(物(wù)聯網)開(kāi)發的最佳語言。


  爲嵌入式計算增強、爲實時系統精簡——爲什麽 Java 是最适合 IoT 的語言
  自1969年至今,我(wǒ)(wǒ)們可以看到網絡設備爆炸式的增長:從最初四個大(dà)學的計算機群構建成的ARPANET,直到現今互聯網上有兩億活躍用戶。而不久之後的将來這一(yī)數字将會呈指數級的增長,從幾億台設備到數十億嵌入式處理設備。我(wǒ)(wǒ)們生(shēng)活的方方面面都将通過網絡設備接入互聯網:家庭、工(gōng)作場所、汽車(chē)、家電(diàn)、工(gōng)具、玩具——一(yī)切由你說了算。
  (譯者注:美國高等研究計劃署網絡 Advanced Research Projects Agency Network,美國國防高等研究計劃署開(kāi)發的世界上第一(yī)個運營的封包交換網絡,它是全球互聯網的始祖。最初由西海岸的四個節點, 加州大(dà)學洛杉矶分(fēn)校(UCLA)、斯坦福研究院(SRI),加州大(dà)學聖巴巴拉分(fēn)校(UCSB)和猶他大(dà)學(UTAH)構成)
  爲嵌入式系統打造的Java
  十九年前,David L. Ripps 爲 JavaWorld寫了一(yī)篇介紹Java和嵌入式系統相關的文章。如果你想要明白(bái)嵌入式系統編程、移動互聯設備、物(wù)聯網三者之間的相互協作,Ripps 的文章依然是非常受用的。
  雖然時下(xià)關于物(wù)聯網(Internet of Things)的閑談有部分(fēn)炒作之嫌,但本質上來說,下(xià)一(yī)刻在互聯網中(zhōng)将要發生(shēng)的改變,會使前幾代信息處理技術黯然失色。物(wù)聯網不隻是流口常談之物(wù),而是改變世界的新技術。參考下(xià)面的時間線,這展示了如我(wǒ)(wǒ)們所知(zhī)的那些互聯網中(zhōng)的引爆點:
  1982年到1989年:TCP/IP網絡誕生(shēng)。
  1985年到1989年:互聯網商(shāng)業化開(kāi)始出現。
  1990年到1991年:萬維網正式建立。
  1990年到1998年:傳統計算機真正意義上被重新設計爲互聯網設備。
  1996年至今:雖然緩慢(màn)但确信的是,我(wǒ)(wǒ)們步入了由移動互聯網絡設備(即物(wù)聯網)“統治”的時代。
  物(wù)聯網的補充技術正在陸續上線。HTTP/2作爲新版的關鍵網絡協議,在一(yī)定程度上将适應機器到機器的通訊。Thingsee 則是物(wù)聯網開(kāi)發套件的先驅,它提供了物(wù)聯網開(kāi)發所需的硬件。
  矽谷智者 Tim O’Reilly 作出強調說,物(wù)聯網的成果遠不隻是将咖啡機、電(diàn)冰箱這種無關緊要的設備接入網絡。在充足的傳感器和自動化設備的支撐下(xià),物(wù)聯網無疑将會是人類的巨大(dà)進步。Java 在即将到來的變革中(zhōng)将承擔主力軍的角色。
  物(wù)聯網是怎麽工(gōng)作的
  2014年9月,Andrew C. Oliver撰寫了這樣一(yī)篇文掌,在實現層面讨論了網聯網在團隊協作中(zhōng)的重要性。在這種情況下(xià),團隊協作将同時凝結人類與計算機。
  由于設備不隻是和人類用戶溝通,也需要和其他設備溝通,從根本上新的功能出現了——冰箱不僅能夠知(zhī)道你的番茄用完了,它還可以以你的名義訂購更多。普适計算的成功之處在于,計算機将退居“幕後”,與其他連接的設備一(yī)起運算出實事與事件及解決方案。隻有可執行級别的結果将會被提交給用戶。互聯網的成就将使我(wǒ)(wǒ)們不再考慮過多,因爲物(wù)聯網無縫地爲我(wǒ)(wǒ)們解決了一(yī)切。
  最平凡的例子往往是最有說服力。在最近的新聞當中(zhōng),我(wǒ)(wǒ)們親眼見證了一(yī)系列令人印象深刻的物(wù)聯網應用方式,包括農業害蟲處理、小(xiǎo)型炸彈嗅探器以及醫療診斷技術的進步等。想想卑微的自動販賣機的代替品——它适量地存儲、被妥善地維護,永遠默默地等待着你的命令。
  當你将你的賬單放(fàng)進一(yī)台自動販賣機并按下(xià)按鈕執行你的購買時,會有幾種交互機制以确認能滿足你的饑餓。你不需要理解或是認同整個實現過程,你的胃會對結果非常滿意。現在,我(wǒ)(wǒ)們有了具備物(wù)聯網功能的自動販賣機了。當你在啓用物(wù)聯網的自動販賣上購買時,你的購買将會觸發遍布全球的操作以保持庫存的均衡、部件的妥善維護,這種新模式較前物(wù)聯網模式降低了30%的總成本。
  Java的嵌入式計算之旅
  現在隻有少數人意識到 Java 是爲嵌入式計算打造的語言。它的早期版本用意明确地劍指諸如電(diàn)視機頂盒接口一(yī)類的家用電(diàn)器。James Gosling (Java 之父)關于最初的設想是以設備間通信爲核心的,他設想 Java 不僅僅被用于設備到用戶的通信,同時也被用于設備到設備的通信。二十年之後,這些初始設計優勢已經準備好來支持物(wù)聯網了。
  Java 的普适性也使之非常好地适應物(wù)聯網。來自世界各地的大(dà)量的資(zī)源傾注于将 Java 傳輸給新一(yī)代程序員(yuán),并确保它已經被維護——以支持所有依賴于之的産品系統。數以十萬計的成功的應用程序和系統已經證明了 Java 的才能。
  對于探索嵌入式編程的開(kāi)發人員(yuán)來講區分(fēn)Java平台的部分(fēn)是很重要的。沒必要爲嵌入式開(kāi)發做出編寫或閱讀程序的改變:好的 Java 程序員(yuán)可以很容易地閱讀嵌入式系統的源代碼,像他們閱讀典型的桌面企業應用一(yī)樣。不過庫和開(kāi)發環境(特别是開(kāi)發和測試的環境)是爲嵌入式 Java 編程所定制的。确保你有正确的嵌入式開(kāi)發環境。
  Java 對嵌入式系統來說是否過于龐大(dà)?
  因爲嵌入式設備對于計算性能總是捉襟見肘,Java 往往不是嵌入式開(kāi)發的第一(yī)選擇。彙編、C 甚至是 Python 都能在局限的内存、低功率的 CPU 或是有其他硬件限制的系統上更能吃得開(kāi)。然而,随着嵌入式環境平均水平的增長,近些年來這種妨礙已經逐漸在消失。嵌入式環境下(xià)新的 Java 編譯技術的采用也使資(zī)源需求也有所縮減。
  2015年 Java 嵌入式開(kāi)發的展望
  Java 早在 1996 年就有了進行嵌入式編程的資(zī)質,然而缺乏勢頭。今天這種趨勢發展迅速,一(yī)套爲嵌入式打造的生(shēng)态系統——包含 Java 标準和工(gōng)具——已經蓄勢以待。
  在 2000 年到 2010 年間,基于 Java 的嵌入式或“微”計算集中(zhōng)在 J2ME (Jave 2 Platform, Micro Edition)是一(yī)個普遍事實。現在, Java 平台,微型版本或者說 Java ME已經是标準的嵌入式應用運行環境了。盡管Java ME和它的概念——特别是profiles和configurations ——依然非常關鍵,但移動 Java 開(kāi)發者往往更專注于Android和HTML5的用戶界面。移動電(diàn)話(huà)是最常見的嵌入式計算機,現在銷售的手機大(dà)約有五分(fēn)之四基于安卓系統。(雖然 Android 支持 Java ME,但這兩個有不同的産品生(shēng)命周期,而且尚不清楚誰将決定什麽會是下(xià)一(yī)代實際嵌入式設備的應用程序環境)。
  (譯者注: profiles 常譯作簡表,是某個行業或某個領域内的特性概括,每套簡表專門針對某一(yī)類設備;configurations 常譯作配置,Java ME引入了配置的概念,屏蔽了不同硬件設備的物(wù)理特性)
  簡表(profiles)和配置(configurations)在嵌入式編程中(zhōng)是非常關鍵的概念。一(yī)個像MIDP(Mobile Information Device Profile,移動信息設備配置文件)這樣的嵌入式簡表是一(yī)套 API 的集合,用于支持相關的設備。而配置則是一(yī)套框架規範。不嚴謹地将配置看作是簡表的所屬,也許有助于理解簡表這一(yī)概念,包括最顯著的 CLDC (Connected Limited Device Configuration)或稱之爲有線連接設備配置也符合這一(yī)所想。(見 “Jim Connors’ Weblog” 以了解更多有關應用于物(wù)聯網的簡表和配置)。
  除了 Java ME 的簡表和配置之外(wài),一(yī)小(xiǎo)撮企業級 Java 技術持有嵌入式開(kāi)發的潛力。用于分(fēn)布式資(zī)源管理與監測的Java 管理擴展 (即JMX  Java Management Extensions)可以在有朝一(yī)日完整地補足嵌入式的定義。Real-time Java (實時 Java)在物(wù)聯網嵌入式編程中(zhōng)也占據着重要地位。
  Java 的實時模型與工(gōng)具
  在醫療、運輸、制造和其他行業中(zhōng),連接傳感器與效應器的嵌入式應用程序對于實時要求非常高。可預測的、準确的結果對于心髒起搏器、 發動機控制器,管道閥門等等都關乎生(shēng)死,而不隻是惱人的堆棧回溯。
  雖然 James Gosling 想讓 Java 去(qù)完成普遍的實時要求,但在早年間實時并不是 Java 的強項。尤其是很多 Java 運行時(Java Runtimes)聲名狼藉,全因爲它們并不可靠或者至少也在處理垃圾回收的時候不協調。RTSJ(Real-Time Specification for Java,即 Java 實時規範)以及相關标準用以處理這些事件的時間不确定性——定期或零星的任務調度、任務期限和 CPU 時間預算、垃圾收集線程、啓用某些任務以避免垃圾收集延遲的定量供給。RTSJ 被批準于2002年,已經被許多Java虛拟機實現。
  雖然RTSJ在2015年2月之前一(yī)直被Java社區進程(Java Community Process)列爲擱置項目,但過去(qù)十年中(zhōng)專家們一(yī)直積極地對其進行改善與更新。舉例而言,JamaicaVM 就是一(yī)套由 aicas GmbH 支持的RTSJ實現方案,現在免費(fèi)提供給教育或其他非商(shāng)業用途使用。
  實時系統的時間線
  嵌入式尤其是實時标準發展的時間線普遍較典型消費(fèi)軟件長的多。一(yī)個成功的移動 App 可能在六個月間達到峰值并消失出視線,而在醫療設備,汽車(chē)和工(gōng)廠的嵌入式軟件往往需要幾十年的可靠運行。而影響這些應用程序的已發布标準相應地需要更長時間來起草。
  最近 Oracle 推出了Java SE 實時系統,暗示着Java SE 已經被充分(fēn)增強以滿足“軟”實時要求。“軟”在這裏至少有兩個截然不同的含義。一(yī)是要求有軟件有平均水平的性能表現,例如,一(yī)次普通的銀行交易在 300 毫秒内被發送就足夠好了。 “硬”實時要求是完全不同的,例如某個機動電(diàn)磁閥,在應用程序接收警報的四分(fēn)之一(yī)秒内關閉都是最壞情況。“硬”實時的最關鍵要求在這種意義上來講,即是最壞情況能被預測。
  對很多嵌入物(wù)聯網的應用來講,“軟”實時是完全合格的。對于需要硬實時支持的應用程序,Java 開(kāi)發人員(yuán)很大(dà)程度上轉向 JSR-302:安全關鍵型的 Java 技術。這個規範是 Java 實時規範的一(yī)個子集,它部分(fēn)依賴于 CLDC。除了其他特性之外(wài),安全關鍵型的 Java 定義了自己的并發模型和實時線程。The Open Group 最初在 2003 年開(kāi)始緻力于安全關鍵型 Java 的工(gōng)作。今春在被問及該規範的狀況時,JSR 302 規範的主管 Doug Locke估計在長期的醞釀後,在 2015 年 5 月初将會有一(yī)個規範被認證,其中(zhōng)包含一(yī)套實現方式的參考。
  嵌入式 Java 的未來前景
  Java 在嵌入式編程中(zhōng)有諸多期許,而爲使之能夠滿足即将到來的物(wù)聯網大(dà)爆炸中(zhōng)的需求與契機,還有長遠的路要走。未來幾年中(zhōng),數百億美元的 Java 驅動的設備将作爲物(wù)聯網的一(yī)部分(fēn)被投入使用。我(wǒ)(wǒ)下(xià)一(yī)篇相關話(huà)題的文章會分(fēn)别以愛好者和商(shāng)業環境爲例,列舉 Java 嵌入式編程的具體(tǐ)實例,并更加深入地解釋爲何 RTSJ 2.0 對 Java 實時編程的影響會遠遠超越傳統領域。

4000-880-989
(24小(xiǎo)時熱線)
聯系客服
微信公衆号

官方公衆号

小(xiǎo)程序

©2008-2022 CORPORATION ALL Rights Reserved. 西山區唯美網絡科技工作室版權所有 滇公網安備