看一位程序员前辈的总结:从Java程序员到Java特种兵
如何从Java程序员到Java特种兵?
1)摆脱Java语法编程书或Java入门书籍,学习设计模式、软件及系统架构方面的内容;
2)掌握并熟练使用业内知名的Java开源第三方库,尤其是Apache Commons中的库;
3)深入学习JVM相关的知识;
4)从熟悉多线程编程到深入Erlang、Akka等的并发编程模型;
5)精通Netty/Mina等网络编程库;
6)对集群、分布式有深入的理解;
7)从参与做项目到承接项目、架构项目。
那么Java程序员需要知道计算机工作原理吗?
答案是不一定,这取决于你所从事的岗位和工作内容。我的观点一向是学以致用,对于用不到的知识,再好也没用。因为很多Java程序员长期从事各种业务系统的开发,此时需要的是对业务的熟悉程度,越是熟悉业务就越能满足客户的需求,而对于计算机的工作原理,基本上用不到。对于从事底层、网络开发的Java程序员来说,就应该熟悉计算机的工作原理了。比如对于从事底层分布式文件系统开发的Java程序员,他或她需要熟悉计算机的存储原理,计算机的系统结构,操作系统的原理机制,涉及到的各种算法。又比如对于从事网络开发的Java程序员来说,掌握和理解网络七层协议,TCP/IP、HTTP的工作原理,java.net库等,这些是网络开发必备的基础。总而言之,计算机工作原理属于基础学科,对于青少年而言,虽然不一定用到,但是能掌握就尽量掌握,能学习就尽可能学习,这些都是很好的知识,没准有一天你找工作就用上了。而对于Java程序员,如果你的工作不涉及计算机工作原理,那么不学也罢。科研界第一常识就是不要重新发明轮子,对于用不到的知识还要花费精力学习,这是赤裸裸的浪费时间和脑力资源,可以考虑把有限的时间用在更多有意义的事情上。
学习Java虚拟机对我们有什么好处?
在一般的Java开发过程中,我们是不需要Java虚拟机方面的知识的,学习Java虚拟机也没什么用处。但是,当我们开发的项目或系统遇到性能瓶颈时,Java虚拟机相关的知识的重要性就开始凸显出来了,理解并掌握Java虚拟机,找出应用程序的内存消耗或CPU占用情况,找出线程死锁问题,还可以找到内存溢出,从而定位内存泄漏等问题。
学习Java虚拟机还可以改善Java程序员的编程技能。因为Java虚拟机是Java语言底层实现的基础,学习Java虚拟机有助于理解Java语言的一些性质,也有助于使用Java语言。