关键字: Java 进阶 Spring Jboss 高级<分享> 程序员
原本我想把这篇文章的名字命名为: <怎样成为一个优秀的Java程序员>的, 可是本身还不够优秀, 而本篇所涉及的都是本身学习和工做中的一些经验, 后来一想, 叫<怎样进阶Java>可能更为合适吧. 能给初学Java的人一个参考, 也就是我原本的心愿. 若是有大牛看到不妥之处, 敬请指正. 我必定会修正的 :). spring
Java目前是最流行的语言之一, 是不少公司和程序员喜好的一门程序语言. 并且, Java的入门比C++相对来讲要简单一些, 因此有很大一部分程序员都选择Java做为本身的开发语言. 我也是其中之一, 就是由于以为学C++太难, 当初在学校学了将近一个学期的C++, 啥进步都没有, 哈哈, 天资太差, 因此才选择自学Java(当时学校并无开设Java的课程), 才走上了程序开发这条路. 数据库
Java虽然入门要容易, 然而要精通它, 要成为专家却很难. 主要缘由是Java所涉及的技术面比较宽, 人的精力老是有限的. 有些Java方面的技术是必需要要掌握的, 钻研得越深刻越好, 好比多线程技术. 编程
1. 基础阶段 小程序
基础阶段, 可能须要经历1-2年吧. 这个时段, 应该多写一些基础的小程序(本身动手写的越多越好). 计算机是一门实践性很强的学科, 本身动手的东西, 记忆很是深入, 效果要赛过读好多书. 固然, 学Java基础的时候, 书籍的选择也很是重要, 好的书籍事半功倍, 能让你打个很是好的基础. 而差的书籍, 很容易将你带入歧途, 多走不少弯路. 书籍不在多, 而在意读得精(有些书, 你读十遍都不为过). 我记得我学Java的第一本书是<Thinking in Java>的中文版, 网上有不少人都建议不要把这本书做为第一本的入门教程来看, 太难. 我却想在此极力推荐它, 这本书确实是本经典之做. 并且书中确实讲的也是Java中的一些基础技术, 没有什么太难的东西, 只不过比较厚, 学习周期比较长, 因此不少人中途会选择放弃. 其实, 这本书是一本可贵的入门教程, 对Java一些基础的东西, 讲得很全, 并且也很清晰, 更重要的是, 这本书能让你养成不少好的编程习惯, 例子也不少. 建议你把大部分的例子本身去实现一遍. 个人亲身经历, 我记得当时认真的看了2遍, 花了大概7个月的时间, 不过真的有很好的效果. 另一个教程, 就是<Java核心技术>卷一, 卷二的话能够没必要要买. 卷一看完, 本身再钻研一下, 就已经能达到卷二的高度了:). 到那时, 你就会以为看卷二没啥意思, 感受浪费钱了. 还有一个, 就是张孝祥的Java视频, 看视频有个好处, 就是比看书的记忆要深入, 还有不少你能够跟着视频的演示同步操做. 张孝祥的Java视频对初学者来讲, 确实颇有做用. 总结起来: 看这些资料的时候, 必定要多写例子, 写的越多越好! 网络
2. 中级阶段 多线程
中级阶段, 是一个更漫长的时期, 可否突破此阶段, 跟我的的努力和天资有着很大的关系. 你不得不认可, 一样一门新技术, 有些人一个月领悟到的东西, 比你一年的都多. 这就是天资, 程序员是一个须要天才的工做. 我想, 不少人据说李一男吧, 此君就是这样的人物, 三个月的时间就能解决好大一帮人几年解决不了的问题, 给华为某部门带来了不少的收益. 哦, 这是题外话了, 与此篇的主题无关, 只是本人偶尔的感慨而已:). 这个阶段, 就须要研究不少专题性的东西了, 好比: IO的实现原理, 多线程和Java的线程模型, 网络编程, swing, RMI, reflect, EJB, JDBC等等不少不少的专题技术, 钻研得越深越好. 为了更好的提升, 研究的更深刻, 你须要常常到网络上搜索资料, 这个时候每每一本书起不来很大的做用. 选一个JDK版本吧, 目前建议选用1.6, 多多研究它, 尤为是源代码(尽可能! 就是尽本身最大的努力, 虽然研究透是不可能滴). 好比说: util, collection, io, nio, concurrent等等包. 可能有人会反对我说, 不是有API文档吗, 为何还要研究这么多的源代码? 错了, 有API文档, 你仅仅只是知道怎么用而已, 而认真仔细的研读这些大牛的源码, 你就会深刻更高的一个阶层, 本身的编码, 设计都会有很大的提升. 若是有能力和精力, 我建议你把JDK的每一行代码都熟悉一遍, 绝对只有好处, 没有坏处! 并且你会有些意外的收获, 好比, 当你仔细地读完concurrent包的时候(很少, 好像总共是86个类吧), 你就会对Doug Lea佩服得五体投地. 这个时候最忌碰到难题就去寻找帮助, 去网上找答案! 先把本身的脑壳想破吧, 或者等你的老板拿着砍刀冲过来要把你杀了, 再去寻求帮助吧. 对于专题的学习, 英文原版的阅读是很是必要的, 看的越多越好, 多上上IBM的developer, SUN的网站吧, 固然Javaeye也很不错:), 有不少大牛, 呵呵. 架构
这个时候, 你应该创建本身的代码库了, 你应该本身去研究不少有意思的东西了. 从一个200多M的文件中寻找一个字段, 最坏状况(在文件的末尾咯)也只须要1秒左右的时间, 你知道吗? 这个阶段, 有不少不少相似的有趣的东西能够供你去研究, 你须要更多地关注性能, 规范性, 多解决一些疑难问题. 须要学会全部的调试技术, 运用各类性能工具, 还有JDK附带的不少工具, 这些你都要熟练得跟屠夫操刀同样. 也能够看看<Effective Java>, 这本书总结的也不错, 对写高效稳定的Java程序有些帮助. 也能够看看模式方面的东西, 可是我建议模式不要滥用, 非得要用的时候才用, 模式每每会把问题搞复杂:). 总结起来: 这个阶段是一个由点延伸到面的过程, 通过不断的学习, 演变成全面的深刻! Java技术中你没什么盲点了, 还能解决不少性能问题和疑难问题, 你就成了一个合格的程序员了! :) [要想成为优秀程序员, 还得对数据库和操做系统很精通.] 框架
3. 高级阶段 工具
高级阶段, 我就不敢妄言了. 呵呵, 我感受本身也是处于中级阶段吧. 也是根据本身的一些经验, 谈谈本身的理解吧:
这个阶段, 须要研究各类框架, Spring, struts, Junit, Hibernate, iBatis, Jboss, Tomcat, snmp4j等等, 我以为这个时候, 只要是用Java实现的经典框架, 你均可以去研究. ------在此申明一下, 个人意思不是说会用. 光会用实际上是远远不够的, 你能够选择本身喜欢钻研的框架, 去好好研究一下, 兴趣是最好的老师嘛.(2009.07.21)
建议开始的时候, 研究Junit和Struts吧, 小一点, 里面都采用了不少的模式, 呵呵, 能够熟悉一下, 尽可能想一想人家为何这么作. 我建议主要的精力能够花在spring和jboss上, 尤为是jboss, 经典中的经典, 设计, 性能, 多线程, 资源管理等等, 你从中能够学到的东西简直是太多了. 并且它还有一本写得很好的参考书, 叫<Jboss管理与开发核心技术>, 英文方面的资料也是很是的多. 在工做中若是有机会参与架构的设计, 业务问题的讨论, 必定千方百计杀进去! 这对本身的设计能力, 以及对设计如何运用在业务上有很大的帮助. 毕竟, 程序都是为了更好地实现用户的业务的. 这个时候, 须要更多看看软件工程和UML方面的资料, 或者本身主持一个项目玩玩, 不必定非得出去拉项目赚钱(能赚钱固然更好), 无论成功或失败, 都是很宝贵的经验, 都能提升不少!