国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > 資訊 > 正文

編程語言也有中年危機,Java為何一直被唱衰?

2021-01-25 14:02:27
字體:
來源:CSDN
供稿:網友
在我的印象中,上一次編寫 Java 代碼已是三年前的事兒了。雖然我的第一份工作就是 Java 程序員,但是后來因為容器與微服務的出現,Java 就從我的工作中消失了。可萬萬沒想到,如今我和 Java 又一次重逢了,居然還是在微服務領域。


Java 的優勢

  這一切都要從微服務的熱潮說起,眾所周知微服務的優勢在于:易于擴展、高可用性、無需考慮并發和多線程,而且還能享受容器帶來的便攜性。

  如今,以 Kubernetes 為代表的微服務席卷了全球,讓人感覺 Java 的時代已經成為了過去,而且這些語言無法很好地融入容器與微服務的生態系統。

  雖然 Java 一直被集簡潔與優雅于一身的編程語言(比如 Python)所詬病,但作為 Java 曾經忠實的擁護者,我認為 Java 在某些方面仍然有著不可否認的優勢。

  首先,我們都知道 Java 有著強大的多線程處理能力,對于銀行等企業應用程序來說這是非常重要的功能。多線程處理能力使得程序能夠具有更好的交互性、實時性。Java 在多線程處理方面性能超群,具有讓你驚喜的強大功能,而且在 Java 語言中進行多線程處理很簡單。

  其次,雖然說比較 Java 與腳本語言的性能有點不公平,但 Java 的性能確實無與倫比。然而,在水平伸縮與微服務架構的世界里,語言本身的性能根本無關緊要,只需要增加容器就可以獲得優異的性能。雖然腳本語言能夠利用容器隨意擴大或縮小規模,但 Java 語言本身的性能優勢很明顯(至少在微服務領域)。

  然而,另一方面,在此次會面中,Java 及其過時的框架(比如 Spring)也給我帶來了無窮無盡的煩惱。
  
Java 以及 Spring 的缺點

  首先,我們來說一說 Spring。眾所周知,Spring 臃腫,入門難度大,充滿了各種謎之注釋,開發人員只能依靠教程或示例代碼。Java 語言本身就很古板,Spring 又加入了一大堆單行注釋和看似簡化的方法封裝,結果卻適得其反,獲得的通常都是一些壓根沒有必要的類調用和實例化。開發人員都明白,語言的控制、命令和透明性對于有效的軟件開發至關重要。也就是說,作為一名開發人員,你需要準確地掌握代碼的一切,以及代碼執行的例程,但 Spring 卻斬斷了這種可能性。

  如果在 Spring 代碼中,每個類前面都要加上六個注釋,而且這些注釋各說各得,它們之間的關系錯綜復雜,就會讓人感覺深陷泥漿。而這樣做的并不僅僅是 Spring,例如 Lombok 庫也做了類似的事情。這種壓縮代碼的方式只能適得其反,并不利于 Java 的發展。

  Java 不應該與腳本語言比較簡潔性。首先,這會犧牲 Java 代碼的一致性。想象一下,所有的 getter 和 setter 都消失了,取而代之的是一行注釋 @NoArgsConstructor。說好的一致性呢?

  其次,這讓本來就已令人費解的抽象層次更難以理解。例如,Spring 會在幕后進行自動裝配(bean 注入),這是可以理解的,但是 Lombok 在應用程序中的定位又是什么,二者之間如何傳遞消息?如果每個類都需要六個注釋,那么這些注釋還需要實例化多少例程或類才能完成一個簡單的任務?沒有開發人員會希望這些多余的代碼潛伏在角落??杀氖?,三年之后我所見到的 Java 代碼就是這個樣子。一切都是原來的樣子。即便是有一些微小的變化,也是讓情況變得更糟。

  最后,Java 的發展搞錯了重點。時至今日,Java 依然在糾結一些愚蠢的規則,比如類的命名,類應該放入哪個包中,以及變量是私有的還是保護的。反觀 Python,官方沒有提供有關訪問說明符的文檔,而是相信開發者會自己管理好這一切。這種做法很快就引起了我的共鳴。
  
KISS 原則

  KISS 原則是如今軟件行業盛行的一句話,“保持簡單和愚蠢”(Keep it Simple and Stupid),換句話說來,“簡單就是美”。Java 想要發展下去,就要認真思考這句話了。

  如今,微服務在軟件行業大肆普及。許多企業和組織都在從單體架構想微服務架構轉變,他們希望簡化設計,并提高可擴展性。對于程序員而言,這意味著將龐大的代碼庫或復雜的業務邏輯分解成更簡潔的小功能,這種方式可以避免在代碼中管理狀態,同時也可以避免并發問題和多線程的噩夢。

  歸根結底,所有的服務(無論是哪種形式)都只不過是在處理某種格式(JSON 或 XML)的數據,然后將這些數據傳遞到 Kafka 之類的消息總線上進行進一步處理。然而,即便在這樣簡單的環境中,Java 和 Spring 仍在糾結過時的語法問題,應用程序上下文,復雜的 bean 注入,POJO 映射器,吞噬大量內存的 JVM,以及 class loader 等等,讓人一想到就頭疼。

  網友看法

  就 Java 是否已死這個話題,很多網友發表了各自的看法。

  評論1

  現在 Spring 越來越大,這就導致大多數程序員對 Spring 的體系及結構都一知半解,才會感覺頭疼。但如果你知道如何篩選自己想要的功能,就不會覺得臃腫,反而會很簡潔。例如:

  ● 你想實現 Rest 服務,那么可以參考 Spring MVC 預置的功能。

  ● 如果你不想自己寫 DAO,那么 Spring Data 可以替你做,模板代碼全部都可以替你實現,而且對 JPA 或 NO-SQL 的支持也很方便。

  Java 生態系統非常龐大,需要學習的庫和框架也非常多。這些框架可以幫你省卻大量的樣板代碼,但是前提是你需要下一番功夫認真學習。

  評論 2

  Java 的優點很多,包括安全性、分布式、可移植性(一次編譯到處運行)、高性能、多線程以及動態性。

  根據 TIOBE 發布的 2021 年 1 月編程語言排行榜,Java 是位列第二的編程語言。我完全沒有看到 Java 沒落的跡象。

  “Java 已死”這個話題斷斷續續已討論了許久,各位程序員對此也是見仁見智,雖然唱衰的聲音絡繹不絕,但其優勢與支持者也不容忽視。那么,你有何看法?歡迎在「2020 中國開發者大調查」留下你的聲音,更有豐富獎品送不停!
上一篇:返回列表

下一篇:返回列表

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 中宁县| 汉川市| 桑植县| 巴林左旗| 平陆县| 定结县| 大埔县| 罗田县| 万载县| 临安市| 泸水县| 襄汾县| 富锦市| 门头沟区| 藁城市| 伊宁县| 井陉县| 宕昌县| 鹤岗市| 原平市| 江门市| 平原县| 满城县| 汉寿县| 观塘区| 左权县| 伊川县| 沙田区| 高清| 乌海市| 顺义区| 永仁县| 峨眉山市| 上饶县| 读书| 洱源县| 汉沽区| 莱西市| 滦南县| 贡山| 滦南县|