Java註定要走向失敗?

2021-01-08 Java從零開始

有些人,尤其是年輕人,在知道這一點時會睜大眼睛。Java比較老式,與現代語言相比效率低下,並且註定要失敗,這基本上就是我一直聽到的內容。但是真的是這樣嗎?

老式的

是的,Java提供的基本構造和約束是老式的,並且依賴於20年前的代碼編寫方式。程序設計語言不是在無菌氣泡中創建的。開發人員的習慣和需求對於語言設計至關重要,而發明者試圖將創新注入其中,而忽略人們將如何實際使用它卻是愚蠢的。Java的第一個裡程碑可追溯到1995年,儘管它的一些基礎塊至少在10年之前就具有遠見,但很顯然,在 24年後的 29 年……還不算什麼。

但是,這不僅僅是時間問題。在過去的十年中,發生了很多變化。其中一些內容似乎與本主題無關,但實際上是討論的中心。例如,廉價內存的更大可用性在大規模重新採用生產軟體中的功能編程中起著核心作用。然後,這與採用反應式編程宣言有關。

可訪問和可管理的雲計算簡化了微服務模型的概念化,當容器成為現實時,微服務模型就可以發揮生產作用。

然後,微服務模型賦予了特別適合於某些任務而對其他任務不太出色的程式語言的尊嚴。

它並沒有就此結束。大數據帶來的新挑戰導致了新的任務優化的資料庫系統的發明,該系統能夠吸收大量數據,然後必須對其進行分析。實際上,這並不是導致新語言誕生的原因,而是對現有語言的重新思考,證明它非常適合完成此任務。

更不用說人工智慧的第二青年了。

Python現在已經成為機器學習的黃金標準,但是如果您快速瀏覽一下Wikipedia頁面,您很快就會意識到它比Java更舊,並且可以追溯到1990年!

那麼R,數據分析的常見選擇呢?1993年。

JavaScript嗎?奇怪的是,1995年,就像Java。

二郎?1986年…

為什麼這些語言不是老式的,而是Java?

因為我們改變了,並且與我們在一起,所以挑戰也隨之改變。

例如,Python一直是實用程序和數據處理程序的絕佳腳本語言,但通常認為它不適用於大型企業應用程式。但是,微服務通常是由小型程序和數據管道組成的,這些小型程序和定義良好的小型程序主要是功能性步驟。

JavaScript一直是使網頁動態化的唯一解決方案,但是隨著複雜的Web應用程式的激增,將其也帶到伺服器端也是合理的。

總而言之,Java之所以被認為是過時的,是因為它非常適合使用數百萬行代碼來構建胖的(大多是單片的)應用程式,需要大量的計劃和嚴格的順序,而Java則需要這樣做。

嘗試使用JavaScript進行同樣的操作,您將很快意識到「死亡不是終點,而只是過渡」(同上)。

無效的

相關。

我經常用這個比喻來解釋Java:

如果您需要建造一個火柴盒,則首先要拿10噸木材,建造一個原木,然後將其砍成火柴盒。

Java強制採用一種鼓勵建立適當的類層次結構的正式,嚴格的方法,因此不可避免地要像白痴一樣以適當的方式設置所有內容,即使是很小的任務。

就是這樣。鑑於我們在上一章中已經說過的話,在Java中沒有一件容易的事會很輕鬆。

請注意,簡單並不是說易於實現,而是在體系結構方面很容易。編寫複雜的算法是一項艱巨的任務,我發現在Python中更容易做到。

在這一點上,很明顯,我們正在迭代相同的概念:正確的工作工具。

Java是(並且曾經是)一種非常通用的程式語言,已被用來解決各種情況下的各種類型的問題,但是隨著時間的推移和挑戰的變化,Java似乎越來越無法倖免。不再是專業化了-不是因為它已經發展成一種專業語言,而是因為其他語言在特定任務中的適用性強。

如果您要構建具有大量內部編排,龐大的代碼庫,瘋狂的並行性等的大型企業平臺(或至少是其中心節點),那麼Java仍然是野獸。等等,是嗎?

Java註定要失敗

就像這條黑暗的勵志名言中所解釋的那樣:「不要害怕未來,您不會經歷很多事情。」 此時您應該大聲笑...

隨著年齡的增長,Java非常像開發人員。您不像十年前那樣頭腦清醒,但是作為交換,您更加明智,更加穩定和可靠。當然,您仍然可以學習Rust,但是它永遠不會像比您小10歲的人感到正確。同樣,現代化Java的競賽也在不斷地進行,當新功能問世時,您會覺得在適當的時機之後,它們已成為現實。例如,當他們第一次引入lambda時,反應不是「是的!狂歡吧!」 但更多「看在上帝的份上,你花了這麼長時間嗎?」

另一方面,人們沒有意識到Java的最大成就不是語言本身。

極好的生態系統

規劃大型軟體時,仍然讓我回到Java的是生態系統。Java提供了一流的優質庫,可滿足您在Internet上夢想的一切。

想想Spring,Akka,Tomcat-我可以說幾百個-這些不是車庫項目,而是非凡的成就。我並不是說這不能用其他語言來完成,而是大企業推動Java創造了使此類軟體得以實現的前提條件。到達這裡花了好幾年,時間因素也很重要,因為處於邊緣的20年對於生態系統的成熟是很長的時間。

您可以找到適用於多種語言的特殊庫,但是您很快就會意識到它們是否存在,在很大程度上取決於大型公司是否認可該項目。

例如,找到適用於Python的好的機器學習庫非常容易,而且您不能說Google在其中沒有發揮作用。藉助Facebook,您可以使用React.js(JavaScript)開發出色的Web應用程式。

您實際上是指JVM

除了前面提到的龐大的生態系統之外,Java的最大成就是JVM。雖然該語言可能會因年齡而受到影響,但根據我們普通人可以理解的內容,JVM看起來很健康。

現在,有人可能會說容器化消除了對JVM的需求,從某種意義上講,就是這種情況。實際上,對JVM的最初需求是允許程序在任何OS上執行,但是容器在這方面改變了一切,因為容器提供了可以在任何地方(在紙上)執行的OS 的模擬。

但是JVM不僅限於此。內存管理和垃圾回收,安全性,基本的編程庫以及調試和檢查功能-所有這些使JVM變得非常安全,舒適。

「但是JVM太重而且很慢!」 這是我收到的經典回推,儘管其內存佔用量和引導時間在一定程度上是正確的(這使其非常不適合面向任務的程序),但是從性能的角度來看,最近20年發生了一些事情或者。

以下是使用流行算法進行的一些基準比較:

· Python 3與java

· Node js與java

· GO與java

· Erlang HiPE與java

儘管由於算法只是故事的一部分,所以這種基準測試不能使所涉及的語言公平化,但是您可以清楚地知道JVM絕對不是拖到墳墓場的病態大象。

然而…

我有點同意,儘管JVM仍然運行良好,但Java仍在努力使其在陽光下保持位置。Oracle知道這一點,並正在努力推動Java再次變得出色,儘管這提供了一些出色的結果,但沒有人真的認為這會停止老化過程。這不是一件壞事。

JVM是創建更現代,更有效的語言的平臺。公平地說,並不多,但有些非常成功。

這就是重點。國王沒有死,但那咳嗽聽起來也不好。然而,它的後代在這裡繼承了它的遺產。

· Scala我的第二次戀愛。一種非常強大的語言,是靜態類型化,面向對象和功能性的。儘管仍未被廣泛採用,但它是目前掌握該技術最經濟實惠的技能之一。通常是由Akka actor模型實現豐富的,它是為Play框架提供動力的語言;

· Clojure它是Lisp語言的一種非常受歡迎的方言,並以並發計算中的出色功能而聞名,通常用於處理龐大的數據集。

· Groovy 我通常將動態編程和腳本語言稱為Java語言(但是我確信創建者不同意)。Groovy被廣泛用於腳本編寫目的,也是為Grails框架提供支持的語言。

· Kotlin 最後但並非最不重要的一點是,JetBrains的靜態類型化,面向對象和功能性語言現已成為Google Android開發的首選工具。

而且我們並不是在談論Java的擴展。這些是全新的程式語言,肯定可以借鑑Java的知識,但最重要的是,它們充分利用了JVM和Java生態系統。

但實際上...

Java程式語言不會很快消失。

不僅是因為使用它構建了大量軟體,而且還因為您是否同意它的所有缺陷,它仍然是新項目的非常合適且經過實踐檢驗的選擇。

當然,它的角色發生了變化。從您唯一需要的東西來看,它現在是圖片的一幅,但是很牢固。

即使考慮到我對Scala的致命吸引力,也必須說Oracle和社區在改善Java方面做得不錯,而且我們所有人都在享受這種進步的好處。新功能的質量可以很好地解決它們的回味,比我們想像中的時間表晚了一點。

畢竟,程式語言發展的緩慢進步可能是放棄的標誌,也可能是成功的標誌。當您的語言被如此大規模地使用時,重大更改應引起重視。您進行的每個步驟都需要考慮會產生什麼影響,以及它如何影響向後兼容性。不能掉以輕心。

結論

我以為我已經在該領域工作了很長時間,以了解它的某些特質。當然,在過去的十年中,這個領域的發展加速了,但是進步主要來自於整體。

當這種情況發生時,您可能會感覺到一切都會改變。這些進步的成堆來自他們過度激動的思想家的工作組,他們樹立並大喊大叫。但是,當他們踢起的塵埃落定時,那一刻,您可以清楚地看到成就的真正本質,並從中合理地發揮最大的作用。

就像我說的那樣,Java並沒有走到任何地方,但是以我的誠實觀點,它要想在這些成就中發揮最大作用的努力還遠遠沒有贏。

我對所有Java愛好者或討厭者的建議是:享受這個奇妙的技術時代所提供的多樣性!

最後,開發這麼多年我也總結了一套學習Java的資料與面試題,如果你在技術上面想提升自己的話,可以關注我,私信發送領取資料或者在評論區留下自己的聯繫方式,有時間記得幫我點下轉發讓跟多的人看到哦。

相關焦點

  • 美媒列出3個基本點:拜登註定走向失敗
    目前,美國大選已經基本落下帷幕,不過,拜登入主白宮的道路並不算十順暢,日前,美媒站隊川普,列出2點原因,稱"拜登當選美國總統實際上不佔優勢,所以註定會走向失敗"。
  • 盲目自大的人註定要失敗
    盲目自大的人註定要失敗。自大是前進途中的暗礁,所以,一定要對自己的實力有個清醒的認識,對客觀條件的利弊有一個中肯的平價,只有這樣才能採取切實有效的手段,才能最終取得成功。戰國時期,趙括自幼聰明好學,各類兵書倒背如流。
  • 曾國藩:一旦有「這兩個習慣」,註定是失敗的徵兆,尤其人到中年
    好的作風會帶著他走向更遠的地方,壞的習慣咋會成為這個人一生的弱點。曾國藩在這一點上有很大的領悟,他曾說過人生有兩個習慣一定不能有,一旦有了這兩個習慣,那麼註定是失敗的徵兆。尤其是人到中年。是什麼樣的習慣這麼嚴重呢?一個人的習慣決定了一個人的性格,性格對命運產生著極大的影響,環環相扣。
  • 與B站同為二元次風格,D站為何走向失敗?這些做法註定無法成功
    所以對於網際網路中的創作者們,應該養成良好的作風與素質,畢竟搬運與抄襲行為真的很不禮貌,一旦遭到原創作者的維權,那麼將受到懲罰,D站就是一個很好的例子,可以肯定的說,D站這些年的做法註定是失敗的,山寨了B站,所以它無法走向成功,只有原創與獲取版權才是一個視頻網站能夠得到發展的路徑,這樣才會更長久的發展下去。
  • 臺網友直言:「罷韓」會一步步走向失敗
    對此,有網友認為,「罷韓」已逐漸失去熱度,高雄也日漸恢復生氣,直言「罷韓會一步步走向失敗」。該網友表示,「罷韓」人士積極號召高雄市民「罷韓」,但卻沒想到民心思變的高雄人已經清醒了。「罷韓」註定一步步走向滅亡,少了害群之馬,高雄將逐漸恢復生氣,且比民進黨執政時更好,韓市長政績有目共睹,「罷韓」人士已是強弩之末。
  • 註定失敗的個性化「翻譯」
    從一開始選擇拍攝120回本的《紅樓夢》,這部電視劇便出現了失敗的前兆。續書的後40回跟曹雪芹的原意大相逕庭,這早已成為公論。要尊重曹公的原意,保留小說的哲學思想,就得像87版那樣推翻後四十回另起爐灶,至少要對其大幅修改。
  • 制慧權體系觀點:毫無建樹的勤奮註定是一場失敗
    制慧權體系觀點:毫無建樹的勤奮註定是一場失敗1.需求就是市場。如何管理需求,才是企業首要的任務。今天與健康管理師培訓機構的洽談,應該給對方帶來更好的啟發。因培訓而培訓是傳統的方式,新型的服務方式是打破傳統壁壘,建立良好的就創服務。
  • 雙師課堂註定失敗,這句話說早了
    2016年雙師課堂開始進入大眾視野被廣泛了解的時候,就有聲音高喊「為什麼我認為雙師課堂是註定會失敗的?」反觀雙師課堂走過的2017年和即將走過的2018年,雙師課堂早已不是兩年前的寥寥星火,雙師課堂在近2年的發展與應用速度可能遠遠超出所有教育從業者的預判。
  • 為什麼計劃經濟註定失敗?有大數據有AI也不行
    就能知道計劃經濟註定失敗,有大數據和AI也不行。計劃經濟必須清楚地回答一個問題:我要生產什麼?為什麼必須回答這個問題?都生產不行嗎?小孩子才做選擇題,成年人是我都要。不行。因為生產所需的資源是有限的,資源被用於生產一個蘋果,被消耗掉了,必然沒法用於生產一個梨。而人與人之間的效用是不可比的,你更喜歡蘋果,我更需要梨。
  • 4.Java基礎知識-HelloWorld
    public static void main(String[] args) {System.out.println("HelloWorld");}}運行代碼步驟:在命令行模式中, 切換到文件地址 輸入javac命令對原始碼進行編譯,生成字節碼文件– javac 源文件名.java
  • 有些路,註定要一個人走
    生活是一條河,是深是淺,自己趟過去,才知道,生活是一首歌,是高是低,自己唱過了,才懂得;從一無所知的懵懂少年,到飽經風霜的中年,在生活的熔爐裡淬鍊著,終於明白,有些路,註定要一個人走1、成功的路,要自己走失敗乃成功之母,從小到大,這句話我們耳熟能詳。長大後,誰不想成為行業領域的成功者。只是走向成功的路,與其光環相比,實在有著太多太多的辛酸和不易。
  • 為什麼一定要學Java,簡述Java的六大優勢
    雖然Java有著就業佼佼者的前景,但是對該類人才需求遞增的IT企業很難能夠聘請到足夠的專業Java人才,隨著企業發展,需求加大,越來越多的畢業生走向軟體工程師培訓。簡單:  我們都知道Java是目前使用最為廣泛的網絡程式語言之一。
  • OpenJdk1.8筆記——java啟動流程
    Jdk中java的入口函數文件為openjdk\jdk\src\share\bin\main.c中的main方法(window上為WinMain),然後調用jdk8u-dev/jdk/src/share/bin/java.c的JLI_Launch方法,啟動一個jvm虛擬機;程序入口
  • Java資料庫連接性簡介
    查找JDBC驅動程序要查找您要使用的資料庫的驅動程序,只需對資料庫和JDBC進行網絡搜索。例如,輸入「 mysql jdbc driver」將打開MySQL驅動程序。我挑戰您尋找沒有JDBC驅動程序的Java兼容資料庫!
  • 「大丈夫當如是」和「彼可取而代之」,原來項羽的失敗早就註定
    」大丈夫當如是「和」彼可取而代之「,原來項羽的失敗早就註定劉邦和項羽的故事被人們津津樂道,楚漢的相爭也是成就了很多人,留下很多佳話,就連現在的中國象棋,上邊都劃有楚河漢界。我們也都知道,楚漢爭霸的結局是項羽失敗,最後烏江自刎,而劉邦則是取得了最終的勝利,建立了大漢王朝。對於劉邦和項羽,人們的爭論也是從未間斷。既然有爭論,那麼自然也就有不同的支持對象。有的人說項羽儘管失敗,但他仍舊是個英雄,而劉邦雖然取得了最後的勝利,但他始終就是一個街頭無賴,他配不起這個最終的勝利。但是,他們的結局其實早在多年以前就已經是被註定了。
  • 深入理解Java虛擬機:類加載機制
    調用一個類型的靜態方法的時候使用java.lang.reflect包的方法對類型進行反射調用的時候。當初始化類的時候,發現其父類還沒有進行過初始化的時候。當虛擬機啟動時,用戶需要制定一個要執行的主類(包含main()方法的那個類),虛擬機會先初始化這個主類。
  • 失敗乃成功之母,只有越挫越勇戰勝失敗才能走向成功!
    作者:寶寶知道 嘟嘟的娜媽失敗乃成功之母!這句話你怎麼看呢?我覺得真的挺有道理的。不經歷過失敗了,再繼續總結失敗經驗,然後再次嘗試。怎麼能感受的成功後的那種喜悅和成就感了。你是否失敗過後就放棄了?還是不怕失敗越挫越勇了?我認為我們應該不怕失敗然後越挫越勇。
  • 從Java類庫看設計模式
    好的經驗給我們以指導,並節約我們的時間;壞的經驗則給我們以借鑑,可以減少失敗的風險。然而,從知識層面上來講,經驗只是作為一種工作的積累而存在於個人的大腦中的,很難被傳授或者記錄。為了解決這樣的問題,人們提出了所謂的模式的概念。所謂模式,是指在一個特定背景下,反覆出現的問題解決方案。模式是經驗的文檔化。
  • Java編程中常見的異常
    數組的初始化是對數組分配需要的空間,而初始化後的數組,其中的元素並沒有實例化,依然是空的,所以還需要對每個元素都進行初始化(如果要調用的話)2.java.lang.classnotfoundexception    這個異常是很多原本在jb等開發環境中開發的程式設計師,把jb下的程序包放在wtk下編譯經常出現的問題,異常的解釋是
  • Java重要的基礎概念,一定要牢牢記住
    學好java最重要的就是基礎概念,就像建房子,基礎打好了,才能建起萬丈高樓,所以,我們先從基礎開始,從基礎概念開始。java中把它稱為關鍵字。在java語言中已經被賦予特定意義的一些單詞。關鍵字不能被用作標識符。例如:古代貧民的名字不能和皇帝的名諱相同,相同就要殺頭的哦。下面的關鍵字很多,對於初學者這麼多怎麼記啊,根本不用記,後面這些內容,我們要寫數百遍,數千遍,甚至有些我都寫了數萬遍了。你還用死記嗎?