1. 程式人生 > >假笨說-我是如何走上JVM這條賊船的

假笨說-我是如何走上JVM這條賊船的

這兩年陸陸續續寫了20來篇和JVM相關的文章,雖然不是很多,但是也得到了一些人的認可,貼上了JVM的標籤,還是挺欣慰的,2016年算是和JVM深綁的一年,現在2016年一不留神也快過了,也趕個時髦,來個小結,不過不鋪開講其他的事,就小結下我是如何走上JVM這條路的

Flex的不解之緣

不扯遠啦,從本科開始說起,大學期間雖然Java和C也有課程教過,但是基本用得不是很多,也不是很熟,何況對於我這種逃課特別嚴重的人呢(大一下學期開始就很少去上課了)

07年那會Flex開始流行起來了,不過還不是很廣,從市面上的書就可以知道,書店裡Flex的書特別少,過了一兩年才慢慢多起來,我應該算挺早玩Flex的人吧

我特別喜歡Flex那種所見即所得的感覺,想做成什麼東西很快就能做起來,大學那會靠它還賺了不少錢。大三的時候還完全自研了一個Flex部落格,記得有一晚上和我一大學哥們聊我這部落格設計,創意,問題及解決思路等不知疲倦地聊了一個晚上都沒聊完,人家都打哈欠了,哈哈。自己開發設計的感覺實在太爽了,可以給大家看看之前的部落格樣子,也許曾經玩過Flex的哥們還去我部落格上玩過,當時還實現了兩個版本,可以無縫切換

下面是第二個版本

 

不過那會沒有R大那樣的覺悟來玩虛擬機器,那個時候講真都不知道虛擬機器是啥玩意,早有知今日,或許那個時候就研究actionscript虛擬機器了,也不至於現在和R大差那麼大一截

不過現在也特別懷戀那種感覺,其實我非常羨慕前端er們,他們應該特別有成就感吧

陰差陽錯入了JAVA崗

雖說09年開始找工作的時候都是找的Flash相關的崗位,也拿到了迅雷等公司的Flash工程師崗,但是最終還是來到了支付寶(那會支付寶還沒啥名氣,從沒在淘寶上買過東西)從事生疏的Java崗,還挺感謝當時的面試官們,沒Java經驗還覺得我還可行,算是我的伯樂啦,否則按照Flash現在這個發展,估計我早就轉行了,也許我現在應該在做遊戲?

來了支付寶從事的還是要求挺高的基礎技術的工作,做框架開發,這個框架在支付寶的開發肯定都非常熟了,因為幾乎所有的應用都是基於這個框架來玩的

剛開始的時候因為Java基礎很差,為了能勝任工作所以我經常加班很晚,天天debug看程式碼,一般是晚上十一點多才回去的,整層樓就我一個人了,一年之後我對這塊算很熟了,還給新來的應屆生上框架的課了

這個一做就做了三四年,這三四年雖然辛苦,但是挺值得的,因為收穫挺多。從Java門外漢到慢慢熟悉Java,精通Java,從框架本身再到周邊的技術,包括Jboss,Tomcat,Jetty,Maven,Mina,Httpd等都比較熟了,不過這些周邊技術都是問題驅動的,碰到問題再深入進去排查,排查多了就慢慢熟了,記得一年下來旺旺加我好友的人數就一千多了,慢慢地變成了查問題的老司機了

記得11年那會支付寶出了一個記憶體洩漏的相當嚴重的問題,當時魯肅還特地請畢玄大師過來解決,後面畢大師還給我們分享了JVM相關的東西,不過那會我真是聽不懂啊,就覺得畢大師好牛逼,真羨慕

大概到了13年底,那會因為公司高速發展,碰到的問題也越來越底層,JVM的問題也比較突出了,加之我們框架做升級,完全基於OSGI來做,所以碰到類載入的問題也非常明顯,而我們都不是很瞭解其中的機制啊,碰到LinkedError等問題非常懊惱,但是這類問題特別的多,於是迫使我慢慢深入到了JVM裡,第一次下載openjdk的程式碼,費了好大勁在mac上能除錯起來,因為那個時候還不是很完善,編譯要改不少地方,費了好大勁才玩起來。

JVM上路了

當時雖然Java熟了,但是C和C++不熟啊,而hotspot都是c/c++寫的,這下麻煩也挺大的,又是一個全新的領域,就這樣利用空餘時間摸爬打滾了大半年,回到家一有時間,一有心情就看程式碼,除錯程式碼,經常一調就到了凌晨兩三點,有時候特別懊惱,因為有些東西實在想不通,解釋不了,碰到問題玩不下去了,但是有時候又特別興奮,就跟玩遊戲一樣,過了一個又一個關卡,我經常會自言自語,“噢,終於明白了,原來是這樣,那那啥啥啥又是怎樣的呢”,就這樣不斷地反問自己一些問題,把整個知識脈絡給理清楚。

那個時候最痛苦的莫過於碰到問題都不知道找誰問,因為身邊沒有一個懂這塊的人,只能自己去探索,那個經歷只有自己經歷過才知道有多痛苦,經常好幾個問題拿起來又放下,拿起來又放下,但是最終發現還是得靠自己才能邁過去,所以感謝那些苦不堪言的經歷吧,因為它們你才會變得更強

寫JVM公眾號的初心

我是14年年底加入alijvm團隊的,走在JVM這條路上才2年,學到的也還非常有限,寫公眾號的文章是為了記錄我和JVM的這段緣份,說不定哪天我不做JVM了呢,那再接下來誰還知道你曾經和JVM有過這麼一段不堪回首的歷史呢,因此記錄一些東西是好的,好的經驗可以幫到更多的人,讓更多人少走彎路,快速解決他們的問題。

最後我想說,只要你願意付出,一切皆有可能,像我這樣從前端Flex走到後端Java,再到現在的底層JVM,也許後面還有Kernel,甚至哪天還會去設計晶片,哈哈,有些事不要覺得自己做不到,但是不做肯定是做不到的。