阅读源码的重要性:如厨师选食材,耍厨具——在Eclipse中如何查看Java、Android源码
首先,很多人说,不会看jdk中的源码就不叫学过Java。显然这是肯定的。打个比方:真正的厨师需要从食材的选取、加工,到最后的烹饪、装盘成型,甚至到最后给用户介绍食用方法等一整套流程走下来。而实际上很多厨师只是做了其中的一小部分,所以最多也只能叫得上“炒菜的”,而不是一个厨师。而很多顶级餐厅强调选材,就是从源头上找到适合做某道菜的原料,甚至是反过来,得到一个供应链供应某种独特食材而专门为该材料设计某种烹饪技术。这就是从头至尾的资源最大化利用,其体现创新及内功的地方贯穿整个流水线!特别的,厨师也需要用到各种工具,如果他只知道这工具能简单的干什么,而不知道其本身特性,那么必定不能将工具用到创新的场合和场景。
而我们在编程的时候,当然可以看着对应类的API说明文档进行使用。这就无异于别人提供好了材料,你去炒菜。炒得好当然是没问题的,但是要炒得妙,炒得有味道,当然你还得去了解食材背后的意义。比如了解食材的含水量,了解食材的生长环境及不同烹饪条件下发生的属性的改变等等。这样,你发挥的余地就不会局限于某一个小块。
回到编程,在使用某个类的时候,如果能深入了解其源代码的实现方法,那在以后的使用中势必更为得心应手。甚至为了满足自己的某项特殊需求,可以重写源码中的某一方法,甚至重写其源码库。若能提供一种比现有的源码库中更好的类,那自己创新的影响力就不单纯局限于一个应用、一套软件,而是造福了千千万万编程爱好者!
说了这么多,其实自己从接触Java编程的这两三个月里,也还没真正看过源码。今天上网找了下资料,尝试了一下:
首先,在Eclipse中进行如下操作:
1.点击 “window”-> "Preferences" 在弹出的左侧浏览列表里选择-> "Java" -> "Installed JRES";
2.此时"Installed JRES"右边是列表窗格,列出了系统中的 JRE 环境,选择你的JRE(一般那里就一个)先选中它,然后点边上的 "Edit...", 会出现一个窗口(Edit JRE);
3.选中rt.jar文件的这一项:“%JAVA_HOME_PATH%\java\jre_1.5.0_06\lib\rt.jar” 前面的路径是试你自己的安装路径而定的,主要看后面是“\lib\rt.jar”就可以了。点 左边的“+” 号展开它;
4.展开后,,点“Source Attachment:(none)”这一项,点右边的按钮“Source Attachment...”, 选择你的JDK目录下的 “src.zip”文件(一般是在jdk安装根目录下)。然后一直点“finish”和“ok”就可以完成源码文件与Eclipse的链接;
那么,这时候在Java工程中按下crl,然后点击对应的Java自带的类名,就会打开跳转到对应的源码文件。
但是对于安卓开发者,如果在安卓项目中,想用同样的方法打开安卓工程中,jdk的Java类源码,似乎就还是跳出那个无法连接到源码的界面(至少我是这样的)。原因应该是,在Java工程中,Eclipse找其源码文件是当然是在jdk连接的源码文件里面找。而在安卓工程中,Eclipse是会去Android SDK的目录下去找。所以还是找不到。这时候就要在Eclipse中建立其连接,使得在安卓工程中除了能找到对应的Java源码文件,还能找到安卓的源码文件。下面开始配置建立链接:
Activity类的源代码:按着Ctrl键,左击它,现实的结果却看不到代码的,提示的信息便是“找不到Activity.class文件”。
1、 此时点击下面的按钮,“Change Attached Source…”,这是跳出一个弹出框;
2、因为需要导入Android SDK根目录下的整个“sources”文件夹,所以需要点击弹出框的“external Folder”。然后选择Android SDK 安装目录下的“source”文件夹。最后点击“OK”。如果弹出“operation in progress.....”说明,成功了。完成配置;
3、如果在Android SDK安装目录下找不到“source”文件夹,需要启动Android SDK Manager进行源代码下载。启动后,勾选source for Android sdk,然后点击右下角“installe package...”,完成下载。(或者你也可以用其他方式下载,然后存至本地,在上述步骤导入源码文件夹的步骤,选择对应的下载包进行导入即可)
4、至此,我们无论在Android project 还是Java project中用ctl加点击的方式打开我们想打开的类的源码,都可打开跳转至相应的文件。
最后我们要的就是好好研究这些工具,特别是一些算法(如最经典的多种排序算法)。打开后有耐心地去研读其执行过程,必定收益良多!
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。