關於 Java 及其生態系的誠實看法
資料來源:
Dev.to 好吧,我承認我的主要語言是 C#。但這是我對 Java 及其周邊生態系統的公正看法。我經常在 Java 中使用 bash 指令,看到它的所有缺點。例如,Java 沒有屬性,它本身沒有事件,沒有結構,沒有運算符重載,並且直到 Java 10 才沒有推理,因此沒有「var」。C# 裡面有一切!另外,由於缺少 LINQ、var 和 enum,我在 Java 中使用了 bash。然而我用 Java 寫了很多東西,特別是當我為 Android 創建應用程式時,但也為其他東西創建應用程式。我的第一個專案也是用 Java 寫的!於是,週五晚上,由於時間緊迫,我不得不用Java連續寫了幾個小時。猜猜我發現了什麼?溪流!
顯然 Java 8 引入了線程!我對此一無所知!對於那些不知道的人來說,Streams 是 LINQ 的 Java 實作。我還發現Java 10有型別推斷,所以Java現在有了var函數!我不敢相信我的知識有多過時,但說實話,這是有原因的。這兩件事對我的思想產生了很大的影響!您是否知道 Java 總是檢查異常,但 C# 卻不會?我承認我真的很懷念C#中的這個功能!是的,沒有結構、屬性等,但該死的,它很優雅!我認為 Java 的設計迫使開發人員編寫更健壯的應用程式。而在 .NET 世界中,這很大程度上是由程式設計師自行決定。有些開發人員喜歡這些限制,而有些開發人員則喜歡自由。雖然兩種語言都相當安全,但 Java 顯然略佔優勢。那麼,為什麼大公司更青睞Java呢?我想我現在知道答案了!最讓我沮喪的是......在你在互聯網上看到的大多數程式碼範例中,這些高級功能並不總是被使用......我認為如果一個新的Java開發人員看到'var'寫在整個程式碼庫中,他會發瘋的!那麼流呢?什麼是流?Java 開發人員喜歡 For 迴圈!事實上,即使是 foreach 迴圈在 Java 世界中也相當罕見(也許有一個原因:For 迴圈更加優化)。但這些功能都不錯!我會進一步說這些功能太棒了!當我編寫 Android 應用程式並注意到 Android API 中幾乎沒有地方使用枚舉時,這真的讓我很痛苦!這是公平的,因為 Android 是很多年前編寫的。最讓我煩惱的是,每次需要在Android中使用Activity for Results函數時,我都必須使用常數,如下所示:
int PICK_IMAGE_FROM_GALLERY = 3000 兄弟,這太瘋狂了!然而世界各地的人們已經開始接受它。甚至我。Java 還缺乏原生事件實作!如果它有像 C# 這樣的事件和委託就好了...(嘿,Java 語言的創建者,如果您正在閱讀本文,您需要添加事件!如果您已經擁有它們或正在開發它們,請告訴我)。現在我將告訴您 Java 生態系統中最大的缺陷是什麼。文件!!! Oracle 網站上雜亂且無用的文件看起來愚蠢且過時,處於 2007 年的水平。它甚至並不總是有程式碼範例。如果你開始尋找一個相對不尋常的功能或 API 方法,你會發現一個無聊的定義、聲明、參數、它屬於哪個套件 - 就是這樣。我認為這是荒謬的。你不覺得這很荒唐嗎?沒有程式碼片段嗎?因此,我們開發人員必須嚴重依賴像 StackOverflow 這樣的論壇,或者像 TutorialsPoint 這樣的其他程式網站...有時它們確實很有幫助,提供了展示此功能的良好程式碼範例,但有時它們並沒有那麼有用。我建議將 Microsoft 的 C# 文件與 Oracle 的 Java 文件進行比較…天上地下!不相信我?去查一下:
甲骨文和
微軟。Microsoft 網站上的文件看起來很漂亮!他們甚至還有黑暗模式!我們開發者對黑暗模式非常著迷。Oracle 文檔怎麼樣?正如我所說,它仍然是 2007 年。也許那時候還沒有深色模式?所以,我想說Java太神奇了!但這種語言因過時的文件而受到很大影響。這些大多是舊文件和舊手冊,沒有突出顯示急需的新功能,例如線程、變數和枚舉。現在人們說 Java 開始過時了,將會被 Kotlin 取代,但我不同意。因為即使這是真的,他在很長一段時間內也不會取代她。這將需要很多很多年。你還記得Scala也試圖取代它嗎?那麼結果是什麼呢?Java 仍然統治著整個 JVM 生態系統。儘管我承認 Scala 與 Java 有很大不同,主要是在功能上。現在,終於...還有一件事比 Java 世界中的任何事情都更讓我感動。這就是獲取JDK。為什麼下載JDK這麼難?我的意思是,如果我需要 JDK,簡單的 Google 搜尋就會將我指向 Oracle 網站,我會去那裡找到我需要的 JDK 版本。到目前為止,一切都相對容易,但為了下載它,我需要註冊。為什麼我要在 Oracle 上建立帳戶,然後每週處理他們的電子郵件,而不是只下載 JDK?請記住,Java 從第一天起就是開源的!與 C# 不同的是,C# 直到 2015 年才開源。所以,我已經很沮喪並轉到谷歌搜尋結果中的第二個網站。它引導我訪問 OpenJDK 網站。我在那裡找到 JDK 並點擊“下載”。但是(令人驚訝!)他們提供了來自其他網站的 JDK 實現的連結!在這些網站中,有一個該死的 Oracle,但也有一個到 Red Hat 網站的連結。是的,紅帽很棒,它是世界上開源公司的先驅之一。好的,我要去他們的網站!我會從那裡下載它!我點擊此鏈接,找到我正在尋找的 JDK 版本,你猜怎麼著?我也必須在那裡註冊...(戲劇性的停頓)這真是悲傷...操它!這些人怎麼了?最後,我屈服並安裝了 Chocolatey(它類似於 apt-get,但適用於 Windows。我認為它是第一個廣泛分發和使用的 Windows 套件管理器)。所以在這之後我需要在 PowerShell 中寫一個簡單的指令,例如:choco install jdk-1.8。我做到了!(如果您是 C# 開發人員,您就會知道只需點擊 2-3 次即可輕鬆獲得 .Net SDK,無需註冊或類似操作)。總結一下我的長篇大論:Java 是一種很棒的程式語言。它美觀、可靠,並且擁有(在我看來)世界上最好的 IDE - 來自 JetBrains 的著名 IntelliJ IDEA。此外,Java 擁有非常有幫助的社群和龐大且多樣化的生態系統。我是這麼說的 - 一個 C# 開發人員...但我們需要更新文件。程式碼範例。API。我們需要讓取得 JDK 變得更容易。總的來說,Java 正在朝著正確的方向發展,雖然最近它的受歡迎程度可能有所下降,但這不會讓 Java 消失。多年來它一直位居世界最佳語言排行榜榜首!我一直使用Java,並且將來也會繼續這樣做。
2021 年值得考慮的三種新 Java 工具
資料來源:
OpenSource 儘管 Python、Go 和 Node.js 很受歡迎,近年來也被積極用於實施人工智慧、機器學習和 Kubernetes 相關項目,但 Java 技術在企業應用程式開發中仍然發揮關鍵作用。根據 Developer Economics 的數據,2020 年第三季全球有 800 萬名企業 Java 開發人員。
Java 程式語言已存在超過 25 年,並且不斷更新。新的工具和框架不斷湧現,可以增強您的應用程式和職業生涯。絕大多數 Java 平台都是為了實現具有動態行為的長時間運行的進程而創建的,旨在在伺服器或虛擬機器上運行。隨著 2014 年 Kubernetes 容器的出現,這種情況發生了變化。現在,在 Kubernetes 上運行 Java 時面臨的最大挑戰是:透過減少記憶體佔用、加快啟動和回應時間以及減少檔案大小來優化應用程式效能。
三個新的 Java 框架和工具
Java 開發人員一直在尋找將流行工具和開源專案整合到他們的 Java 應用程式中的最簡單方法。新的高效能工具顯著提高了開發效率,並鼓勵更多公司和個人開發人員使用 Java 堆疊。今天我們將討論三個新的 Java 框架和工具:
Quarkus 專為開發雲端微服務和無伺服器應用程式而設計。它在 Kubernetes 等容器編排平台中具有快速啟動時間、較小的記憶體駐留集 (RSS) 大小以及較高的記憶體密度。根據 JRebel 的第九次年度報告,Java 開發人員中 Quarkus 的使用率增加了 6%(不到前一年的 1%)。Micronaut 和 Vert.x 分別成長至 4% 和 2%(去年約 1%)。
透過 Eclipse JKube,Java 開發人員可以使用 Docker、Jib 或 Source-To-Image 建置策略來建立基於雲端 Java 應用程式的容器映像。該工具還在編譯時產生 Kubernetes 和 OpenShift 清單,並改善偵錯、監控和日誌記錄工具的體驗。
MicroProfile 解決了與最佳化 Java 微服務企業架構相關的問題,而無需引入新框架或重構整個應用程式。此外,MicroProfile 規範(例如 Health、Open Tracing、Open API、Fault Tolerance、Metrics、Config)隨著 Jakarta EE 的實現而不斷發展。
結論
很難說哪些 Java 框架或工具最適合企業 Java 開發人員。只要有機會改進 Java 堆疊並加速企業業務成長,我們就可以期待新的框架、工具和平台的出現。檢查它們,看看它們是否可以在 2021 年改進您的 Java 應用程式。
GO TO FULL VERSION