在開發低延遲軟件系統時,人們普遍認為,除了C++之外,你會瘋狂地使用任何東西,因為其他任何東西都有太高的延遲。但我在這里要提出一個觀點:在軟件系統中實現低延遲時,Java更好。想要學習java更多知識和技能,可以考慮參加java培訓,有經驗豐富的專業講師指導教學,有緊跟市場需求的實時課程,可以讓你快速掌握這門技術,節約時間,少走彎路。
這一切都歸結于你對“低延遲”的定義。讓我解釋一下…
大多數開發人員都會告訴你,由于C++更接近于金屬,所以用這種語言進行編碼具有固有的速度優勢。在低延遲的情況下,比如高速交易,幾微秒就可以決定一個可行的軟件和一個過時的磁盤空間的浪費,C++被認為是黃金標準。
或者至少曾經是這樣。但現在,許多大型銀行都使用用Java編寫的系統。我的意思是用Java編寫,而不是用Java編寫然后解釋成C++以追求更低的延遲。這些系統正在成為標準,即使對于一級投資銀行來說也是如此,盡管它們(據稱)速度較慢。
那是怎么回事?
好吧,C++在執行代碼時可能是“低延遲”,但在推出新功能或甚至找到可以編寫代碼的開發人員時,它絕對不是低延遲。想學習java技術,建議考慮報名參加Java培訓,有明確的學習路線和全面系統的課程,能獲得較快提升。
Java和C++之間的(真正的)區別
然而,當談到Java和C++在真實系統中的真正差異時,開發時間的問題只是一個開始。因此,為了理解每種語言在這種情況下的真正價值,讓我們來稍微解釋一下。
首先,記住C++在大多數情況下比Java快的實際原因很重要:C++指針是內存中變量的地址。這意味著軟件可以直接訪問單個變量,而不需要通過計算昂貴的表格來查找它們。或者至少可以,如果它被告知它們在哪里,因為使用C++,你通常必須明確地管理對象的生存期和所有權。
這樣做的結果是,除非你真的非常擅長寫它(一項需要幾十年才能掌握的技能),否則C++將需要數小時(或數周)的調試。而且,任何試圖調試蒙特卡洛引擎或PDE求解器的人都會告訴你,在基本級別調試內存訪問可能非常耗時。單是一個損壞的指針就很容易使整個系統崩潰,所以發布一個用C++編寫的新版本真的很可怕。在java培訓中,有理論知識+實踐項目課程,雙管齊下,學以致用,讓你深入淺出地學習java。
由于IDE對Java的支持比C++高級得多,大多數環境(Eclipse、IntelliJ、IDEA)都能夠重構Java。這意味著大多數ide將允許你優化代碼以低延遲運行,這種能力在使用C++時仍然受到限制。
即使在原始性能上與C++不太匹配,大多數開發人員在Java中比在C++中更容易達到可接受的性能。真正的延遲殺手出現在有想法和為想法發布代碼之間。
Java對于低延遲系統的優勢
首先,Java引入到軟件中的任何額外延遲都可能比現有的延遲接收器小得多,例如網絡通信延遲,在(至少)一個交易完成之前必須經過的系統中,這意味著在大多數交易情況下,任何(編寫良好的)Java代碼都可以像C++一樣輕松執行。
Java的開發時間更短也意味著,在現實世界中,用Java編寫的軟件可以比C++更快地適應不斷變化的硬件(甚至是新的交易策略)。通過java培訓的學習,你可以學到很多企業級項目經驗和技能,找到工作后,可以立馬上崗實操,大大提高開發效率。
進一步深入了解這一點,你會發現,如果在整個軟件中查看,即使優化Java軟件也比C++中的等效任務更快。“如果你的應用程序將90%的時間花在10%的代碼上,Java會使10%的代碼更難優化,但編寫和維護90%的代碼更容易;特別是對于混合能力的團隊。”
換句話說,可以從機器級別向上編寫Java,以實現低延遲。你只需要像C++一樣編寫它,在開發的每個階段都要考慮內存管理。不使用C++本身編寫的優點是,在Java中調試、敏捷開發和適應多種環境都簡單、快捷。
關于如何實現低延遲的爭論并不是一個新的話題。出于這個原因,我們有可能從中吸取有關其他情況的寶貴經驗。特別是,上面關于Java“更好”的論點,因為它更靈活、更具彈性,最終開發和維護速度更快,可以應用于軟件開發的許多領域。想掌握 Java 技術的同學不妨報個Java培訓班,可以節省學習時間,提高學習效率,在短時間內學有所成,還能找到一份不錯的工作。