想了解嵌入式和java學(xué)習嗎?想了解到底是學(xué)Java還是嵌入式?,我花了半個(gè)月,整理出了這篇嵌入式開(kāi)發(fā)學(xué)習指南(學(xué)習路線(xiàn)+知識點(diǎn)梳理)?? 嗎?......本文帶你一探究竟。
1.到底是學(xué)Java還是嵌入式?
可能是我回答了很多嵌入式問(wèn)題的原因,經(jīng)常有讀者給我留言主要就是關(guān)于職業(yè)選擇和技術(shù)發(fā)展的問(wèn)題,其中有一個(gè)問(wèn)的很多,就是 “我到底是學(xué)Java還是嵌入式?”開(kāi)始我都是不厭其煩得從未來(lái)發(fā)展和學(xué)習難度幫忙分析,讓大家對這這個(gè)有個(gè)自主的認識,但是慢慢的我發(fā)現其實(shí)很多人是沒(méi)有找到問(wèn)題的重點(diǎn)。我還是那個(gè)原則,興趣是*位的,不然后邊幾十年你會(huì )后悔的。糾結這個(gè)問(wèn)題的無(wú)非有幾個(gè)考慮。1.Java學(xué)著(zhù)簡(jiǎn)單,嵌入式好像摸不著(zhù)頭腦,很多學(xué)了很久還是不知道怎么回事?這兩個(gè)我都學(xué)過(guò),我覺(jué)得這主要是因為Java的應用很集中,基本就是web和安卓(占比很?。?,所以就是web開(kāi)發(fā),再加上這些年培訓班的大肆招生,學(xué)習路徑基本很清晰,所以對于后來(lái)者學(xué)習來(lái)說(shuō)自然是很簡(jiǎn)單的嵌入式則不然,嵌入式的應用非常廣,單片機軟硬件設計(無(wú)數的單片機類(lèi)型,各種應用場(chǎng)景),紛繁的嵌入式操作系統學(xué)習,FPGA軟硬件設計,Linux軟硬件設計,這些軟件又分應用開(kāi)發(fā)和驅動(dòng)開(kāi)發(fā)(很多還結合緊密),更進(jìn)一步甚至還有內核開(kāi)發(fā)如果把這些混在一起和Java對比是不是有點(diǎn)不公平,Java甚至只是Linux軟件開(kāi)發(fā)中學(xué)習的一部分,當然這確實(shí)就是嵌入式的缺點(diǎn),太分布了,讓初學(xué)者迷茫。不過(guò)好處也是有的,從上到下,從底層到驅動(dòng),到操作系統,到應用都可以不斷的擴展,這本身就是有意思的。2.Java賺的多,嵌入式賺的少?這還得借用上邊的回答,這個(gè)問(wèn)題可能存在目標不一致的問(wèn)題,先總的說(shuō)一下,工作賺的多少我一直認為和語(yǔ)言無(wú)關(guān),而是和行業(yè)有關(guān),Java之所以看起來(lái)賺的多,主要還是因為Java基本都是用于web開(kāi)發(fā),得益于互聯(lián)網(wǎng)發(fā)展,自然水漲船高。當然這也是部分,效益好的還是大公司,很多小公司其實(shí)不算高。這時(shí)候一般做對比的就是嵌入式的單片機開(kāi)發(fā),但是不能專(zhuān)挑軟柿子捏,把一眾高薪的嵌入式算法開(kāi)發(fā),大廠(chǎng)硬件開(kāi)發(fā),芯片開(kāi)發(fā),協(xié)議開(kāi)發(fā),模擬電子開(kāi)發(fā)排除在外是吧,可能會(huì )說(shuō)我沒(méi)這水平???那就是你的問(wèn)題了,Java學(xué)不精去不了好公司也不會(huì )賺的多的,忘了還有996等你??偨Y下,Java因為行業(yè)原因,紅利大崗位多,所以自然很多高薪者,這無(wú)可厚非,但是其實(shí)愿意不斷提高,且興趣使然嵌入式也是很多高薪職位的(上來(lái)就說(shuō)自己不行的,建議去做Java)
2.我花了半個(gè)月,整理出了這篇嵌入式開(kāi)發(fā)學(xué)習指南(學(xué)習路線(xiàn)+知識點(diǎn)梳理)
不好意思久等了這篇文章讓小伙伴們久等了。一年多以來(lái),關(guān)于嵌入式開(kāi)發(fā)學(xué)習路線(xiàn)、規劃、看什么書(shū)等問(wèn)題,被問(wèn)得沒(méi)有一百,也有大幾十次了。但是無(wú)奈自己對這方面了解有限,所以每次都沒(méi)法交代,搞得實(shí)在不好意思。但是辦法總歸是有的,正如前篇文章《最近厚著(zhù)臉皮聯(lián)系了不少老同學(xué)》所聊,雖然我自己不從事這些方向,但尋思了一下,我的同學(xué)和朋友中,多少還是有一些從事相關(guān)方向并且在一線(xiàn)(或曾在一線(xiàn))工作過(guò)的,所以我就請他們幫忙一起梳理這幾個(gè)我不熟悉領(lǐng)域的學(xué)習路線(xiàn),這次嵌入式開(kāi)發(fā)就是其中之一。這篇文章之所以拖這么久,因為溝通實(shí)在太費時(shí)間了,畢竟大佬們都挺忙,況且梳理總結這件事情本身就比較繁瑣,所以等到現在才發(fā)出來(lái)。本文在開(kāi)源項目: 中已收錄,里面包含不同方向的自學(xué)編程路線(xiàn)、面試題集合/面經(jīng)、及系列技術(shù)文章等,資源持續更新中...嵌入式開(kāi)發(fā)難嗎?經(jīng)過(guò)這次和同學(xué)的交流,我自己也學(xué)到了很多。因為嵌入式方面的很多東西我也不懂,我也算學(xué)習了。站在我個(gè)人角度來(lái)看,結合以前的學(xué)習體驗。我覺(jué)得嵌入式開(kāi)發(fā)比互聯(lián)網(wǎng)軟開(kāi)(比如Java后端)還是要難一些的,比如我們搞Java開(kāi)發(fā)的,再怎么說(shuō),基本也都是用戶(hù)態(tài)的東西,但嵌入式很多東西都深入到了內核態(tài),所以難度肯定是有的,表現在幾個(gè)方面吧:首先,嵌入式它偏底層,軟、硬件都要懂,對能力要求本來(lái)就要高不少;其次,嵌入式開(kāi)發(fā)的學(xué)習門(mén)檻也要高一些,而且像Linux平臺下的開(kāi)發(fā)流程,很多人都不習慣,摸不清;再者,嵌入式學(xué)習的正向反饋可能比較慢,尤其是前期學(xué)習階段,導致沒(méi)有什么成就感,也就堅持不下去了,所以往往就棄坑了。但是話(huà)說(shuō)回來(lái),做IT的就是這樣,越往底層對人能力的鍛煉就越高,所以對于能力來(lái)說(shuō)是在升維,所以反過(guò)來(lái),如果嵌入式做得好的,我覺(jué)得來(lái)做互聯(lián)網(wǎng)問(wèn)題也不大,到時(shí)候就屬于降維打擊了??傮w學(xué)習思路總體來(lái)說(shuō),還是可以把嵌入式學(xué)習分為三個(gè)大的階段:首先基礎學(xué)習階段,這就包括通用編程基礎(C語(yǔ)言、數據結構/算法、操作系統、計網(wǎng)、計組、Linux系統基礎)和基本的硬件基礎,扎實(shí)地掌握這兩大基礎,是后續持續發(fā)展和不斷進(jìn)步的動(dòng)力源泉。其次就是嵌入式應用編程階段,或者說(shuō)系統平臺編程階段。因為一般會(huì )以特定的嵌入式平臺和特定的嵌入式操作系統為依托,熟悉這個(gè)系統平臺上的編程方法和流程。以常見(jiàn)的ARM+Linux平臺為例,需要掌握從內存管理到多任務(wù)編程、文件I/O、網(wǎng)絡(luò )編程,甚至圖形化界面編程等幾個(gè)大的方面。*就是深入嵌入式底層開(kāi)發(fā)階段,最常見(jiàn)的就是內核開(kāi)發(fā)和驅動(dòng)開(kāi)發(fā),這些統屬于內核態(tài)開(kāi)發(fā)范疇,所以需要對操作系統內部機制有所涉獵和理解,在此基礎上需要掌握從系統移植到內核開(kāi)發(fā)、驅動(dòng)開(kāi)發(fā)的各個(gè)細節,這是成神之路。大體思路是這樣,接下來(lái)看一下詳細的學(xué)習路線(xiàn)和知識點(diǎn)梳理。學(xué)習路線(xiàn)+知識梳理花了很長(cháng)時(shí)間,就為了整理這張詳細的知識路線(xiàn)腦圖。當然由于時(shí)間有限、能力也都有限,畢竟嵌入式全體系實(shí)在太龐大了,包括我那做嵌入式的同學(xué),也不可能什么都懂,有些東西可能沒(méi)覆蓋到,不足之處,還希望小伙伴們一起交流補充,一起完善進(jìn)步。書(shū)籍推薦*,按照整體的學(xué)習路線(xiàn),再推薦一些對應的經(jīng)典書(shū)籍:后記:本文在開(kāi)源項目: 中已收錄,里面包含不同方向的自學(xué)編程路線(xiàn)、面試題集合/面經(jīng)、及系列技術(shù)文章等,資源持續更新中...這次就分享到這里吧,下篇見(jiàn)。每天進(jìn)步一點(diǎn)點(diǎn)慢一點(diǎn)才能更快
上述文章了解到關(guān)于到底是學(xué)Java還是嵌入式?,我花了半個(gè)月,整理出了這篇嵌入式開(kāi)發(fā)學(xué)習指南(學(xué)習路線(xiàn)+知識點(diǎn)梳理)?? ,讓我們對嵌入式和java學(xué)習 有一個(gè)直觀(guān)的認知。我們發(fā)現,作為一個(gè)優(yōu)秀的Java程序員是多么的自豪。