怎么學(xué)習(xí)java框架底層?
JAVA社區(qū),很喜歡講究方法論和哲學(xué)。設(shè)計(jì)一個(gè)框架,一般來講,會(huì)有個(gè)比較宏觀的理念在里面。
所以,你要先了解它的背景,應(yīng)用場(chǎng)景,然后再去探究原理和底層。
比如學(xué)習(xí)大名鼎鼎的Hibernate,一定要弄清ORM這個(gè)東西,相較于傳統(tǒng)的直接寫SQL用JDBC訪問DB,有哪些優(yōu)勢(shì)?底層代碼就是按這個(gè)優(yōu)勢(shì)邏輯來組織的,怎么處理HQL,怎么做映射,怎么做緩存.....
再比如你要搞懂NETTY,一定要先搞懂SOCKET,NIO。NIO的優(yōu)勢(shì)在哪兒?或者說傳統(tǒng)的同步IO有什么問題?NETTY肯定是要解決這些問題,充分利用NIO的技術(shù)優(yōu)勢(shì),加上網(wǎng)絡(luò)https://www.52fb.cn領(lǐng)域的一些BEST PRACTICES比如zero-copy。
框架還有一個(gè)作用是屏蔽有一些太底層的技術(shù),為應(yīng)用開發(fā)人員提供便利。你用HIBERNATE,就無需了解JDBC那些prepared statement、Transaction什么的;你用NETTY,就非常方便實(shí)現(xiàn)你的應(yīng)用協(xié)議,底層的你換成TCP、UDP、甚至HTTP,都方便。
框架還有一個(gè)重要的作用,就是提供一種基于Best Practice的https://www.52fb.cn范式。比如你在ECLIPSE的規(guī)則下寫插件,步驟都是一樣的。再擴(kuò)展一點(diǎn)說,WINDOWS的驅(qū)動(dòng)框架,也簡化并且規(guī)范了驅(qū)動(dòng)程序的開發(fā)過程。
所以,理解一個(gè)框架的“底層”,既要宏觀層面理解方法論,也要中觀層面理解其架構(gòu),還要微觀層面深入代碼了解實(shí)現(xiàn)技巧。