1.2 准备源代码阅读环境
在研究一个开源项目之前,都需要安装与配置基本的开发环境和源代码的阅读环境。这一系列内容包括:安装与配置JDK、安装开发调试IDE、安装与配置相关辅助工具等。
1.2.1 安装与配置JDK
在分析Hadoop的源代码前,需要做一些准备工作,其中搭建Java环境是必不可少的。Hadoop的运行环境要求Java 1.6以上的版本。打开http://www.oracle.com/technetwork/java/javase/downloads/index.html页面,可以下载最新的JDK安装程序,下载页面如图1-2所示。
![](http://s8.51cto.com/wyfs01/M00/07/7D/wKioJlFvofKABHT2AACZ9FOnq4I699.jpg)
安装完后,要检查JDK是否配置正确。
某些第三方的程序会把自己的JDK路径加到系统PATH环境变量中,这样,即便安装最新版本的JDK,系统还是会使用第三方程序所带的JDK。在Windows环境中,需要正确配置的Java运行时环境变量有JAVA_HOME、CLASSPATH和PATH等。
方便起见,我们往往为操作系统本身指定一个系统级别的环境变量。例如,Windows平台上的系统环境变量可以在“系统属性”的“高级”选项卡中找到,可在其中配置JAVA_HOME、PATH和CLASSPATH值。图1-3是Windows XP操作系统中为系统添加JAVA_HOME环境变量的例子。
安装并配置完成后,可以在命令行窗口中输入“java -version”命令检测当前的JDK运行版本。如果配置完全正确,会显示当前客户端的JRE运行版本,如图1-4所示。
![](http://s8.51cto.com/wyfs01/M01/07/7D/wKioOVFvofLwOLqVAABri-aLGfE510.jpg)
1.2.2 安装Eclipse
在成功安装和配置JDK后,还需要安装进行Java开发调试的IDE(Integrated Development Environment,集成开发环境),因为一个好的开发环境和源代码阅读环境可以使工作效率事半功倍。目前比较常用的Java开发IDE主要有Eclipse和NetBeans等,读者可以任意选择自己习惯的IDE作为开发工具。本书以Eclipse集成开发环境为例,着重介绍在Eclipse中开发与调试源码的方法。读者也可以举一反三,在其他IDE中做相应的尝试。
Eclipse是一个界面友好的开源IDE,并支持成千上万种不同的插件,为代码分析和源码调试提供了极大的便利。可以在Eclipse官方网站(http://www.eclipse.org/downloads/)找到Eclipse的各个版本(对Hadoop源码进行分析,只需要下载Eclipse IDE for Java SE Developers)并下载安装。Eclipse下载页面如图1-5所示。Eclipse是基于Java的绿色软件,解压下载得到ZIP包后就能直接使用。关于Eclipse的基本使用已超出了本书的范围,因此下面仅向读者简要介绍如何使用Eclipse进行一些基本的源代码分析工作。
1. 定位某个类、方法和属性
在分析源代码的过程中,有时候需要快速定位光标位置的某个类、方法和属性,在Eclipse中可通过按F3键,方便地查看类、方法和变量的声明和定义的源代码。
有时候在查看一些在JDK库中声明/定义的类、方法和变量的源代码时,打开的却是相应的CLASS文件(字节码),为此Eclipse提供了一个功能,把字节码和源代码关联起来,这样,就可以查看(提供源代码)第三方库的实现了。
![](http://s4.51cto.com/wyfs01/M01/07/7D/wKioJlFvomHD71HpAACdL0zXdok352.jpg)
Eclipse打开字节码文件时,可以单击“Attach Source”按钮进行字节码和源代码关联,如图1-6所示。
![](http://s7.51cto.com/wyfs01/M00/07/7D/wKioJlFvomGgyiDuAAB2nxMZEW0918.jpg)
在查看java.net.URL时,Eclipse提示代码关联,将JDK中附带的JDK源文件压缩包(在安装目录下可以找到,名字是“src.zip”)绑定到“rt.jar”,以后,只要访问该JAR包中的字节码文件,Eclipse就会自动显示相应的源代码文件。
其他第三方Java插件的源代码文件的载入方法类似。
2. 根据类名查找相应的类
如果知道希望在编辑器中打开的Java类的名称,则找到并打开它的最简单的方法是使用快捷键Ctrl+Shift+T(或者单击Navigate→Open Type)打开Open Type窗口,在该窗口中输入名称,Eclipse将显示可以找到的匹配类型列表。图1-7显示了Hadoop 1.0中名字包含“HDFS”的所有类。
![](http://s6.51cto.com/wyfs01/M01/07/7D/wKioOVFvomGAnzRXAABMvw_FZMQ921.jpg)
注意 除了输入完整的类名之外,还可以使用“*”和“?”通配符来分别匹配“任何”或“单个”字符。
3. 查看类的继承结构
Java是面向对象的程序设计语言,继承是面向对象的三大特性之一,了解类、接口在继承关系上的位置,可以更好地了解代码的工作原理。选中某个类并使用Ctrl + T快捷键(或单击Navigate→Quick Type Hierarchy)可以显示类型层次结构。
层次结构将显示所选元素的子类型。如图1-8所示,该列表显示已知的所有org.apache.hadoop.fs.FileSystem子类。
![](http://s2.51cto.com/wyfs01/M00/07/7D/wKioOVFvomHTgVVmAABSSkULVE8189.jpg)
4. 分析Java方法的调用关系
在Eclipse中可以分析Java方法的调用关系,具体做法如下:在代码区中选择相应的方法定义,然后用鼠标右键选取Open Call Hierarchy项或者使用快捷键Ctrl+Alt+H,则可以在Call Hierarchy视图中看到方法的调用关系,该视图还提供了一层一层的方法调用追溯功能,对查找方法的相互调用关系非常有用,如图1-9所示。
![](http://s5.51cto.com/wyfs01/M00/07/7D/wKioJlFvomGRMs7uAABEaB0GkzU160.jpg)
注意 快捷键是日常开发调试中最为便捷的技巧。Eclipse中的快捷键也可谓是博大精深,这里不一一列举。读者可以在实际开发中不断摸索并牢记这些快捷键,因为它们也是日常开发中必不可少的内容。读者也可参照Eclipse中的这些快捷键,在其他IDE中找到相应的快捷键设置。
1.2.3 安装辅助工具Ant
在安装和配置了JDK和Eclipse后,为了编译Hadoop,还需要安装辅助工具Ant。
对Hadoop这样复杂的项目进行构建,不是仅仅将Java源文件编译并打包这么简单,项目中使用到的各种资源都需要得到合理的安排,如有些文件需要拷贝到指定位置,有些类需要放入某个JAR归档文件,而另外一些类则需要放入另外一个JAR归档文件等,这些工作如果全部由手工执行,项目的构建部署将会变得非常困难,而且难免出错。Ant是针对这些问题推出的构建工具,在Java的项目中得到了最广泛的使用。
Ant跨平台、可扩展,而且运行高效,使用Ant,开发人员只需要编写一个基于XML的配置文件(文件名一般为build.xml),定义各种构建任务,如复制文件、编译Java源文件、打包JAR归档文件等,以及这些构建任务间的依赖关系,如构建任务“打包JAR归档文件”需要依赖另外一个构建任务“编译Java源文件”。Ant会根据这个文件中的依赖关系和构建任务,对项目进行构建、打包甚至部署。
和Hadoop一样,Ant也是Apache基金会支持的项目,可以在http://ant.apache.org/bindownload.cgi下载,下载页面如图1-10所示。
和Eclipse类似,Ant也是绿色软件,不需要安装,解压缩下载的文件后需要做一些配置,用户需要添加环境变量ANT_HOME(指向Ant的根目录),并修改环境变量PATH(在Windows环境下,添加%ANT_HOME%\bin到PATH中)。安装并配置完成后,可以在命令行窗口中输入“ant -version”命令来检测Ant是否被正确设置。
![](http://s1.51cto.com/wyfs01/M00/07/7D/wKioOVFvoozAou7KAACt1QWd__s269.jpg)
Hadoop的Ant还使用了一个工具:Apache Ivy,它是Ant的一个子项目,用于管理项目的外部构建依赖项。外部构建依赖项是指软件开发项目的构建需要依靠来自其他项目的源代码或JAR归档文件,例如,Hadoop项目就依靠log4j作为日志记录工具,这些外部依赖项使得构建软件变得复杂。对于小项目而言,一种简单可行的方法是将其依赖的全部项目(JAR文件)放入一个目录(一般是lib)中,但当项目变得庞大以后,这种方式就会显得很笨拙。Apache的另外一个构建工具Maven中,引入了JAR文件公共存储库的概念,通过外部依赖项声明和公开的公共存储库(通过HTTP协议)访问,自动查找外部依赖项并下载,以满足构建时的依赖需要。
Ivy提供了Ant环境下最一致、可重复、易于维护的方法,来管理项目的所有构建依赖项。和Ant类似,Ivy也需要开发人员编写一个XML形式的配置文件(一般文件名为ivy.xml),列举项目的所有依赖项;另外还要编写一个ivysettings.xml文件(可以随意为此文件命名),用于配置下载依赖关系的JAR文件的存储库。通过Ant的两个Ivy任务ivy:settings和ivy:retrieve,就可以自动查找依赖项并下载对应的JAR文件。
1.2.4 安装类UNIX Shell环境Cygwin
对于在Windows上工作的读者,还需要准备类UNIX Shell环境的Cygwin。
注意 在Linux等类UNIX系统中进行Hadoop代码分析、构建的读者可以略过这一节。
Cygwin是用于Windows的类UNIX Shell环境,由两个组件组成:UNIX API库(它模拟UNIX操作系统提供的许多特性),以及在此基础上的Bash Shell改写版本和许多UNIX实用程序,它们一起提供了大家熟悉的UNIX命令行界面。
Cygwin的安装程序setup.exe是一个标准的Windows程序,通过它可以安装或重新安装软件,以及添加、修改或升级Cygwin组件。其下载页面为http://cygwin.com/index.html,如图1-11所示。
![](http://s3.51cto.com/wyfs01/M00/07/7D/wKioOVFvosuiK2d2AACHrQ6xJ5g915.jpg)
执行安装程序setup.exe,并在安装程序的步骤4(Cygwin Setup – Select Package)中选择UNIX的在线编辑器sed,如图1-12所示(可以利用Search输入框快速找到sed)。
![](http://s2.51cto.com/wyfs01/M01/07/7D/wKioOVFvosuyGaqwAABCv8dKFks555.jpg)
在安装sed时,setup.exe会自动安装它依赖的包。在Cygwin中,可用的包超过1000个,所以只需选择需要的类别和包,以后随时可以通过再次运行setup.exe,添加整个类别或单独的包。在Windows下构建Hadoop,只需要文本处理工具sed。
安装完成后,使用Start菜单或双击Cygwin图标启动Cygwin。可以在Shell环境中执行“ant -version | sed "s/version/Version/g"”命令验证Cygwin环境,如图1-13所示。
![](http://s5.51cto.com/wyfs01/M01/07/7D/wKioJlFvosvxvfbTAAAceYlbBK0920.jpg)
![]()
![]()
成功安装JDK、Eclipse、Ant和Cygwin之后,就可以开始准备Hadoop源代码分析的Eclipse环境了。
分享到:
相关推荐
JSF支持多语言环境,源代码中包含了资源包和本地化策略的实现,帮助开发者理解和实现全球化应用。 8. **错误处理与异常处理** 在源代码中,你可以看到JSF如何处理验证失败、转换错误和其他异常情况。这对于调试和...
ADS 1.2 提供了一个完整的开发环境,包括源代码编辑器、编译器、链接器、调试器等核心组件。它支持C和C++语言,使得开发者可以方便地进行程序编写和调试。该环境的特点在于它的直观界面和对ARM处理器的优化支持,...
1.1 准备源代码学习环境/ 2 1.1.1 基础软件下载/ 2 1.1.2 如何准备windows环境/ 3 1.1.3 如何准备linux环境/ 6 1.2 获取hadoop源代码/ 7 1.3 搭建hadoop源代码阅读环境/ 8 1.3.1 创建hadoop工程/ 8 1.3.2 ...
- 将事先准备好的源代码文件夹(例如:`inc`, `LCD`, `src`, `usb`)添加至创建的工程中。 - 可以通过在工程窗口中右键选择`Project -> Add Files...`来添加文件,或者直接将文件夹拖拽至工程窗口内。 - 添加文件...
- **GCC编译器**:基于GNU Compiler Collection,用于将C/C++源代码转换为机器码。 - **GDB调试器**:提供源代码级别的调试功能,包括设置断点、单步执行、查看变量值等。 - **Project Manager**:用于创建、管理...
被审计系统情况,包括但不限于源代码行数、源代码文件大小、设计语言及组件、开发软件环境、系统架构、编译器、系统类库、系统服务器及数据库等信息。 3. 源代码审计详情 3.1. 安全风险定义 源代码安全审计是运用...
1.2 对于开发者而言,1.2rc1 版本的源代码包包括了完整的编译环境,使得在不同的平台,包括 Windows 上进行开发变得更为便捷。 三、在 Win7 + VS2010 下编译 Speex 2.1 环境准备:首先确保你的计算机上安装了 ...
总结来说,在 Mac 上编译 Android 源代码涉及到多个步骤,包括创建大小写敏感的磁盘分区、配置 repo 环境、下载源代码、初始化编译环境等。需要注意的是,这个过程对硬件资源的需求较高,尤其是磁盘空间和网络带宽。...
6. **开发流程**:使用ADS进行开发通常涉及编写源代码、使用编译器将其转换为可执行二进制文件、然后通过调试器进行测试和调试。调试过程可能包括设置断点、查看内存、单步执行代码等步骤,以确保代码正确无误地运行...
配置和编译vivi之前,需要准备好Linux内核的源代码,因为vivi会用到内核的部分头文件。假设已经解压了vivi和Linux内核源代码到相应的目录下(例如,解压到了`/home/chenjun`目录下),则需要按照以下步骤进行配置: ...
JDBC(powernode 文档)源代码 目录 JDBC概述 1.1 前言 1.2 什么是JDBC 1.3 JDBC的原理 1.4 程序员,JDBC,JDBC驱动的关系及说明 1.4.1 JDBC API 1.4.2 JDBC 驱动 1.4.3 Java程序员 1.4.4 三方关系 1.5 ...
IAP、USER文件夹可能分别包含Bootloader和用户应用程序的源代码,而HARDWARE则可能包含针对特定硬件平台的配置文件。 总之,STM32 IAP Bootloader V1.2是STM32开发中的重要工具,它简化了远程固件升级的过程,提高...
1. **准备Linux Kernel源代码**:Vivi编译过程中需要使用到Kernel的一些头文件,因此需要先准备好Linux Kernel的源代码。将Vivi源代码和Linux Kernel源代码解压到相应目录下。 2. **修改Vivi的Makefile**:在Vivi源...
10.5 【实例】IP封包截获工具IPPack源代码分析 第11章 内核模式程序设计与 Windows防火墙开发 11.1 Windows操作系统的体系结构 11.2 服务 11.3 开发内核驱动的准备工作 11.4 内核模式程序设计...
绝对有源代码 目录 第一章 开发网上购物系统的概述 1.1课题的现状和发展趋势 1.2课题涉及内容和目标 1.3网上购物系统的构成 第二章 网上购物系统设计 2.1 分析与概要设计 2.2 功能模块划分 2.3 数据库设计 第三章 ...
\和Java的“一次编译,到处运行”跨平台不同的是,Qt是源代码级的跨平台,一次编写,随处编译。一次开发的Qt应用程序可以移植到不同的平台上,只需重新编译即可运行。Qt支持的平台有: \? Microsoft Windows,包括...
- **Windows环境下**:推荐使用预编译的安装程序,也可通过Cygwin或MSYS环境从源代码构建。 ### 2.4 安装方法 Wireshark支持多种安装方式: - **RPM包**:适用于Red Hat系列Linux发行版。 - **DEB包**:适用于...