我发现很多人没办法高效地解决问题的关键原因是不熟悉工具,不熟悉工具也还罢了,甚至还不知道怎么去找工具,这个问题就大条了。我想列下我能想到的一个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">​http://www.iteye.com/topic/1114219​​ 


6.更多JVM工具,参见官方文档: ​http://docs.oracle.com/javase/6/docs/technotes/tools/">​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命令,​​ 


2. ​​设置ssh免登陆



3.使用 ​​htop​​替换top。 


4.熟悉下 ​​strace,gdb​​甚至 ​​systemta​​p来分析问题。 


​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/">​https://code.google.com/p/goagent/​​ 


五、如何查找工具? 


1.搜索引擎,google或者baidu,《 ​​搜索技巧​​》 


2.万能的stack overflow: ​http://stackoverflow.com/">​http://stackoverflow.com/

3.虚心问牛人。 


六、最重要的是⋯⋯ 


一颗永不停止学习的心。Java程序员常用工具集




作者:​​木木​​ ​

博客里的文章,来自笔者在读书与工作过程中的论文阅读笔记、实验笔记、读书笔记、工作技术笔记,还有一些来自网文收藏。也许不定期还会写一些伤春悲秋的无用之文。关于技术方面写的一些随笔,仅供各位读者参考,写下来是对当时的自己有益,再过一段时间,或再过几年,不一定对其他人还有用。文章版权方面的:躺在这里的无用之文,未经授权不要转载。