JVM程序员的阅读清单
fmms 13年前
<p> 英文原文:<a href="/misc/goto?guid=4958337258757919420">A Reading List for JVM-based Developers</a></p> <p> 前些天,我发现我和几个同行进行的一系列讨论中,有部分话题是关于在 Linux 系统 JVM 上运行大量线程的性能问题。我并不是说我是这个主题的专家,但我曾经以为掌握得很好的一些知识点却并没有我想的那么无懈可击。之后,我阅读了一些别人推荐 的有关这个主题的书,我不得不承认我原来很多知识点都不知道。这样的情况经常发生,我通常会记下来少数一些我觉得值得研究的资源。</p> <p> 所以,这里是我推荐的阅读列表,给那些正在学习基于 JVM 开发的程序员们阅读,他们需要了解环境的特性,尤其是当遇到和性能以及同步相关的问题时。老实说,我也不能说我阅读了所有的材料。但经过上面提到的和同事 的对话后,我决定下功夫去弥补我知识体系上的缺陷,尽可能多的阅读下面每一本书。并且我认为如果你想学会某一门技艺的话,你必须持续不断的学习和钻研。</p> <p> ● 《<a href="http://www.amazon.com/gp/product/0137142528/ref=as_li_qf_sp_asin_il_tl?ie=UTF8&tag=job0ae-20&linkCode=as2&camp=1789&creative=9325&creativeASIN=0137142528" rel="nofollow" target="_blank">Jave Performance</a>》是这个领域的一本新书,十月份刚出版,却一本不可多得的好书。它涵盖了工具和技术(性能测评,建立基准,性能调试等等),也涵盖了更深的但很少被考虑的技术(如操作系统层次的工具、JIT、垃圾回收等等),甚至包含了处理基于 JAX-RS 的网络应用。</p> <p style="text-align:center;"><a title="java performance" rel="lightbox[15342]"><img title="java performance" alt="JVM程序员的阅读清单" src="https://simg.open-open.com/show/9aa27160b3c86e0b89197986dbb1d512.jpg" width="300" height="300" /></a></p> <p> ● 《<a href="http://www.amazon.com/gp/product/0321349601/ref=as_li_qf_sp_asin_il_tl?ie=UTF8&tag=job0ae-20&linkCode=as2&camp=1789&creative=9325&creativeASIN=0321349601" rel="nofollow" target="_blank">Java Concurrency in Practice</a> <a href="http://www.amazon.cn/gp/product/B0077K9XHW/ref=as_li_qf_sp_asin_il_tl?ie=UTF8&tag=vastwork-23&linkCode=as2&camp=536&creative=3200&creativeASIN=B0077K9XHW" rel="nofollow" target="_blank">Java 并发编程实战</a> 》对于任何一个想要了解 Java 标准库中内建的并发基础与结构的程序员来说,具有很好的指导作用。即使你不直接处理并发,你也需要了解这本书中阐述的原理。</p> <p style="text-align:center;"><a title="Java Concurrency in Practice" rel="lightbox[15342]"><img title="Java Concurrency in Practice" alt="JVM程序员的阅读清单" src="https://simg.open-open.com/show/8a2c2818dd449fc2b50e69ffa4d9af2e.jpg" width="300" height="300" /></a></p> <p> ● 《<a href="/misc/goto?guid=4958337261982136763" rel="nofollow" target="_blank">What Every Programmer Should Know About Memory</a> 》(这里有 <a href="/misc/goto?guid=4958337262781927952" rel="nofollow" target="_blank">HTML</a> 版本)是一本关于系统内存的系统介绍。你将会学到比你想象得多得多的知识,但也是个痛苦的过程。相信我 ;~)</p> <p> ● 《<a href="http://www.amazon.com/gp/product/0672329468/ref=as_li_qf_sp_asin_il_tl?ie=UTF8&tag=job0ae-20&linkCode=as2&camp=1789&creative=9325&creativeASIN=0672329468" rel="nofollow" target="_blank">Linux Kernel Development (3rd Edition) </a>》 归纳在这个主题内似乎并不恰当,但事实上如果你开发服务器端的应用的话,系统通常都会在 Linux 系统上运行。它似乎是最这个主题的书,虽然我不是这个方面的专家。不管怎样,都值得探索 Linux 内核发生了什么。我不建议你一口气读完这本书,除非你非常想要这么做–毕竟这是一本写的很好的书——至少读一读关于进程管理和进程调度。还有虚拟操作系统 以及I/O的章节也非常值得浏览。</p> <p> 有一些似乎不应该归在这个主题,但依然非常有用,请阅读:</p> <p> ● 《<a href="http://www.amazon.com/gp/product/0321356683/ref=as_li_qf_sp_asin_il_tl?ie=UTF8&tag=job0ae-20&linkCode=as2&camp=1789&creative=9325&creativeASIN=0321356683" rel="nofollow" target="_blank">Effective Java</a> <a href="http://www.amazon.cn/gp/product/B001PTGR52/ref=as_li_qf_sp_asin_il_tl?ie=UTF8&tag=vastwork-23&linkCode=as2&camp=536&creative=3200&creativeASIN=B001PTGR52" rel="nofollow" target="_blank"> Effective Java 中文版</a>》虽然是基于 Java 而写的,但甚至对 Scala 来说都非常有用,同样的,对于其他基于 JVM 的语言来说同样适用。许多对 Java 适用的知识是很有用处的,至少,会影响你设计系统时的选择。当你评估第三方库时,你会从中获取许多有用的信息。</p> <p> ● 《<a href="http://www.amazon.com/gp/product/1593271042/ref=as_li_ss_tl?ie=UTF8&tag=job0ae-20&linkCode=as2&camp=217145&creative=399369&creativeASIN=1593271042" rel="nofollow" target="_blank">Inside the Machine</a> 》虽然已经过时几年了,但可能是最好的现代处理器架构的入门材料。虽然它并没有涵盖最前沿的技术,但它是一本非常好的介绍 x86 处理器以及大的发展方向(2006年底)的入门资料。这本书不再印刷了,你可以买它的电子版本。</p> <p> ● 《<a href="http://www.amazon.com/gp/product/0201432943/ref=as_li_qf_sp_asin_il_tl?ie=UTF8&tag=job0ae-20&linkCode=as2&camp=1789&creative=9325&creativeASIN=0201432943" rel="nofollow" target="_blank">The Java Virtual Machine Specification</a> <a href="/misc/goto?guid=4958337267491651423" rel="nofollow" target="_blank">Java 虚拟机规范(Java SE 7 <em>中文版</em>)</a>》也许不是一本想轻松阅读的第一选择,但它包含许多非常关键的需要掌握的知识。</p> <p> ● 《<a href="/misc/goto?guid=4958337268289488288" rel="nofollow" target="_blank">JSR 133(Java Memory Model) FAQ</a> 》在很长一段时间里,它都是获取关于 Java 内存模型知识的最好的方法,并且你不需要深入到细枝末节。</p> <p> 有了这些资料,你应该需要忙一阵了。我非常欢迎关于其他材料的建议,我希望将来会增加增补阅读列表的博文。</p> <p> <strong>其他资源</strong></p> <p> 在 Thomas Lockney 这篇文章的评论,还有其他网友的资源推荐。</p> <p> @Staffan Nöteberg <a href="/misc/goto?guid=4958337269091665544" rel="nofollow" target="_blank">推荐的 JVM 列表</a>。</p> <p> @Helwyr 推荐了两个邮件列表资源:① The Disruptor discussion: <a href="/misc/goto?guid=4958191275803294151" rel="nofollow" target="_blank">http://code.google.com/p/disru…</a> ② Concurrency Interest: <a href="/misc/goto?guid=4958337270612688308" rel="nofollow" target="_blank">http://cs.oswego.edu/mailman/l…</a></p> <p> 英文原文:<a href="/misc/goto?guid=4958337258757919420" rel="nofollow" target="_blank">Thomas Lockney</a> 编译:<a href="/misc/goto?guid=4958185140659301754">伯乐</a>在线- <a href="/misc/goto?guid=4958337272868023595" target="_blank">唐小娟</a></p>