`
yongtech
  • 浏览: 29094 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Java如何进阶

    博客分类:
  • Java
阅读更多

关键字: Java 进阶 Spring Jboss 高级

 

本来我想把这篇文章的名字命名为: <怎样成为一个优秀的Java程序员>的, 但是自己还不够优秀, 而本篇所涉及的都是自己学习和工作中的一些经验, 后来一想, 叫<怎样进阶Java>可能更为合适吧. 能给初学Java的人一个参考, 也就是我本来的心愿. 如果有大牛看到不妥之处, 敬请指正. 我一定会修正的 :).

 

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方面的资料, 或者自己主持一个项目玩玩, 不一定非得出去拉项目赚钱(能赚钱当然更好), 不管成功或失败, 都是很宝贵的经验, 都能提高很多!  

50
6
分享到:
评论
21 楼 xiaoban0514 2009-07-25  
alexcheng 写道
看来所有SSH的使用者都是Java高级阶段啊。

我是一名大一学生,自学了JavaEE一年  JavaSE半年,除了教材其他的书就一本quote]

大一就这么用功有前途,,我大一一年就算是荒废了,还好大二及时补上,呵呵。。
以前有一位德高望重的老师和我说过,学习的过程就是爬山的过程,当你在山脚上网上看的时候感觉高不可攀,当你爬到半山腰的时候就会觉得自已已经快接近山顶了,那么当你爬上山顶才发现后面还有好几座山要爬。。。
没错,学习的过程个人体会就是如此,确实当你了解的一点东西后感觉自已已经入门了,当你接触到更多的东西的时候,就会感觉自己要学的东西还有很多。学无止境啊。
20 楼 lucky16 2009-07-24  
alexcheng 写道
看来所有SSH的使用者都是Java高级阶段啊。

我是一名大一学生,自学了JavaEE一年  JavaSE半年,除了教材其他的书就一本《Thinking In Java》第三版!   在此期间很努力,进步还是很快的!
我只认为我现在开始在进入了楼主的中级阶段了吧
但是现在你叫我用struts  hibernate  我都可以用,
说理解这两框架,我现在还不敢说理解,
实用和理解是有很大区别的,
要从会使用到理解往往靠你多研究研究源代码;
然后到后来你就会发现是很有帮助的,
现在在做一项目,没多少时间,准备过段时间研究一下struts的源码,个人现在还只接触了这两框架,但是还是挺喜欢struts的,研究,今后有能力,自己写适合自己的框架,O(∩_∩)O哈哈~,努力,向高级看齐。
19 楼 raisinmiao 2009-07-24  
我在不会写代码的时候就参加工作了,几年下来,虽然积累丰富的经验,但基础不扎实,还是会在原则性问题上犯错误。
有始无终的也看过不少书,现在很烦恼没有进步,你给了一个很好的引导,学习!
18 楼 ski_mz 2009-07-22  
引用
引用
引用
引用
[u][/u][i][/i][/b][b]
[/url][url]
引用
[img][/img]
17 楼 only_java 2009-07-22  
本人目前在“ IO的实现原理, 多线程和Java的线程模型, 网络编程”这里面苦战。。。。。。。,希望能给点意见!
16 楼 hillshills 2009-07-22  
不管如何,还是实践更能得到锻炼!
15 楼 yongtech 2009-07-21  
基础篇,,,没有捷径都是这么走过来的。
alexcheng 写道
看来所有SSH的使用者都是Java高级阶段啊。



哈哈, 这位兄弟, 我说的意思说的很明确了, 并不是使用这些框架的人, 光知道用其实是没有什么用的, 对自己的设计其实没有一点用处. 唉, 有什么高见,请赐教,我会及时修正.呵呵.
14 楼 alexcheng 2009-07-21  
看来所有SSH的使用者都是Java高级阶段啊。
13 楼 xiaoban0514 2009-07-21  
基础篇,,,没有捷径都是这么走过来的。
12 楼 yongtech 2009-07-21  
dayang2001911 写道
非常同意你的观点
其实我也在想,分析一些程序,从而提高自己,选材是个问题,不过,还有另外一个问题,靠自己能分析多深呢?
为了解决这个问题,我觉着要是有个学习开源代码的平台,按一定形式,聚集对某个源码的分析,比如可以把时序图统一生成,帮助理解等等。当然,这个平台是另一个话题了。
关键还是怎么透过开源代码去读懂别人的设计,代码虽然开源了,但是设计思想还是隐藏的。


对呀, 你说的太对了. 我现在感觉, 读人家的框架和源代码太重要了, 尤其是要一步步分析里面为什么会这样子做, 这样才学到人家的设计思想. 大部分时候, 还是可以参看人家的一些资料的, 如果一味自己摸索, 那就成了闭门造车了. 有时, 自己理解的东西, 由于经验原因, 可能有局限, 或者有偏差.
11 楼 luzl 2009-07-20  
似乎第二部可以不要?第一步熟悉基础,第二部看框架就可以了.Swing和网络什么的做Web用不到啊!
10 楼 jiyanliang 2009-07-20  
yongtech 写道
jiyanliang 写道
不知道LZ把数据结构和算法放在哪个位置了

说的有道理, 其实数据结构, 在看collection包的时候, 应该好好熟悉一下, 推荐一本比较好的书籍: <Algorithms in Java, Third Edition>. 还有一本就是: <Data.Structures.and.Algorithms.in.Java>, 也写的很不错. 如果需要的话,我可以共享给各位, 给我发邮件就行了, 我的邮箱: yongtech@126.com.

我现在看的是 数据结构与算法分析java语言描述第二版。英文名:DATA STRUCTURES AND ABSTRACTIONS WITH JAVA。个人感觉这本书也还行,已经看第二遍了。。
9 楼 dayang2001911 2009-07-20  
非常同意你的观点
其实我也在想,分析一些程序,从而提高自己,选材是个问题,不过,还有另外一个问题,靠自己能分析多深呢?
为了解决这个问题,我觉着要是有个学习开源代码的平台,按一定形式,聚集对某个源码的分析,比如可以把时序图统一生成,帮助理解等等。当然,这个平台是另一个话题了。
关键还是怎么透过开源代码去读懂别人的设计,代码虽然开源了,但是设计思想还是隐藏的。
8 楼 yongtech 2009-07-20  
jiyanliang 写道
不知道LZ把数据结构和算法放在哪个位置了

说的有道理, 其实数据结构, 在看collection包的时候, 应该好好熟悉一下, 推荐一本比较好的书籍: <Algorithms in Java, Third Edition>. 还有一本就是: <Data.Structures.and.Algorithms.in.Java>, 也写的很不错. 如果需要的话,我可以共享给各位, 给我发邮件就行了, 我的邮箱: yongtech@126.com.
7 楼 jiyanliang 2009-07-20  
不知道LZ把数据结构和算法放在哪个位置了
6 楼 lkjust08 2009-07-20  
不知道我什么时候才能进入你所说的那个进阶。
5 楼 zhaixoahu 2009-07-20  
好帖子。。。。。。。。
4 楼 gml520 2009-07-20  
说的有道理,对比一下,我才刚刚到中级的门外,还没进入呢!加油@!
3 楼 ilovejavaforever 2009-07-19  
jdk源码,确实要看了,我就先学的框架用框架,现在感觉到基础实在是不扎实啊~~~
2 楼 orsen 2009-07-19  
想看看jdk源码,但是有好多原因还是没看,看了文章,还是去好好研究下。
发表评论

文章已被作者锁定,不允许评论。

相关推荐

Global site tag (gtag.js) - Google Analytics