更新時間:2022-07-26 16:27:34 來源:動力節點 瀏覽1367次
James Gosling 于 1991 年 6 月作為一個名為“Oak”的項目開創了 Java。Gosling 的目標是開發一種虛擬機和語言,其具有像 C 一樣的著名符號,但比 C/C++ 更精確和簡單。1995 年,Java 1.0 是第一次公開執行。它承諾在具有免費運行時的流行平臺上“編寫一次,隨處運行”。它非常安全且可配置,具有限制網絡和文件訪問的安全性。在穩定的“小程序”設置中,重要的網絡瀏覽器很快在其標準設置中實現了它。
Java 語言的開發有五個主要目標:
1. 應采用面向對象的方法。
2. 應該允許多個操作系統運行同一個程序。
3.應該有內置的計算機網絡支持。
4. 它應該被配置為安全地執行來自遠程源的代碼。
5. 通過選擇其他面向對象語言的哪些部分被認為是可接受的。它應該易于使用。
Java 程序員通常認為使用 CORBA、Internet Communications Engine 或 OSGi 等擴展來實現網絡支持和遠程代碼執行目標是合適的。
面向對象
第一個元素,面向對象 (OO),適用于編程和設計過程。雖然可能有幾種 OO 含義,但一個關鍵的區別原則是程序設計以組合不同的數據類型,并通過它們各自的操作進行操作。然后將數據和代碼組合成稱為對象的實體。
一個實體可以被認為是一個部分(代碼)和自包含行為的狀態(數據)。這個想法是將變化的項目與保持不變的事物分開;任何數據結構的更改也意味著在該數據上運行的代碼(反之亦然)被相應地修改。這種對兼容對象的劃分為軟件系統的設計提供了更可靠的基礎。目的是促進大型軟件項目的管理,提高質量,減少失敗項目的數量。
OO 的另一個主要目標是創建更常見的工件,以便項目之間的軟件可以更加可重用。例如,一個通用的“客戶”對象應該具有基本相同的一組基本行為,尤其是當這些項目在某個基本層面重疊時,就像它們在大型組織中經常做的那樣。
希望從這個意義上說,軟件對象可以更多地被視為插件組件,以便軟件行業可以主要基于當前經過良好測試的部分構建項目,從而顯著減少開發時間。軟件可重用性獲得了混合的功能結果,主要有兩個困難:真正通用對象的概念和通信方法知之甚少。
平臺獨立性
第二個特性,平臺獨立性,意味著 Java 編寫的程序必須平等地運行在不同的硬件上。一個人應該能夠編寫一次并在任何地方執行程序。大多數 Java 編譯器通過將 Java 的“中途”編譯為字節碼代碼,特別是字節碼 Java,簡化了 Java 平臺特定的機器指令來完成此任務。
然后代碼在虛擬機上運行,??該虛擬機在主機硬件上以本機代碼解釋和執行通用 Java 字節碼。此外,標準化庫可用于統一訪問主機功能,例如圖形、線程和網絡,僅舉幾例。
請注意,雖然編譯階段是精確的,但 JIT 編譯器會將 Java 字節碼解釋或轉換為本地機器指令。Java 編譯器也被實現來編譯本地目標代碼,例如 GCJ,以移除中間字節碼級別。盡管如此,只有單一架構可以運行這些編譯器的性能。
Sun 的 Java 許可證要求“兼容”所有實現。在 Sun 辯稱 RMI 和 JNI 接口不接受 Microsoft 實現并引入特定于平臺的功能后,這導致了與 Microsoft 的法律糾紛。Microsoft 將不再隨 Windows 一起提供 Java,Internet Explorer 將不再支持在最新版本的 Windows 中沒有第三方插件的 Java 小程序。
但是,對于這些版本和其他 Windows 版本,Sun 和其他公司免費提供 Java 運行時系統。第一種語言實現使用編碼虛擬機來實現可移植性。這些創新創建的程序比那些編譯成本地可執行文件(例如 C 或 C++)的程序執行得稍慢,因此該語言被認為是糟糕的。最近的 JVM 部署使用多種技術生成程序,運行速度比以前快得多。
第一種技術是將本機代碼直接編譯成更傳統的編譯器,完全跳過字節碼。這會產生良好的結果,但會以便攜性為代價。當程序運行時,Java 字節碼作為一種稱為即時編譯 (JIT) 的不同技術被轉換為本機代碼。
該程序比解釋代碼運行得更快,并且在執行過程中也會產生編譯開銷。更高級的 VM 使用動態重新編譯,其中 VM 可以選擇性地重新編譯和優化軟件的基本組件,評估行為。動態重新編譯可以做的不僅僅是靜態優化,因為動態編譯器可以使用運行時環境和加載類的集合來構造優化。JIT 的動態重建和編譯允許 Java 程序從本機代碼速度中受益,而不會失去可移植性。
自動垃圾收集
Java 自動內存管理模型背后的一個概念是為程序員節省手動內存管理的壓力。在特定語言中,程序員分配內存來構建存儲在堆中的任何對象,然后手動管理內存以刪除這些對象。當程序員忘記重新定位內存并且沒有及時鍵入代碼時,可能會發生內存泄漏:它會消耗大量內存。此外,當內存區域被擴展兩次時,程序可能會變得不穩定并崩潰。最后,在非廢物收集環境中跟蹤和最終確定分配的用戶代碼存在一些開銷和復雜性。
自動垃圾收集避免了 Java 中可能出現的這個問題。創建對象時,由程序員決定,Java 負責管理對象生命周期。持有一個引用,程序或其他對象可能會提到一個對象(從低級的角度來看,它是它在堆上的地址)。如果沒有對對象的引用,Java 垃圾收集器會自動刪除不可訪問的對象,從而釋放內存并避免內存泄漏。如果程序員的代碼包含對不再需要的項的引用,也可能存在內存泄漏——換句話說,它仍然可能發生在更高的概念級別。
以上就是動力節點小編介紹的"學習Java的技術要點,重要學習指南",希望對大家有幫助,如有疑問,請在線咨詢,有專業老師隨時為您務。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習