色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

為什么開發人員認為Java很復雜

程序人生 ? 來源:CSDN技術社區 ? 作者:章雨銘 ? 2022-04-12 18:10 ? 次閱讀

以下為譯文:

我擔任過架構師、技術負責人以及高級開發工程師,在我的職業生涯中,Java是我主要使用的編程語言。近年來,我也有時會使用Go、Node.js和.Net技術。我發現Java,尤其是SpringBoot,是建立企業級應用最常用的平臺。

在一些有關編程語言選擇的討論中,我注意到有些人不喜歡Java。在一些社交媒體上,我看到很多對于Java復雜性的調侃。雖然我很享受其中的幽默感,但是這么多人都認為Java很復雜,我很好奇其中的原因。這也導致一些剛剛開始工作,甚至根本沒有接觸過Java的人也強烈抵觸Java,認為Java很復雜。

如果一些有經驗的開發人員認為Java很復雜,那么他們大概率是在2004受到過Java的“傷害”,反而也能夠理解他們了。當時很多人在使用JSF 1.x(JavaServer Faces)時肯定都發過誓,說有生之年再也不碰JSF項目。即使JSF 2已經改進了許多,仍然有一些人不愿意再次嘗試JSF。我想Java對于一些人來說也是這樣。

所以,不能夠排除有的人因為過去糟糕的經歷,而認為Java很復雜。也許有的問題,我們并沒有重視,因為我們已經習慣了,所以不再把它們看作是問題,但對有些人而言,并非如此。另外,可能有更好的編程語言或者平臺,但我們沒有意識到,這也導致了每個人對于Java的看法不一。當然,業界不同的意見很重要的,適當地聽取一些別人的意見,也便于我們在下一個項目中選擇合適的技術棧且做出更好的決定。

基于這一點,我在Twitter上提出了這個問題:

看到這么多人認為Java比其他語言復雜,我感到很驚訝。因為我主要使用Java工作,近年來我也使用過Go和Node.js,我認為Java沒那么復雜,而且更具有生產力。

有什么具體的觀點可以說明為什么你認為Java很復雜嗎?

- Siva (@sivalabs) 2022年4月1日

很多人都給予了我回復,包括一些新手、專家和一些行業傳奇人物。

有趣的是,在對Java提出批評的同時,也有很多人對Java平臺表示贊賞。

我把這些評論歸類,并加上了我自己的看法。

Java糟糕的入門體驗

作為一個擁有超過15年Java開發經驗的開發者,我對Java生態系統了如指掌。所以我知道我可以安裝哪種JDK、如何去管理多個JDK版本、有哪些IDE、構建工具、常用庫等等。

但是對于剛開始接觸Java的新手而言,他們更多的是這樣來入門的:

我想安裝Java,谷歌搜索讓我訪問Java的下載地址:https://www.oracle.com/java/technologies/downloads/

我不確定Oracle JDK是免費使用的還是需要付費的商業版本,就自身而言,我想使用免費并且開源的版本。

經過進一步搜索,我了解到Oracle JDK有一些免費的替代品,如OpenJDK、AdoptOpenJDK、Amazon Correto、Microsoft OpenJDK、Zulu、Temurin。但我不知道它們之間有什么區別,于是我隨便選擇了一個(OpenJDK)。

安裝了OpenJDK,設置了JAVA_HOME,并將JAVA_HOME/bin添加到PATH中,我就可以開始使用了。

打開VS代碼,創建了一個.java文件,復制粘貼HelloWorld程序,然后做了javac HelloWorld.java nad java HelloWorld

準備寫一個測試。谷歌建議我使用JUnit。

如何使用JUnit庫?再次在谷歌上搜索,大多數文章都顯示將JUnit與Maven或Gradle一起使用。

什么是Maven/Gradle?好吧,它們是構建工具。于是我又安裝了Maven/Gradle,搞定...

如何創建一個Maven/Gradle項目?大多數教程都展示了使用Eclipse或IntelliJ IDEA創建項目。所以現在我需要安裝一個IDE。

從IDE創建Maven/Gradle項目后,我發現為了構建HelloWorld項目,我已經使用了一半的流量......好吧,沒關系,我的流量充足。

雖然這個過程看起來沒那么容易,但是也沒那么可怕。而且,很多任務都是一次性設置的。但是,無形之中也給入門級小白一種印象:Java需要復雜的設置,沒有繁瑣的IDE設置就無法使用Java。

而JavaScript或者Node.js開發者的 "入門經驗 "是這樣的:

根據你的操作系統安裝Node.js

進行構建

$ npm init --yes$ npm install express$ npm start$ npm test$ npm build

Node.js有一個內置的默認打包管理器npm,這是一種管理第三方依賴關系的方法。如果對npm不滿意,我可以使用yarn或pnpm,但我有工具鏈來執行開箱即用的普通任務。

與Java相比,這確實很容易上手。

Java專家是怎么做的?

對于Java技術專家而言,他們會采取非常簡單的方法,譬如使用SDKMAN。

$ curl -s "https://get.sdkman.io" | bash$ source "$HOME/.sdkman/bin/sdkman-init.sh"$ sdk list java$ sdk install java 17-open$ sdk install maven$ sdk install gradle$ sdk install jbang$ gradle init <- For gradle project$ mvn archetype:generate -DgroupId=com.mycompany -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false <- for creating maven project

	

SDKMAN還支持安裝其他各種工具,如Maven、Gradle、JBang等。如果你想以學習為目的使用Java,我建議你使用JBang。

雖然大多數的Java開發者都使用功能全面且強大的IDE,如Intellij IDEA、Eclipse或NetBeans,但你也可以用VS Code來開發Java程序。

核心標準庫不夠用

通過調研,我們還發現了以下一些問題:

一個常見的問題是Java的核心標準庫不夠用,許多任務需要一些外部庫,這也是事實。

沒有內置的測試庫、JSON(取消)編組支持,等等。

雖然Java NIO是一個很大的進步,但與其他語言相比,Java中的文件I/O仍然是復雜而冗長的。

沒有內置的(類似Kotlin)對不可變數據結構的支持。

我的觀點

Java有很好的標準庫,如Collections、Streams、Java NIO等。

使用文件I/O、JDBC等仍然感覺非常低級和冗長。

有很好的第三方庫,如commons-lang、commons-io、Jackson、Gson、Vavr、Eclipse Collections來執行這些任務。

在我看來,添加第三方庫并不是一個大問題。

挑戰在于,當有太多的選擇時,新手們會感到困惑,不知道該選哪一個。

最啰嗦的語言Java

Java是最啰嗦的語言,這是對Java最常見的評論。

(這只是表明你還沒有使用過Go語言)

我的觀點

人們討厭setters、getters等,但我不認為這有什么不好。因為可以用Lombok和Records來避免編寫模板。通過使用正確的庫,可以編寫出不那么冗長的Java代碼。

事實上,我認為Java在冗長和簡潔之間取得了適當的平衡。通常,基于Java的企業應用程序會被維護很多年,而被認為冗長的東西實際上會幫助人們理解它。

其中一個回答說明了一切。

任何時候,我都會選擇傳統的Java而不是傳統的Node.js。

復雜的 "企業級"產品

另一個常見的話題是關于復雜的企業級產品,如ClassLoaders、JNDI、OSGI、JMX、Reflection、AOP、ByteWeaving、Dynamic Proxies、應用服務器等。

我的觀點

十年前,我在EJB 2中使用EAR打包,我知道處理ClassLoader的問題是多么令人沮喪。另外,

我在JBoss/WildFly等應用服務器中部署Spring應用時,也有處理類加載器問題的經驗。

幸運的是,在過去的7、8年里,我沒有再使用EJB、OSGI、JMX、應用服務器。在現代的Java世界中,應用程序被構建成fat jars,而框架則負責做AOP、ByteWeaving、動態代理等。

除非你還在開發傳統的應用程序,否則我認為你不會用現代Java技術棧來處理這些問題。

庫作者處理的問題越來越復雜

與典型的商業應用開發者相比,高級用戶、庫作者要處理的復雜性達到了全新的高度。

一些高級用戶提到關于Java的挑戰是:

類的加載

類型擦除

功能性接口的異常語義

反射

原理

空值

默認可變性

多線程

通用平等

因為我沒有建立過任何復雜的庫,所以我沒有太多的話語權。

除此以外,還有一些問題。

微服務的高內存占用率

Streaming arch分層在一個老化的生態系統上,其后果不甚明了

太多的抽象性

雖然現代框架使專業開發者很容易構建應用程序,但對于新手來說卻變得很困難。大多數的框架都是非常抽象的。當他們試圖多了解一些東西的時候,就像剝洋蔥一樣,發現需要了解的東西無窮無盡。

非本地的FP支持

雖然從Java 8開始,Java增加了一些函數式編程支持,但Java絕對不是作為函數式編程語言設計的核心。有些人提到他們可以用FP構建軟件,比用OOP好用得多。你也可以在Java中應用一些FP的概念,如純函數、不變性,但不會像Clojure或Haskell等FP語言那樣自然。

其他原因

使用舊版應用程序的幾率更高

糟糕的面試經歷

“x語言很復雜”不可信

我之所以問 "為什么你認為Java很復雜?"是為了了解別人的觀點。雖然我不同意一些觀點,而且有些事情對我來說不是什么大問題,但這有助于我理解其他人的想法。

在我看來,任何語言、框架和庫都是為了解決一個主要問題而創建的,在這個過程中,它可能也會有一些非主要的功能。Java被設計成面向對象的語言,如果你想讓它成為一種功能編程語言,它就沒有Clojure或Haskell那么好。每種編程語言都有它的利基領域,比如Python用于機器學習,Go和Rust用于系統編程,Java和Node.js用于企業應用開發等等。

Java的優勢在于建立大型企業應用程序,而不是在控制臺中打印 "Hello World"!!!。Java生態系統的發展是為了滿足企業的需求,并提高開發人員的生產力。

在一個典型的企業商業應用中,你需要通過與其他幾個外部系統的集成來構建復雜的業務流程,以及與關系型數據庫、NoSQL數據庫、消息傳遞系統、緩存提供商、云服務等進行交互。

是的,你需要學習和了解大量的東西,才能有效利用這種快速應用開發平臺。這是為了實現這種生產力可能需要付出的代價。

不要因為互聯網上有 "語言X很復雜 "的調侃就簡單地拋棄任何編程語言或者平臺。不要因為聽信別人根據他們2004年的經驗說 "X語言很復雜 ",就一直重復這個說法。自己試試吧,你可能喜歡,也可能不喜歡。值得一看的是,這些舊的東西是否仍然糟糕,又或者經過這些年,它們已經有了很大的改進。

原文標題:那些被 Java 復雜性嚇退的開發者們

文章出處:【微信公眾號:程序人生】歡迎添加關注!文章轉載請注明出處。

審核編輯:湯梓紅


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • JAVA
    +關注

    關注

    19

    文章

    2966

    瀏覽量

    104702
  • 編程
    +關注

    關注

    88

    文章

    3614

    瀏覽量

    93686
  • 開發人員
    +關注

    關注

    0

    文章

    19

    瀏覽量

    6590

原文標題:那些被 Java 復雜性嚇退的開發者們

文章出處:【微信號:coder_life,微信公眾號:程序人生】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    RemoTI基本遠程開發人員指南

    `RemoTI基本遠程開發人員指南目錄`
    發表于 03-16 16:28

    嵌入式開發人員需要重點監控的五個重要特征

    特征密切相關。無論一個嵌入式系統多簡單或多復雜,有5個關鍵特征是需要開發人員特別留意的。有一些特征顯而易見,如RAM和ROM的使用情況;還有一些特征容易被開發人員忽視,如系統時序和執
    發表于 03-02 13:23

    java開發人員不了解jvm調優對工作有影響嗎

    作為一名java開發人員,不了解jvm調優對工作有什么影響?
    發表于 04-10 11:57

    用于物聯網開發java

    具有巨大的互操作性,因此自然而然地,它是復雜物聯網項目的優秀選擇。物聯網程序員傾向于Java,因為它的多功能性和靈活性。開發人員認為它是物聯網的理想選擇,因為它一次編寫就可以在任何地方
    發表于 12-24 14:12

    開發人員看的視頻

    英特爾?軟件頻道旨在通過向開發人員提供示例,教程,提示,技巧以及如何將開發人員與影響者,創新者聯系起來,幫助他們。
    的頭像 發表于 11-01 06:26 ?2393次閱讀

    什么是英特爾開發人員專區

    什么是英特爾?開發人員專區? 觀看此視頻,了解正在使用工具和資源滿足編碼需求的軟件開發人員
    的頭像 發表于 11-12 06:55 ?2480次閱讀

    WebVR:開發人員使用的資源介紹

    這是WebVR系列的最后一集。 在這里,我們將向您介紹一些可供開發人員和愛好者使用的資源。
    的頭像 發表于 11-12 06:05 ?1903次閱讀

    英特爾開發人員專區:Android開發

    Android *英特爾?開發人員專區
    的頭像 發表于 05-31 09:37 ?2901次閱讀

    Intel開發人員專區

    Intel?開發人員專區
    的頭像 發表于 05-31 09:24 ?1608次閱讀

    開發人員的應用程序和網絡安全

    ,揭示了網絡安全問題與涉及應用程序的網絡安全支持之間的差距。報告發現,大多數開發人員(85%)認為安全性對于編碼和開發過程非常重要,而75%的開發人員則表示他們對這些應用程序的安全性感
    的頭像 發表于 11-22 11:01 ?3268次閱讀

    為什么開發人員和設計師需要動畫原型

      使用動畫原型是設計人員開發人員改進應用程序和界面創建過程的一種極其有效的方法——一種簡化復雜操作的有價值的方法。
    的頭像 發表于 07-04 09:12 ?1139次閱讀

    IoT 開發人員必須考慮設計和安全性

    IoT 開發人員必須考慮設計和安全性
    的頭像 發表于 01-03 09:45 ?516次閱讀

    IzoT BACnet 開發人員指南

    IzoT BACnet 開發人員指南
    發表于 03-13 19:31 ?1次下載
    IzoT BACnet <b class='flag-5'>開發人員</b>指南

    IzoT BACnet 開發人員指南

    IzoT BACnet 開發人員指南
    發表于 07-04 20:48 ?0次下載
    IzoT BACnet <b class='flag-5'>開發人員</b>指南

    MSPDebugStack開發人員指南

    電子發燒友網站提供《MSPDebugStack開發人員指南.pdf》資料免費下載
    發表于 12-05 14:49 ?0次下載
    MSPDebugStack<b class='flag-5'>開發人員</b>指南
    主站蜘蛛池模板: 校花娇喘呻吟校长陈若雪视频| 又硬又粗又大一区二区三区视频| 亚洲国产成人私人影院 | 小夫妻天天恶战| 在线观看国产区| 二级毛片免费观看全程| 久久99r66热这里有精品| 日本一本二本三区免费免费高清| 亚洲精品123区| WWW亚洲精品久久久乳| 好爽别插了无码视频| 琪琪色在线播放| 亚洲午夜久久久久中文字幕| 不良网站进入窗口软件下载免费| 国色天香社区视频免费高清3| 欧美人与动交zOZ0| 亚洲欧洲日韩视频在钱| 被窝伦理电影午夜| 久久国产精品萌白酱免费| 色美妞论坛| 91久久99久91天天拍拍| 国产午夜一级淫片| 女神被调教成了精盆| 亚洲日本一区二区三区在线不卡| 哺乳溢出羽月希中文字幕| 久久热国产在线视频| 亚洲AV色香蕉一区二区三区| thermo脱色摇床安卓下载| 久见久热 这里只有精品| 忘忧草日本在线WWW日本| 99在线观看精品| 久久亚洲伊人| 亚洲精品无码久久久久A片| 成人亚洲精品| 男生脱美女内裤内衣动态图| 亚洲精品婷婷无码成人A片在线| 俄罗斯XX性幻女18| 欧美xx69| 1V1各种PLAY女主被肉| 黄色三级网站| 消息称老熟妇乱视频一区二区|