首頁>Club>
6
回覆列表
  • 1 # IT人劉俊明

    作為一名從業多年的程式設計師,同時也出版過Java程式設計書籍,所以我來回答一下這個問題。

    Java語言隨著網際網路的發展,其自身的生態體系不斷得到完善,應用邊界也不斷得到拓展,目前在Web開發、大資料開發、移動終端開發等領域均有廣泛的應用,可以說不同的應用方向也需要具備不同的知識結構,所以說精通Java還是具有一定難度的。

    Java語言自身的構成分為兩個大的部分,一大部分為Java虛擬機器,另一部分為Java語言自身的語法。按照Java語法要求編寫的程式需要透過Java虛擬機器完成載入、校驗、編譯和執行,而Java虛擬機器的作用就相當於Java的執行環境(容器),它自身需要完成大量的操作,包括程式碼安全性、垃圾處理、事件處理、資源管理等內容。所以精通Java開發一方面需要清晰Java語法,另一方面需要了解Java虛擬機器的執行機制。

    對於初學者來說,學習Java程式設計都是從學習Java語法開始的,然後學習Java的Web開發、資料庫開發、分散式開發等內容,這個過程通常是大部分學習者的學習路線,難點在於Java面向物件概念的理解,也就是理解各種“抽象”。這部分雖然具備一定的難度,但是大部分學習者是能夠學得會的,區別往往在學習時間上。

    對於從事平臺開發的研發級程式設計師來說,還需要系統的學習Java虛擬機器的內部機制,透過從深層次瞭解Java虛擬機器的構成從而輔助平臺類產品的研發,重點在於效能的提高。通常情況下需要了解Java虛擬機器的體系結構、核心演算法等內容,這部分內容的難度還是比較大的。當然,要想系統瞭解Java虛擬機器的整體結構,通常還需要閱讀大量的原始碼。

  • 2 # 此生唯一

    JAVA之父詹姆斯.高斯林開發了JAVA語言之後,有一次看到了《重構—改善既有程式碼的設計》一書之後,說了一句話:“如果我早看到這本書,JAVA就不會是這個樣子了”!

    估計連JAVA之父也不敢說全部吃透了JAVA生態了,JAVA涉及到的東西實在是太多了,作為一門高階程式語言,JAVA確實很容易用來開發,JAVA封裝了大量的API,基本覆蓋了我們日常開發中的幾乎全部功能,但如果要深入底層,那麼很多人就成為“門外漢”了!

    比如我去小公司面試的時候,常常遇到問題是HashMap怎麼用?concurrentHashmap怎麼用?而在大公司這樣的問題往往變成了concurrentHashMap底層是怎麼結構?為什麼執行緒安全?為什麼比起synchronizeMap效能好?

    jvm相關的東西更是難倒大多“英雄好漢”,JAVA記憶體模型,記憶體結構,類載入機制,類載入器,gc的演算法,gc收集器有哪幾種?什麼時候該用哪一種?jvm怎麼調優?

    這樣的問題面試基本撂倒一半人!

    這只是冰山一角,還有諸如反射,動態代理,三種io(由此引申的netty,nginx等),多執行緒方面的技術(執行緒池底層,生產者消費者模型,執行緒安全等等),JAVA每個版本的新特性,更不論JAVA生態中的spring相關框架,搜尋引擎,大資料開發等等每一個知識點都是幾本書才能學完的東西!

    一個人的精力實在是有限,如果非要追求對JAVA所有東西精通,終有心力交瘁之時,只要掌握大多數重點即可,我一直在分享JAVA方面比較熱門的技術,有需要的朋友可以去看看,肯定您能有所收穫!

  • 3 # 極客宇文氏

    敢說自己精通Java的有兩種人,一種是牛人,另一種是愛吹牛的人。

    可能在Java領域工作了三五年的人都沒有資格在簡歷上寫下精通Java兩個字,同樣的,寫精通c++或者其他的也不多。

    因為精通一門程式語言不僅僅是對語法瞭如指掌,還要深挖和拓寬。

    難點一,拓寬Java:

    Java作為橫行幾十年的語言,而且一直處於開源的狀態,生態圈幾乎是程式語言裡最為龐大的。無論是大資料還是中介軟體,都可以用Java進行開發。而與Java相關的技術能精通一門就已經很厲害,最重要的是Java方面的很多技術都是要相輔相成。

    比如開發一個web系統,Java相關的spring家族框架,Java相關的MySQL資料庫,都是最基本的,還有諸如快取Redis,負載均衡Nginx等等。

    玩Java,其生態圈就足夠你玩一輩子不重樣。

    難點二,深挖Java:

    Java相關技術已經琳琅滿目,更可怕的是去深挖其中某個技術。比Java最常用框架spring,你如果只是單純的會用,頂多在簡歷上寫熟練,而如果你想寫精通spring,那你沒把原始碼看個三五遍是沒有這種資本的。而很多人喜歡提的Java虛擬機器更是接近作業系統的東西,研究起來枯燥而難懂。

    更重要的是,拋開Java相關技術,Java自己的語法特性比如多執行緒,網路程式設計,以及反射就足以讓人花心思研究。

    不過歸根結底,深挖Java底層的東西,必須精通資料結構,設計模式,最重要的還是Java自己的語法特性。

  • 4 # 專注java開發

    敢說.完全吃透JAVA的生態有兩種人,一種吹牛逼的,另一種完全不懂JAVA的! 古人云:JAVA難難於上青天!

  • 5 # 手機使用者66173947076

    學會Java,其他語言都是浮雲,說的就是Java不僅是面向物件的嚴格的語言,更因為社群和生態的龐大,涉及到幾乎所有的方方面面,所以學好Java,基本上其他語言該涉及的基本都大同小異,只是語法方面的區別了,但是要全部都精通,那基本很難,要刻意去全面學習,是愚蠢的。學習Java最好的姿勢,就是在工作中,碰到問題,然後深挖涉及的內容,力爭在這個點上基本無憂,隨著開發時間的積累,逐步積累了屬於自己的知識庫和經驗庫,對Java的認識也會呈螺旋性逐步提升…

  • 6 # 我可愛的小博博

    java 很人性化 ,學java 要多思考。而不是一開始就上手寫。學會了 基本的資料型別 基本語法後 ,等到了學繼承 封裝 多型 這些高階特性的時候 一定要多思考 為什麼什麼用這些特性? 結合實際生活思考 。其實這些程式設計思想都是源自生活 最終的目的是讓我們 的程式 更健壯。等你學會了思考 其實java 越學越簡單

  • 7 # 蘇北小馬鍋

    我目前在美團點評從事Java後臺開發的工作,學習Java有七八年了,從事Java工作兩年。根據我這些年學習、使用Java的經驗,Java這門語言並不難學,有點程式設計基礎的人很容易上手,學習個年把時間甚至就可以勝任Java開發的工作,那能勝任工作是不是就精通Java了,不然,Java博大精深,單單是學透就就很困難。我研究生畢業找工作的時候,學習Java已有五六年,也參與過課題組專案的開發,自認為Java學的挺不錯的動手能力也可以,但是在找工作投簡歷的時候從不敢寫“精通Java”,只敢寫“熟練使用Java”。我們單位從事Java開發的同事小到敲程式碼的碼農大到CTO,沒聽誰說精通Java,那麼精通Java到底有多難呢。要精通Java,個人認為至少且不止要掌握以下技術:

    紮實的計算機基礎

    一般學習計算機專業的同學都會系統的學習過計算機基礎,包括資料結構、計算機網路、資料庫、作業系統。這些知識我很多都是學完就還給老師了,真正的大牛是信手拈來,隨便一個知識點都能講明白。

    Java知識

    Java是一門博大精深的程式語言,語法不復雜,可是涉及的知識點卻是非常的多。要把這些知識點都理解透,並且會應用。不然,別人問起某一個知識點,你如果講不通,豈不是很丟人,更何談精通呢?

    Java web 技術

    目前大公司使用Java,多以開發web後臺為主,所以Java web開發的各種框架都要熟練使用,Java web開發使用到的各種庫也要拿來就能用。另網路絡協議、網路安全的東西也要熟悉。

    Java併發

    現在的開發都面向大資料、高併發的應用場景,Java併發程式設計是必會且必熟悉的內容,並且要懂Java併發底層的實現,併發程式設計是一門藝術,真正掌握好這門藝術並不容易。

    Java伺服器

    伺服器的部署,伺服器叢集開發,這些知識也是必知必會的技能。在參加工作之前我這方面的知識就比較欠缺,參加工作之後一頓惡補。

    Java虛擬機器

    除了學習Java虛擬機器的知識之外,更要理解Java虛擬機器底層的架構、工作原理、垃圾回收機制、記憶體、堆疊等,更重要的是Java虛擬機器調優。

    很多很多其它

    因為知識點太多我不再一一羅列,要會一門指令碼語言、熟練使用Linux系統、熟練使用Linux命令、熟練操作各種資料庫、資料庫快取、資料庫索引、大資料處理、各種演算法、分散式、負載均衡、訊息佇列、kafka、Hadoop、Hbase、機器學習等等還有很多我不知道的知識。

    我個人認為“精通”並沒有必要,什麼知識都學了,啥都懂,看上去很厲害其實可能就是一個孔乙己。我們開發人員追求的應該是不斷提高自己創新能力、解決問題的能力,關鍵時候解決問題用我必行,而不是一昧的追求學富五車。

  • 8 # AliceBillCindy6688

    難點一:規範多而繁雜,並且有的應用不是太好,如JavaEE中就有很多的廢棄規範,有javaSE (包含語言規範、jvm規範), JavaEE(30多個), JavaME(不是太清楚)

    難點二:各類框架豐富,層出不窮,但同樣帶來了選擇困難。而且有很多框架,也是有很多的坑,一方面帶來了開發的便利,另一方面也是加大了學習的成本。例如:spring框架,原本是用來改進JavaEE中的EJB規範,使得用POJO就能達到企業級開發的效果,號稱是輕量級開發。但是,它最大的問題在於spring本身並不是規範的標準實現,也不是一套標準的規範框架,所以,每個人的玩法都不一樣。造成對同一個問題的各種解法,沒有標準,不統一,進而增加了學習和溝通的成本

    難點三:隨著網路、業務的需求發展和變化,架構也在不斷演化,對JDK的要求也越來越高,JDK不斷變化升級,各類新的框架不斷推出,需要付出更多的時間來適應變化。從一次開始的分散式,SOA,微服務,serviceMesh,再到serverless……

    難點四:最關鍵的是,人的時間精力是有限的。每一個框架、技術深耕底層,都不是說一朝一夕就能搞定的。況且,它在不斷的迭代變化,推陳出新。

  • 9 # 動力節點Java培訓

    確實,之所以大家總在說Java行業飽和了,也都是這個原因,初級水平程式設計師過多,高階及以上的程式設計師比較缺失!總在說提升核心,提高核心競爭力和學習能力才是在職場上立足的王道。所以學習過程中選擇適合自己的培訓機構非常重要!

  • 中秋節和大豐收的關聯?
  • 外賣遇到使用者差評,應該怎麼回覆好呢?