a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 編程 > 資訊 > 正文

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

2021-01-25 14:02:27
字體:
來源:CSDN
供稿:網(wǎng)友
在我的印象中,上一次編寫 Java 代碼已是三年前的事兒了。雖然我的第一份工作就是 Java 程序員,但是后來因?yàn)槿萜髋c微服務(wù)的出現(xiàn),Java 就從我的工作中消失了。可萬萬沒想到,如今我和 Java 又一次重逢了,居然還是在微服務(wù)領(lǐng)域。


Java 的優(yōu)勢

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

  如今,以 Kubernetes 為代表的微服務(wù)席卷了全球,讓人感覺 Java 的時(shí)代已經(jīng)成為了過去,而且這些語言無法很好地融入容器與微服務(wù)的生態(tài)系統(tǒng)。

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

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

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

  然而,另一方面,在此次會面中,Java 及其過時(shí)的框架(比如 Spring)也給我?guī)砹藷o窮無盡的煩惱。
  
Java 以及 Spring 的缺點(diǎn)

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

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

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

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

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

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

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

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

  網(wǎng)友看法

  就 Java 是否已死這個(gè)話題,很多網(wǎng)友發(fā)表了各自的看法。

  評論1

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

  ● 你想實(shí)現(xiàn) Rest 服務(wù),那么可以參考 Spring MVC 預(yù)置的功能。

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

  Java 生態(tài)系統(tǒng)非常龐大,需要學(xué)習(xí)的庫和框架也非常多。這些框架可以幫你省卻大量的樣板代碼,但是前提是你需要下一番功夫認(rèn)真學(xué)習(xí)。

  評論 2

  Java 的優(yōu)點(diǎn)很多,包括安全性、分布式、可移植性(一次編譯到處運(yùn)行)、高性能、多線程以及動態(tài)性。

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

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

下一篇:返回列表

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 中文字幕一区二区三区在线视频 | 国产精品无| 日韩美女中文字幕 | 99久久久无码国产精品 | 国产一区二精品区在线 | 久久一区视频 | 国产乱人伦av在线a 久久精品视 | 精品国产一区二区三区性色av | 欧美日韩激情在线 | 98精品国产高清在线xxxx天堂 | 日韩超级毛片 | 91精品国产91综合久久蜜臀 | 亚洲a级 | 91免费小视频 | 国产精品一区免费在线观看 | 国产精品久久久久蜜臀 | 国产一区二区亚洲 | 国产一区二区在线播放 | 成人区精品一区二区婷婷 | 欧美日韩精品一区二区 | 日韩精品一区二区三区在线 | 午夜精品视频在线观看 | 国产乱码精品一区二区三区中文 | 久久人人爽人人爽人人片av不 | 欧美日韩在线观看中文字幕 | 久久精品国产视频 | 在线看亚洲| 日韩资源在线 | 国产不卡免费 | 免费 视频 1级 | av在线成人| 国产精品中文字幕在线 | 日韩在线二区 | av在线天堂| 天天草狠狠干 | 国产精品毛片无码 | 午夜视频你懂得 | 日韩www| 国产电影一区二区在线观看 | 欧美日韩国产精品 | 玖玖视频在线 |