米利唐_后腰_乌克兰足球超级联赛_中国竞彩欧赔 - 足球竞彩分析

集團官網
  • 國家級全民數字素養與技能培訓基地
  • 河南省第一批產教融合型企業建設培育單位
  • 鄭州市數字技能人才(碼農)培養評價聯盟

為什么小白往往覺得Java很難學?

編輯:云和數據 日期:2023-06-26 10:37

有不少同學在剛接觸Java時會崩潰,如Java糟糕的入門體驗、核心標準庫不夠用、最啰嗦的語言Java、復雜的 “企業級”產品、庫作者處理的問題越來越復雜、太多的抽象性、非本地的FP支持等等原因。

今天我們一起來看一下,覺得Java技術難學的原因:

1、Java糟糕的入門體驗

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

很多任務都是一次性設置的,但無形之中也給入門級小白一種印象:Java需要復雜的設置,沒有繁瑣的IDE設置就無法使用Java。

2、核心標準庫不夠用

通過調研還發現了以下一些問題:一個常見的問題是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來執行這些任務。添加第三方庫并不是一個大問題。挑戰在于當有太多的選擇時,新手們會感到困惑不知道該選哪一個。

?

3、 復雜的 企業級產品

另一個常見的話題是關于復雜的企業級產品,如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技術棧來處理這些問題。

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

與典型的商業應用開發者相比,高級用戶、庫作者要處理的復雜性達到了全新的高度。一些高級用戶提到關于Java的挑戰是:類的加載、類型擦除、功能性接口的異常語義、反射、原理、空值、默認可變性、多線程、通用平等。

因為沒有建立過任何復雜的庫,所以沒有太多的話語權。除此以外還有一些問題:微服務的高內存占用率、Streaming arch分層在一個老化的生態系統上,其后果不甚明了。

5、太多的抽象性

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

6、非本地的FP支持

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

7、其他原因

使用舊版應用程序的幾率更高;糟糕的面試經歷。

?

8、x語言很復雜不可信

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

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

Java的優勢在于建立大型企業應用程序,而不是在控制臺中打印 “Hello World”!!!。Java生態系統的發展是為了滿足企業的需求,并提高開發人員的生產力。在一個典型的企業商業應java用中,你需要通過與其他幾個外部系統的集成來構建復雜的業務流程,以及與關系型數據庫、NoSQL數據庫、消息傳遞系統、緩存提供商、云服務等進行交互。

?

java培訓可以選擇云和數據,云和數據以高品質教學質量贏得好口碑,為企業輸送大批優質IT人才,致力于培養高級軟件工程師;現開設iava培訓班,還有產品經理、HTML&JS+前端、大數據、UIUE設計、軟件測試等9個精品學科,19所直營分校遍布全國;引大廠技術人才,成立研究院和培訓院,致力于使課程研發和師資培訓精細化、品質化、專業化。

相關內容

搶先一步 鴻蒙(HarmonyOS)應用開發者高級認證 免費考! 適合人群計算機相關專業在校生(技師、中職、高職、本科、研究生)對鴻蒙(HarmonyOS)有興趣的非計算機相關專業在校生目前正在從事移動應用的開發者目前正在從事計算機行業相關的人計算機專業高校老師所有對鴻蒙(HarmonyOS)有興趣的人 培訓方案掌握鴻蒙的核心概念和端云一體化開發、... 什么是Java的多態性(polymorphism)?它有哪些不同的形式? 多態性是Java面向對象編程的一個重要概念,它允許不同的對象以一致的方式響應同一個方法調用,具體表現為對象在運行時可以表現出多個不同的形態。多態性主要有兩種不同的形式:編譯時多態性(靜態多態性)和運行時多態性(動態多態性)。1. 編譯時多態性(靜態多態性):   ... 如何學習和搭建Hadoop開發環境? Hadoop是大數據處理領域的重要平臺,能夠處理和分析大量數據。為了有效地利用Hadoop,我們需要學習其基礎知識,并正確搭建開發環境。下面是詳細的學習和搭建指南。一、學習Hadoop基礎掌握基礎概念和原理Hadoop主要由HDFS和MapReduce兩部分組成。HDFS是分布式文件系統,Ma... UI 設計學習如何進階成為高手 我總結了六種方法,幫助你走出舒適區,提高技能,成長為自信且經驗豐富的UI設計高手一位經驗豐富的 UI 設計師,往往十分看中應用程序界面的吸引力和視覺刺激,確保滿足用戶期望和需求。但是,如果你已經在 UI 設計圈摸爬滾打多年,仍然沒有出色的作品,那你極有可能是因為陷入了一個舒適圈,UI技能一直原... 在Java中Executor和Executors的區別? 在Java中,Executor和Executors都與線程池和并發執行有關,但它們是不同的概念和類。1.ExecutorExecutor是一個接口,位于java.util.concurrent包中,用于表示一個執行任務的執行器。它只定義了一個方法:void execute(Runnable c... String類型的常見命令有哪些? String類型,也就是字符串類型,是Redis中最簡單的存儲類型。其value是字符串,不過根據字符串的格式不同,又可以分為3類:string是普通字符串,int整數類型,可以做自增、自減操作,float浮點類型,可以做自增、自減操作。String的常見命令有:SET:添加或者修改已經存在的...