2021 年學習 Java 的三個理由
Java 是在 1995 年發布的,當我寫這篇文章的時候,它已經 26 歲了。起初它是專有的,但在 2007 年,Java 基於 GPL 協議被開源發布了。如果想要理解是什麼使得 Java 變得非常重要,你就必須理解它聲稱要解決的是什麼樣的問題,從而你就能理解它讓開發者和用戶受益的原因和方式。
理解 Java 解決了什麼問題的最好方式就是進行軟體開發,當然啦,如果不做開發,僅僅只是使用軟體也會是一個很好的開始。作為一名開發人員,當你將在自己的本地計算機上運行良好的軟體部署到其他計算機上運行時,一些稀奇古怪的麻煩可能就出現了,從而導致軟體可能無妨正常運行。軟體本應正常工作,但每個程序員都明白,一些問題總是會被忽視。當你在另一個操作系統上嘗試運行該軟體時,情況就變得更加複雜了。這也是為什麼在每一個軟體的獲取頁面上都會有針對不同的操作系統有對應下載按鈕的原因:Windows 的、macOS 的、Linux 的、移動端的、甚至許多其他操作系統環境的下載選項。
作為一名用戶,一個典型的場景是你想下載一些優秀的軟體,但它卻不適用於你的平台。遺憾的是這樣的情況仍然發生在當下非常先進的計算機上,它們可以在計算機中運行虛擬機,通過模擬使老式視頻遊戲保持活力,甚至可以放在你的口袋裡,但軟體交付實際上相當困難。
有沒有更好的辦法?可能會有吧。
1、一次編碼,任意環境都能跑通
令人驚訝甚至是失望的是,代碼是特定於操作系統和環境的。代碼需要從對人友好的高級程序設計語言編譯成機器語言,即被設計可以用於讓 CPU 響應的一系列二進位指令。在先進的計算機世界中,我們很難理解為什麼不能僅僅只要編寫代碼,就能將它發送給任何一個想要運行它的平台,無需擔憂它們正處在什麼樣的平台中。
Java 可以解決這種不協調的問題。它的代碼是可以跨平台進行工作的,在任何運行它的系統上都執行相同的工作。Java 實現這一壯舉的方法起初是有悖常理的。在某種程度上,Java 只與一台計算機兼容。奇怪的是,這台電腦實際上並不存在。Java 代碼的目標計算機是Java 虛擬機(JVM)。這是一個由 Java 的創建者編寫的程序,可用於你能想到的任何計算機設備。只要你安裝了它,你運行的任何 Java 代碼都會由你計算機中的這台「虛擬」計算機進行處理。Java 代碼會由 JVM 執行,JVM 向你的計算機發送適當的特定於平台的指令,因此所有工作在每個操作系統和架構上都是一樣的。
當然,Java 使用的方法並不是這裡的真正的賣點。大多數用戶和許多開發人員並不關心軟體兼容性是如何實現的,只關心它是否具備兼容性。許多語言都承諾提供跨平台的功能,通常情況下,這個承諾最終都是真的,但是這個過程並不總是容易實現的。編程語言必須針對其目標平台進行編譯,腳本語言需要特定於平台的解釋器,而且兩者都很難確保對底層系統資源的一致訪問。跨平台支持變得越來越好,庫可以幫助轉換路徑、環境變數和設置,並且一些框架(特別是 Qt)在彌補外設訪問的差距方面做了很多工作。但是,Java 始終可靠地提供它的兼容性。
2、明智的代碼
Java 的語法即使是在最好的方面也很無聊。如果你把所有流行的編程語言都放在一個搖滾杯中,那麼你會得到 Java。通過觀察 Java 編寫的源代碼,你或多或少會均勻地看到所有特定的編程表達方式。括弧表示函數和流程式控制制的範圍、變數在使用前被明確地聲明和實例化,並且表達式具有清晰一致的結構。
我發現 Java 學習過程中通常會鼓勵自學成才的程序員使用結構化程度較少的語言編寫更精鍊的代碼。從網上學習的源代碼中收集到的技術中,有許多「基本」編程經驗是你無法學到的,比如以 Java 公開欄位的風格進行全局變數聲明、正確地預測和處理異常、使用類和函數、和許多其他的技術。從 Java 借鑒的一點小改動可以產生很大的不同。
3、腳手架和支持
流行的編程語言都有很好的支持系統,這也是使得其變成流行語言的原因。它們都有很多文檔資料,有針對它們的集成開發環境或 IDE 擴展、示例代碼、免費和付費培訓和開發者社區。在另一方面,當你在嘗試做某事遇到困難時,似乎沒有任何編程語言有足夠的支持。
我不能說 Java 可以擺脫這兩個普遍但又相互矛盾的事實。儘管如此,我發現當我需要一個 Java 庫時,我必然能為給定的任務找到多個選項。通常我不想使用一個庫的原因是我不喜歡它的開發人員如何實現我需要的功能,它的許可證與我喜歡的有所不同,或者有其他瑣碎的爭議點。當一門語言得到大量支持時,我就會很多的選擇性。我可以從許多合適的解決方案中選擇一個最能滿足我需求的,不論我的需求多麼微不足道都能被最好得滿足。
更好的是,圍繞 Java 有一個健康的基礎設施。像 Apache Ant、Gradle 和 Maven 等工具可以幫助管理構建和交付的過程。像 Sonatype Nexus 等服務幫助實現監控的安全性。Spring 和 Grails 使 Web 開發變得更加容易,而 Quarkus 和 Eclipse Che 有助於雲上的開發。
在接觸 Java 語言本身時,你甚至可以選擇使用什麼樣的版本。OpenJDK 提供經典的、官方的 Java,而 Groovy 是一種類似於腳本語言的簡化方法(你可以把它比作 Python),而 Quarkus 提供了一個容器優先開發的框架。
還有很多,但現在已經足以說明 Java 是一個完整的生態了,無論你想在其中尋找什麼。
此外,簡單易學
事實證明,Java 對我和各行各業的許多開發人員來說是一個明智的解決方案。以下是我喜歡使用 Java 的一些原因。
你可能聽說過或推斷出 Java 是一種「專業」語言,只適用於笨重的政府網站,專供「真正的」開發人員使用。千萬不要被 Java 25 年以來的各種名聲所迷惑!它的可怕程度只有它名聲的一半,這意思是,並不比其他任何語言更可怕。
編程很困難的這件事是無法迴避的,它要求你基於邏輯進行思考,學習一種比母語表達方式更少的新語言,要你弄清楚如何解決困難的問題,使它們可以使用你的程序完成自動化的執行,沒有語言可以避免這些問題。
然而,編程語言的學習曲線的差異令人驚訝。有些一開始很容易,但當你開始探索細節時就會變得複雜。換句話說,列印「hello world」可能只需要一行代碼,但當你學習到了類和函數, 你相當於開始重新學習這門語言(或者至少是它的數據模型)。Java 從一開始就是 Java,一旦你學會了它,就可以使用它的許多技巧和便利。
簡而言之: 去學習 Java 吧!它具有功能強大、多樣化、可拓展、有趣的特點。為了給你提供幫助, 下載我們的 Java 備忘單, 它包含你在開發前十個項目時需要的所有基本語法。在那之後,你就不再需要它了,因為 Java 具有完美的一致性和可預測性。來享受它吧!
via: https://opensource.com/article/21/5/java
作者:Seth Kenlon 選題:lujun9972 譯者:PearFL 校對:wxy
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive