Java開發相關工具
開發工具:最好的Java IDE肯定是JetBrains的IntelliJ IDEA,沒有之一。 有米的同學直接上Personal License,沒米的弄個社區版,也可以湊活著用。相信我,一旦你用了這個IDE,你就離不開它了。
構建工具:Ant 和Maven的時代已經過去,Gradle(http://www.gradle.org/)已經是目前的標準了,其極其強大,易用,靈活,表現力強。當然不得不提的是,如果沒有Maven的依賴管理系統,其基本也廢。從Maven, Ant切換到Gradle都很方便。我的同事寫過一篇文章:http://dreamhead.blogbus.com/logs /227427912.html 推薦它,我的另外一個同事還分享過一篇關于Gradle的具體應用的文章:(http://www.infoq.com/cn/articles /Gradle-application-in-large-Java-projects)。
部署工具:Cargo(http://cargo.codehaus.org/Quick+start):開發Web應用時,打包,部署到服務器上一氣呵成。和Gradle結合使用,效果更佳。本來build pipeline里就應該有部署一說的。
寫代碼時,可以考慮使用的類庫,這些類庫會極大的減少你的代碼量并且能夠增強你的代碼表現力:
* Guava(https://code.google.com /p/guava-libraries/):Google的工程師為大家寫的通用庫,里面有關于collections,caching, primitives support, concurrency libraries, common annotations, string processing, I/O等等,基本上,我個人已經把Collections的所有函數都轉換到使用Guava的函數了,從此腰不疼,腿也不抽筋了。因此,把Guava看做 JDK的一部分應該都不為過。
* Joda-Time(http://joda-time.sourceforge.net/):JDK中不管是Date,還是Calendar,其之難用,天理難容,需要使用Java時間函數的同學請使用這個類庫里的時間。你會感謝我的。
* SLF4J + Logback(http://www.slf4j.org/): 日志二人組,Logback成功小三上位,以性能的優勢擠掉log4j,成為和slf4j的第一搭檔。
* Junit + Fest Assertion(https://github.com /alexruiz/fest-assert-2.x):單元測試二人組,同樣的,Fest也是小三上位,以其更具表現力的API獲得眾多碼農的青睞。其實,原配hamcrest也可以通過定制自己的Matcher達到同樣的效果,只是程序員都挺懶的,是吧。
* make-it-easy(https://code.google.com/p/make-it-easy/): 寫測試的時候,經常需要構建一些復雜的Object,尤其是一些繼承結構復雜的對象,為每個對象寫Builder會產生大量的重復代碼,因此,Let's make it easy。
* Sonar(http://www.sonarqube.org/) + checkstyle(http://checkstyle.sourceforge.net/) +Findbugs(http://findbugs.sourceforge.net/): 代碼質量檢測3人組,最好是能夠把多個項目組的sonar dashboard投到一面墻上,Shame on low code quality team!代碼質量是程序員的自尊心啊。
* moco(https://github.com/dreamhead/moco):寫測試時,遇到和外部項目的依賴時,還在一步一步的Mock嗎?試試moco吧,分分鐘給你一個你期望的服務器。
* Jbehave or Cucumber : 自從《Specification by Example》大紅之后,BDD開始走上潮流,Jbehave和Cucumber就是Java世界的BDD框架,JBehave屬于Java世界的親生孩子,功能強大,同時也相對復雜一點。Cucumber是在Ruby世界大紅之后,移植到Java世界的。個人只用過JBehave,表示其不算復雜,就是類的繼承關系有點太亂。