我发现很多人没办法高效地解决问题的关键原因是不熟悉工具,不熟悉工具也还罢了,甚至还不知道怎么去找工具,这个问题就大条了。我想列下我能想到的一个Java程序员会用到的常用工具。 
 
一、编码工具 
 
1.IDE: 
Eclipse或者 
IDEA,熟悉尽可能多的快捷键,《 
Eclipse常见快捷键列表》 
2.插件:  
(1)  
Findbugs,在release之前进行一次静态代码检查是必须的 
(2)  
Clover,关心你的单元测试覆盖率 
(3)  
Checkstyle 代码风格检查 
 
3.构建和部署工具: 
ant或者 
maven,现在主流都是maven了吧, 
使用nexus搭建maven私服,再加上持续集成 
jenkins。代码质量不用愁。 
 
4.版本管理工具:  
svn或者 
git 
 
5. 
diff和patch 
 
6.设置你的eclipse或者IDEA,如formatter, 
save actions以及code template等。代码风格,直接用google的也可以啊。《 
Google style guide》 
 
7.掌握一个文本编辑器,Emacs或者VIM,熟悉常用快捷键。这在你需要在线编辑代码,或者编写其他语言代码时候特别有用。《 
神器圣战》 
 
二、JDK相关 
 
1.jstat : 观察GC情况,如: 
 
 
jstat -gcutil pid 2000
 
2.jmap,查看heap情况,如查看存活对象列表: 
 
jmap -histo:live pid |grep com.company |less 
 
或者dump内存用来分析: 
 
 
jmap -dump:file=test.bin pid
 
3.分析dump的堆文件,可以用jhat: 
 
 
jhat test.bin
 
  分析完成后可以用浏览器查看堆的情况。这个工具的分析结果还比较原始,你还可以用 
Eclipse MAT插件进行图形化分析,或者IBM的 
Heap Analyzer. 
 
4.jvisualvm和jconsole: JVM自带的性能分析和监控工具,怎么用? 
请自己看文档。 
 
5.jstack:分析线程堆栈,如 
 
 
jstack pid > thread_dump
 
    查看CPU最高的线程在干什么的方法结合top和jstack: 
http://www.iteye.com/topic/1114219 
 
6.更多JVM工具,参见官方文档: 
http://docs.oracle.com/javase/6/docs/technotes/tools/  
  
7.学习使用btrace分析java运行时问题。《 
Btrace使用简介》 
 
8.GC日志分析工具: 
GC viewer、 
GC-console或者 
自己挑吧。 
 
9.性能分析工具,除了自带的jvisualvm外,还可以用商业的 
jprofiler。 
 
 
10.JVM参数大全  
  
11.《 
JVM调优标准参数陷阱》,iteye神贴。 
 
三、Linux工具 
 
1. 
熟悉常用的shell命令, 
 
 
 
3.使用 
htop替换top。 
 
4.熟悉下 
strace,gdb甚至 
  systemtap来分析问题。 
 
 
5.熟悉vmstat,iostat,sar等性能统计工具。 
 
5.自动化部署脚本, 
py-fabric或者自荐下我的 
clojure-control。 
 
四、其他 
 
1.掌握一门脚本语言, 
Python或者 
Ruby,高效解决一些需要quick and dirty的任务:比如读写文件、导入导出数据库、网页爬虫等。注意不是python.com,咔咔。 
 
2.使用Linux或者Mac os系统作为你的开发环境。 
 
3.升级你的“硬件工具”,双屏大屏显示器、SSD、8G内存甚至更多。  
4.你懂的: 
https://code.google.com/p/goagent/ 
 
五、如何查找工具? 
 
1.搜索引擎,google或者baidu,《 
搜索技巧》 
 
2.万能的stack overflow: 
http://stackoverflow.com/  
 
3.虚心问牛人。  
六、最重要的是⋯⋯  
一颗永不停止学习的心。