源代码学习谈
2010-10-17 01:56
267 查看
学习并调试可调式版的OpenJDK源代码,在看前最好能了解下java虚拟机怎么实现的,然后在此前提下学习jdk 源代码及流行的开源代码是一种很好的方法。
Eclipse看不到jdk源代码时候,只要attach source选择jdk目录下的那个src.zip即可。但是sun jdk自带的源代码包中并不含jdk的源代码,包含的只有java api的源代码,sun的私有包、本地方法、虚拟机的实现源代码都是没有的,jdk完整的源代码需要另外下载。
有必要学习很多流行的java开源框架吗?
Java中分析源码学习源码,已经不是传统意义上的看到源码就分析学习,而是有的放矢,否则浪费时间和精力。简单的说,框架软件代码没有必要分析,只要了解大概流程即可,只要会用,无需去学。 框架应用软件应该去读,如何使用框架完成自己的系统才是第一要务。
分析学习源码是学习JavaEE必不可少的阶段,但是必要知道重点和方向,否则才能收到事半功倍的效果,否则花了很长时间和精力,都没有进步。
分析源码最好对比着看,例如struts框架是MVC模式,那么我看看不使用struts框架的源码是怎样(如Jive2/Yazd),然后我再看使用了MVC框架后的源码,有什么不同(如JiveJdon3),这样,对比才领会不同。
还有宠物店,看看SUN的Petstore,和Spring的JPetstore,或Jdon框架的Jpetstore,他们有什么不同,这样,视野开阔,就象买东西,好的坏的都看过,这样才知道掂量分寸。
>阅读Strtus源码可以增加对框架的了解,这其实是个人时间精力问题,还有面向什么人的问题,现在还有很多向下思维的人只有读框架源码后,心里才放心用这个框架,否则,心理不放心或者不服气,这些都是心理层面问题。
我提的是一个能够高效率学习Java的路途(脑筋急转弯,但是不是人人能够转的过来,只要转过来,窗户纸就捅破),但是条条大路通罗马,别人指的路也是可以通罗马的。
学习可以多吸收众家之长。阅读别人的代码,关键是你要知道你为什么去读,你的目的是什么,你为了解决某个问题,还是为了理解其中的某些内容。没有目的的去读源码是有作用的,但是事倍功半。而一旦你知道你的目的了,那么阅读的方法也是不一样。譬如如果你是需要去验证某一项功能是如何实现的,那么最好结合运行、调试去读代码。而如果你要理解其设计,那么最好是结合编写测试案例的方式去读代码。总之一句话,找到最佳的路径到达你的目的地。
Eclipse看不到jdk源代码时候,只要attach source选择jdk目录下的那个src.zip即可。但是sun jdk自带的源代码包中并不含jdk的源代码,包含的只有java api的源代码,sun的私有包、本地方法、虚拟机的实现源代码都是没有的,jdk完整的源代码需要另外下载。
有必要学习很多流行的java开源框架吗?
Java中分析源码学习源码,已经不是传统意义上的看到源码就分析学习,而是有的放矢,否则浪费时间和精力。简单的说,框架软件代码没有必要分析,只要了解大概流程即可,只要会用,无需去学。 框架应用软件应该去读,如何使用框架完成自己的系统才是第一要务。
分析学习源码是学习JavaEE必不可少的阶段,但是必要知道重点和方向,否则才能收到事半功倍的效果,否则花了很长时间和精力,都没有进步。
分析源码最好对比着看,例如struts框架是MVC模式,那么我看看不使用struts框架的源码是怎样(如Jive2/Yazd),然后我再看使用了MVC框架后的源码,有什么不同(如JiveJdon3),这样,对比才领会不同。
还有宠物店,看看SUN的Petstore,和Spring的JPetstore,或Jdon框架的Jpetstore,他们有什么不同,这样,视野开阔,就象买东西,好的坏的都看过,这样才知道掂量分寸。
>阅读Strtus源码可以增加对框架的了解,这其实是个人时间精力问题,还有面向什么人的问题,现在还有很多向下思维的人只有读框架源码后,心里才放心用这个框架,否则,心理不放心或者不服气,这些都是心理层面问题。
我提的是一个能够高效率学习Java的路途(脑筋急转弯,但是不是人人能够转的过来,只要转过来,窗户纸就捅破),但是条条大路通罗马,别人指的路也是可以通罗马的。
学习可以多吸收众家之长。阅读别人的代码,关键是你要知道你为什么去读,你的目的是什么,你为了解决某个问题,还是为了理解其中的某些内容。没有目的的去读源码是有作用的,但是事倍功半。而一旦你知道你的目的了,那么阅读的方法也是不一样。譬如如果你是需要去验证某一项功能是如何实现的,那么最好结合运行、调试去读代码。而如果你要理解其设计,那么最好是结合编写测试案例的方式去读代码。总之一句话,找到最佳的路径到达你的目的地。
相关文章推荐
- 共同学习Java源代码--数据结构--AbstractSet抽象类
- Android学习之在Eclipse看源代码的技巧
- Mono源代码学习笔记:Console类(三)
- 基于Andoird 4.2.2的同步框架源代码学习——同步提供端
- 韩顺平_php从入门到精通_视频教程_第4讲_图像_表格_实际应用-菜谱_课堂练习-课程表_学习笔记_源代码图解_PPT文档整理
- Android学习之Adapter(适配器)源代码分析与观察者模式的运用(一)
- Java开源分词系统IKAnalyzer学习(五) 词库加载源代码——DictSegmenty类
- “熊猫烧香”部分源代码-仅用于学习
- vue.js 源代码学习笔记 ----- $watcher
- 树莓派学习笔记—— 源代码方式安装opencv
- 韩顺平_php从入门到精通_视频教程_第15讲_di-css作业评讲①_学习笔记_源代码图解_PPT文档整理
- 学习源代码时的笨方法
- 韩顺平_php从入门到精通_视频教程_第18讲_浮动_学习笔记_源代码图解_PPT文档整理
- 共同学习Java源代码-数据结构-PriorityQueue类(三)
- [原创]Ruby学习笔记(3)-给源代码加上行号
- 韩顺平_php从入门到精通_视频教程_第21讲_解答学员问题_学习笔记_源代码图解_PPT文档整理
- 图片处理软件(含源代码,各种算法,学习非常棒)
- Hadoop-2.4.1学习之Map任务源代码分析(下)
- 伸展树的学习(二):源代码分析
- 共同学习Java源代码-数据结构-PriorityQueue类(四)