麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > 資訊 > 正文

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

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


Java 的優(yōu)勢

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

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

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

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

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

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

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

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

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

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

  最后,Java 的發(fā)展搞錯了重點。時至今日,Java 依然在糾結(jié)一些愚蠢的規(guī)則,比如類的命名,類應(yīng)該放入哪個包中,以及變量是私有的還是保護的。反觀 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è)計,并提高可擴展性。對于程序員而言,這意味著將龐大的代碼庫或復(fù)雜的業(yè)務(wù)邏輯分解成更簡潔的小功能,這種方式可以避免在代碼中管理狀態(tài),同時也可以避免并發(fā)問題和多線程的噩夢。

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

  網(wǎng)友看法

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

  評論1

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

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

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

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

  評論 2

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

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

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

下一篇:返回列表

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 国产91在线高潮白浆在线观看 | 天堂成人一区二区三区 | 久久福利国产 | 色网在线视频 | 999久久久国产999久久久 | 久久久国产精品网站 | 99精品国产成人一区二区 | 欧美91看片特黄aaaa | 亚洲精品午夜电影 | 精品小视频| 亚洲午夜免费电影 | 欧美另类综合 | 羞羞色网站 | 黄网站免费在线看 | 久草在线视频网 | 日本在线观看视频网站 | 无码av女优 | 久久99精品久久久久久秒播放器 | 视频在线亚洲 | 久久精品国产清自在天天线 | 日本精品婷婷久久爽一下 | 99国产精品国产免费观看 | 国产精品av久久久久久网址 | 激情视频免费看 | 日产精品久久久一区二区福利 | 亚洲精品一区二区三区大胸 | 中文字幕h | 色妞妞视频 | 神马福利网| 亚洲午夜精品视频 | 久久欧美亚洲另类专区91大神 | 叉逼视频| 热@国产| 成人毛片免费在线 | 亚洲第一成人在线 | 成人午夜网址 | 国产日韩久久久久69影院 | 欧美精品国产综合久久 | 精品一二三区视频 | 午夜偷拍视频 | 97人人草|