專訪蔣彪:JavaEE是企業級開發首選

摘要:企業級開發首選技術是什麼?JavaEE和.Net哪一個技術更好?在JavaEE開發中主要用哪些框架?另外在移動大熱的趨勢下如何開發出一個成功的Android產品?帶着這些問題,社區之星記者第12期採訪了海隆技術經理——蔣彪。他在開發一線所積累的經驗,相信會給你們帶來不同的收穫。

導讀:這是一名工做於開發一線的技術經理,正由於此他對技術人生、JavaEE企業級開發和Android產品開發等有得天獨厚的認識和看法,爲此CSDN記者對這位技術經理進行了專訪並發表成文,但願你們看完後能對本身的開發生涯有從新的認識,同時也能對企業級開發有個基本瞭解。 java

蔣彪認爲作技術的要學會螺螄裏作道場 node

蔣彪,海隆軟件技術經理,曾就任過對日外包、國內電商等。一開始主要作企業級javaEE開發,用工做流和RIA,成天糾纏於企業建模等。後來開始接觸到Android、HTML五、電商、大數據併發和系統調優,開始學會從深層次的切入點思考技術問題。得到的榮譽有高級程序員、PMP、CSDN博客專家和51CTO技術專家等。 程序員

程序員之路從自學開始

CSDN:請和你們介紹下你及所從事的工做 算法

蔣彪:南京人,06年畢業於南京信息工程大學計算數學。曾經作過對日外包和國內電商,如今海隆軟件擔任技術經理。主要的工做是技術管理,推動產品的技術演化,在公司內作一些力所能及的技術積累,有時候也會參與到新產品的設計和提案中。 spring

CSDN:你是學數學出身,後來爲何會走上軟件開發之路?自學之路有沒有遇到什麼困難,都是如何克服?你的數學修養對學習有沒有帶來什麼幫助? 數據庫

蔣彪:作IT基本上靠自學,大學時候本身看看書,大三的時候考了個高級程序員認證,當時這個認證仍是有含金量的,因此畢業以後就瓜熟蒂落作程序員。 安全

軟件開發行業,高端的工做仍是須要紮實的數學知識,好比大數據計算、搜索引擎算法和工做流引擎的狀態機研究等。不過對於通常人而言,絕大多數的開發工做仍是在圍繞着業務邏輯在編織代碼。就以本身舉例,工做7年,只用到一次數學,當時作一個通訊框架,當通訊的一端發出的request沒有獲得響應的的時候,須要每隔一段時間重複發送,可是這個間隔時間曲線又須要線形增加,平滑逼近於零,因此咱們最終採用了指數延遲算法來解決這個問題。 服務器

CSDN:你博客中用了「Bug抓捕員」和「專業江湖救急」等標籤,爲何想到用這些詞來形容本身? 架構

蔣彪:有好幾年我主要的工做狀態就是遊走在各個項目之間,解決各類稀奇古怪的技術問題,好比生產環境服務器的CPU負荷突高、JVM Down、TCP通訊失敗和數據庫con pool耗盡等等。這個工做讓人感受頗有成就感。 併發

CSDN:你曾在日本工做,你以爲日本的軟件開發和國內有什麼不一樣?對此最大的收穫是什麼?另外在日期間有沒有特別的經歷和你們分享下?

蔣彪:日本的電子設計,嵌入式行業比較發達,企業MIS和系統集成這塊和國內基本上相差不大,而互聯網行業,由於日本人比較保守,並且監管也嚴格,因此大型的互聯網公司沒有中國多。像阿里系這種積累了深厚技術底蘊的互聯網公司,不光日本不多,全亞洲估計也沒有幾個。日本人作事情比咱們認真一點,但從開發技術、人員素質和開發流程上來看,中日差距沒有多大。

技術人的技術人生要會妥協

CSDN:博客爲何起名「南湖邊上的小木屋」?同時下面的說明「若是平凡,則廉價不可避免」有什麼寓意,想傳達什麼?另外你常會吟詞做賦,這樣的心態對你程序員生涯有什麼影響?

蔣彪:「若是平凡,則廉價不可避免」是我老闆Jack常說的一句話。我以爲頗有道理。如今中國的大勢是舊有的發展模式已經到瓶頸,不管願意仍是不肯意,你們都面臨着創新和轉型。只有提升本身的附加值,作更高等級的工做,才能達到本身的人生價值。

CSDN:能夠說你的經歷很是豐富,能和你們談談你在技術人生上的一些認識嗎?好比你對程序員熟手、高手和大師這三個境界怎麼看?若想達到這些境界有沒有捷徑可走?

蔣彪:我本人最多隻能算熟手,遠遠沒有到大師的水平。到大師的人要深刻淺出,深刻理解計算機體系結構、操做系統底層機制、內存管理、編譯器和通訊協議,淺的要能寫代碼,作技術傳道,推動產品進化。

作技術要靠天賦+運氣+努力,三者缺一不可。IT行業入門容易,可是精通高深很難,由於有不少須要深刻技術的地方,天賦和想象力仍是很重要的。固然運氣好的話,若是可以遇到一個好師傅領進門,一個熱於研究的好團隊,就能事半功倍。另外作技術要能作冷板凳,能耐的下寂寞,一遍一遍實驗,這就是努力。可是,咱們絕大多數人都是普通人,三者中都會缺失某一項,所以就須要咱們擺正姿態。

咱們要認識到,除了個把技術大牛和技術型團隊以外,在中國,技術每每是服務於業務的。不管你是作ERP、CRM、WorkFlow,仍是金融、電力、通訊、甚至電商。作技術的人首先要認識到,若是你的技術不能帶來贏利,那就狗屁不如。所以不少時候,咱們作技術的人,要學會妥協。尤爲在你不是大牛的狀況下,面對成本壓力、項目進度和文化環境,咱們要認識到技術的從屬性。所以我經常以爲,作技術的,要學會螺螄裏作道場。

能夠快速開發的JavaEE是企業級開發首選

CSDN:當初爲何會在衆多技術中選擇Java?你認爲Java學習如何開始和深刻?

蔣彪:Java是高級語言,語法嚴謹、面向對象優良,JVM又能讓你擺脫底層實現,專心考慮業務邏輯,因此Java很適合作業務開發。做爲一門開發技術,Java仍是很簡單的。若是想深刻理解和認識Java,有時間要多看看JVM的內部實現機制和內存模型,這是個不錯的選擇。另外周志明編寫的《深刻理解Java虛擬機》是本好書,推薦給你們。

CSDN:企業級開發首選的技術是JavaEE和.Net,你認爲這兩個技術哪一個更好,爲何?

蔣彪:國內的IT行業長久以來,最大的客戶就是企業。除了騰訊,阿里巴巴等,你們都是在作企業MIS。不管是OA、電信BOSS、銀行流程再造,仍是電力信息管理平臺等等,你們都是在作企業級開發,首選的開發工具必然是JavaEE或者.Net。

選擇JavaEE,除了可移植性外,最重要的緣由以下:

  • 簡單可行,快速上手。由於Java做爲高級語言的優勢,易學習,遠離底層,有豐富的API。
  • 由於JavaEE適合快速開發,有豐富的開發框架和原形。

另外順便提一下,不少作javaEE的人開發了不少年都沒有接觸過thread、GC和Native Method等等都是很正常。而Java自己的更多技巧性存在於業務建模,若是你不能接觸到,其實Java對你而言就是一堆框架和API的組合而已,因此外界有人以爲作Java的人水分比較大,這是有道理的。

CSDN:在當前應用開發中,主要使用哪些Java EE技術?您認爲哪些Java EE技術是最基礎最重要的?

蔣彪:理解JVM機制、Java語法、Serlvet規範和HTTP協議就夠了。簡單提及來,好好參加Java認證考試就能把基本功掌握好,其它亂七八糟的框架,都是圍繞着基礎推動的。

CSDN:如何提升Java EE系統安全性,能簡單談下嗎?

蔣彪:安全是個系統工程,好比前段時間冒出來的struts遠程命令攻擊的安全隱患,是屬於開源框架的安全bug。好比京東前段時間被人惡意充話費事件,是屬於代碼級別的安全問題。之前我還見到作運維的新人,誤刪生產環境關鍵文件夾,致使全系統當機的安全問題。整個JavaEE裏面,我的估計只有JVM自己的安全問題最少,因此大公司都會有專業的安所有門。

CSDN:使用開源框架的利和弊,開源框架對Java EE技術發展有哪些影響,平時在開發中主要使用哪些Java EE框架,爲何?

蔣彪:沒有開源軟件的話,JavaEE就什麼也不是。國內對開源軟件的使用通常分爲三個級別:

  • 第一梯隊是阿里係爲表明的技術巨頭,他們能定製開源軟件,甚至本身研發開源軟件。
  • 第二梯隊是一些大中型的MIS和系統集成商,他們能在spring之類的開源框架上封裝本身快速業務開發原型。
  • 第三梯隊是大量的中小型公司,只會用用SSH。

對通常公司而言,定製開源框架不必也沒實力,搭建本身的快速業務開發原型卻是頗有意義,在此我推薦能夠考慮嘗試OfBiz這個業務框架,國內在此基礎上封裝本身的業務邏輯的公司也很多。單純的技術框架的爭辯,對於咱們的意義不大。

CSDN:在Java EE項目開發中系統架構是否很重要,在實際工做中,對於Java EE項目的架構設計有哪些經驗能夠分享?

蔣彪:大型項目確定須要系統架構。不過對系統架構看的更重的仍是在互聯網企業。由於不斷的產品演化和推動,沒有架構師強有力的規劃是不可能梳理清楚的。

CSDN:JavaEE雖然是企業級開發的首選,但也有人指出JavaEE比較臃腫龐大、開發和維護成本較高,同時開發效率也不高,對此你是怎麼看的?另外JavaEE還有哪些侷限?

蔣彪:JavaEE和.NET相比,開發成本和維護成本確實比較高,這是不爭的事實。JavaEE開發中很容易出現類爆炸,一個看起來簡單三句話的代碼,會被拆散到多個接口對象中去。可是這不是JavaEE自己的問題,這是設計過分。

不少項目沒有學會用正確的技術作正確的事情。我08年的時候,作了一個小項目,一個很是簡單的學校教學管理系統。項目團隊一共5我的,我當時負責作數據庫建模,項目經理技術選型的時候,必定要選用SSH,我當時極力反對,由於Hibernate是至關重量級的ORMapping ,若是你是作電信Boss我強烈支持你用,可是作幾十個畫面的小系統用這個,屬於沒事找事。

項目經理強力推行他的計劃,結果一個很簡單的項目結果失敗了。所以作技術的要學會切合業務模型推動和妥協,由於項目是要盈利的,不是你我的的實驗品。因此不是JavaEE臃腫,是咱們不少人不會用,用錯了。

CSDN:「什麼是合適的,那麼什麼就是成功的」特別贊同你在博客說的這話,那麼在企業級開發中面對不一樣環境和要求,如何靈活運用JavaEE和.Net?能簡單舉例說明嗎?

蔣彪:Keep it Simple, stupid!若是你只是想作一個日PV幾千幾萬的小網站,你會想到買小型機嗎?技術要切合場景!好比你公司80%的程序員都熟悉.Net,你非要強制推行JavaEE。好比分明是個強事務的業務場景,你爲了所謂的吞吐量非要上node.js。這都是好笑的行爲。

通常來講,單純從技術出發,若是你的業務系統不須要分佈式和集羣,日PV沒有那麼高,公司的技術底蘊和架構師都不是很強,那推薦你用.NET開發。若是你要考慮系統的伸縮性,將來準備把這個系統玩大作強,須要考慮持續投入和進化,那我推薦你用JavaEE。

如何開發出一個成功的Android產品

CSDN:能夠說Android算是一個Java類庫,你以爲Android開發與傳統的JavaEE開發有什麼不一樣?

蔣彪:準確的說,Android只是實現了Java語言規範的一個開發平臺而已。Dalvik虛擬機基於寄存器,JVM基於堆棧,二者的不一樣其實很大。Android自己執行在移動設備上,雖然Dalvik會有GC機制,可是開發者仍是應該避免大量生成不必的執行序列和Object。

以前看到一個作JavaEE的架構師轉作Android後,一上手就把代碼拆分紅Activity、Logic、Façade、Service、DAO和DTO等等。這其實很好笑,Android中的對象建模要以輕便爲主,以個人經驗Activity和Service上封裝一個抽象類,DBUtil之類的工具類作成static Util便可,別過度設計。

CSDN:Android產品開發中都會遇到哪些常見問題?那麼該如何避免這些問題出現?

蔣彪:Android產品要想好盈利。我看到很多投了不少錢的產品,當初根本就沒想好如何盈利就急忙上馬,最後的下場都很慘。一個沒有完整盈利規劃的產品,公司通常能夠直接Pass,不要立項,這就是個人經驗。

CSDN:要想開發出一個成功的Android產品,在實際開發中該怎麼作?

蔣彪:

  • 要學會整合現有的IT資源。好比想作一個OA的App,若是大家公司有現成的B/S架構的OA產品,那就應該考慮把這個產品的界面按照Smartphone風格從新設計一番,而後在外面套上一個NativeApp的殼子,而不是從新造輪子。
  • 多看看別人怎麼作。若是你想作音樂盒子之類的App,應該先把國內全部主流的同類型APP拿過來,研究他們的功能和他們的UI設計,把別人的優勢和缺點都研究透徹。
  • 一個成功的產品,App只是冰山一角,還須要後臺的運維繫統、推廣、持續的進化、產品路線圖和規劃。若是你覺得作個有點子的App就成功了,那仍是趁早住手比較好。
  • App要根據業務分類進行技術選型。好比你要作遊戲,我推薦你去用成熟的遊戲引擎,這比你用native技術開發絕對現實。若是你作工具助手之類畫面簡單強調易用性的App,我推薦用native技術。若是你作網上購物之類的重業務App,我推薦你用native+WebView來實現。
  • 最後一個建議,不要輕易嘗試新技術,作踩地雷的勇士,好比HTML5。

CSDN:目前已進入移動互聯網時代,移動開發大熱,你能談談移動產品將來如何盈利和發展?

蔣彪:移動產品盈利是個大難題。尤爲在中國,由於中國人思想裏就有軟件不付費的習慣。如今國內移動產品就遊戲道具和廣告收入兩個現金流。可是從將來角度來看的話,我的以爲移動產品硬件化多是另一條道路。好比小米盒子給咱們的啓示,Android除了作手機,是否是還能作機頂盒,之後還能作溫度計,血壓計等等。

對於開發App的人而言,若是本身開發的App可以和硬件配件整合起來是否是就能獲得更多的用戶黏度,同時也能更容易得到現金流呢。

記錄是個好習慣

CSDN:你是何時接觸到CSDN,它對你工做和學習帶來哪些影響?另外對CSDN有什麼建議,對其將來有什麼期待?

蔣彪:我09年的時候在作一個研究性項目,當時看到很多美國同行喜歡寫博客,所以就在CSDN上建了博客,一發不可收拾,直到如今。常常寫博客,讓本身對過去的幾年工做有個梳理,人都是健忘的,經常記錄是個好習慣。

我對CSDN的建議只有一個,但願CSDN出個Android客戶端。

寫在最後:

從蔣彪的CSDN博客、從和他斷斷續續的交流中,記者發現他對技術對人生理解的很是透徹,他認爲技術大牛要從物理層、協議層、架構層和編碼層,可以層層透徹,爲了進一步說明,他還用一個寓言向記者闡述:鸚鵡負責吹噓架構,雞負責管理,豬負責開發,他指出真正的大牛應該是能講架構,能定規範,能寫底層代碼。

此外他還和記者表示,技術只是一種實現方法,特地強調某種技術,乃至於爲了某種技術辯護的人實際上是虛僞的,最後他還和記者分享開發項目不管是技術、流程和方法都不要拘泥於套路和模板,判斷一個項目是否敏捷,不是看是否有了敏捷的title,而在因而否掌握了敏捷的精髓……聊完相關話題後,記者心目中對程序員那種呆板、沉默寡言的形象一掃而淨,是的程序員就應該這樣,就應該到達這樣的境界,只有這樣才能讓本身的技術人生更美好,才更能潛心於技術從而實現本身的價值。(文/張勇

相關文章
相關標籤/搜索