上一篇文章介绍了如何运行了第一个Java程序“Hello World”。然而这个开发环境看起来那么陌生,一个个名字符号完全不知道它们是干啥的呀,对于初学者来说,好比天书一般,多看几眼感觉都要走火入魔了。因此接下来还是好好分析一下Java工程的总体结构,理清这些文字符号的来龙去脉才好。
话说宇宙原本一片混沌,分不清天南地北,多亏了盘古开天辟地,轻且清的物质上浮成为天空,重且浊的物质下沉变做地壳,于是才有了一个万物生长的星球。那在Java世界当中,这个星球便是工作空间,每次打开Eclipse,都会弹出启动窗口Launcher,如下图所示。
可见该窗口仅仅指定工作空间Workspace的目录路径,单击Launch按钮即可进入Eclipse的主界面。工作空间指定了一块硬盘区域,空间里的所有文件都位于该区域内部,犹如山川河流纵横于星球内。在这日月争辉的星球上,飞鸟走兽你追我跑,可是一片莽荒产生不了什么价值,还得进行开发才行。程序员作为这个星球的创造者,自然需要负责开疆拓土和建立秩序,接下来的事情就是创建国家机器了,对应到Java开发则叫做创建Java工程,每个工程都能单独运行,恰如每个国家都能单独发展一样。在Eclipse的顶部菜单栏依次选择“File”→“New”→“Project”,会弹出如下所示的项目创建窗口。
在该窗口选中“Java Project”,然后单击窗口底部的Next按钮,跳到下一个窗口页,如下图所示。
在该页面的“Project name”输入框中填写项目名称(可以理解为国家名称)。注意到输入框下方的Location目录,这便是Java工程所处的工作空间,就像这个国家位于哪个星球之上。再下面的JRE区域,可以选择不同的Java版本,版本号越大的表示版本越新越高级,好比一个国家有不同的社会发展阶段,有原始社会、奴隶社会、封建社会、资本主义社会等等,Java版本也在不断地更新换代,版本越高表示技术越进步。确认完工作空间和Java版本,接着单击窗口下方Finish按钮,完成项目创建操作。
一个国家毕竟太大了,还得划分行政区划,分而治之才管得过来,所以Java工程也要层层划分,划分后的组织机构称作“包”package。说是“包”,其实更像“树”,犹如树干到树枝到树叶这般开枝散叶。最顶层的组织,是这个国家的国体,有叫帝国com的,有叫王国net的,有叫邦国org的,还有叫书院edu的,甚是热闹。常见的Java工程,一般来自帝国时代,因此包名开头通常是com。国家政权下面,又有郡县制,抑或是省市制,总之要再分几级,故而com下面还会有xxx.xxx.xxx之类。譬如曹操是沛国谯县人,那他在东汉帝国这个Java工程里的位置是com.donghan.peiguo.qiaoxian;刘备是涿郡涿县人,那他的位置是com.donghan.zhuojun.zhuoxian;孙权是吴郡富春人,他的位置便是com.donghan.wujun.fuchun,依此类推。
有了包这种组织架构,现在可以往里面填充真材实料了,在一县土地之上,既有官府建造的城池,也有农民聚居的村落,每个聚集地都如同一个Java的代码文件。作为一座城池,首先要具备三要素,即:它归属哪个地区?它的名称是什么?它的范围有多大?一个合格的Java代码文件就要在文件内容中清楚地写明上述三个要素。以“关羽败走麦城”的麦城为例,经查史料得知,麦城在东汉时归属南郡当阳县,那么它应当位于包com.donghan.nanjun.dangyang之下。展开Java示例工程的com.donghan.nanjun.dangyang,右击它并在右键菜单中依次选择“New”→“Class”,弹出Class文件的创建窗口如下图所示。
在窗口中部的Name输入框中填写城池名称“Maicheng”,然后单击窗口底部的Finish按钮,完成代码文件Maicheng的创建操作。自动生成的代码文件内容如下所示:
package com.donghan.nanjun.dangyang; // 东汉帝国南郡当阳县 public class Maicheng {
}
由以上代码可见,第一行指定了这个代码文件所处的包路径是com.donghan.nanjun.dangyang;第三行的Maicheng则表示麦城这座城池的名称,Maicheng前面的class表示城池类型;而Maicheng后面的左右花括号就是该城池的城墙了,凡是在花括号内部的代码,都属于该城池的管辖范围。
前面运行“Hello World”的时候,代码里面有个main方法,这个main方法好比城门,打开城门就能访问城里的人物了。城里有官衙、有市场、有民居,这些建筑都有围墙,也都能用花括号界定它们的区域范围。正所谓小城故事多,城里发生的事情,要一件一件记录下来,可不能弄混淆了。对每件事情、每个动作,Java代码也有相应的标点区分开来。古代每十里设置一长亭,每五里有一短亭,供行人何处,亲友远行常在此话别。这个分隔用的长亭,对应Java代码里面的冒号,而短亭则对应Java代码的逗号。有了逗号和冒号,Java代码讲起故事来方能井井有条、头头是道。
下面来个具体的Java代码例子,东汉建安九年(204年),曹操平定袁绍*后,开始在魏郡邺县营建邺城,由此拉开了邺城作为六朝古都的序幕。邺城共有七个城门,其中正南门名叫凤阳门,城内建筑最有名的当数铜雀台,另有金虎台、冰井台与之齐名。现在给邺城创建对应的代码文件Yecheng.java,并把它放在魏郡邺县这个包下,也就是com.donghan.weijun.yexian这个package之下。游客从凤阳门这个main方法进入邺城,一路先后参观了铜雀台、金虎台和冰井台,游览路线是tongquetai→jinhutai→bingjingtai。这样便勾勒出Yecheng(邺城)这座城池的大概风貌了,详细的Java代码例子如下所示:
package com.donghan.weijun.yexian; // 东汉帝国魏郡邺县 public class Yecheng { public static void tongquetai() {
System.out.println("这里是铜雀台。");
} public static void jinhutai() {
System.out.println("这里是金虎台。");
} public static void bingjingtai() {
System.out.println("这里是冰井台。");
} public static void main(String[] args) {
System.out.println("欢迎来到魏国的都城——邺城。");
System.out.println("这里是邺城的正南门——凤阳门。");
tongquetai(); // 参观朱雀台
jinhutai(); // 参观金虎台
bingjingtai(); // 参观冰井台
}
}
接着在该代码文件内部右击,并在右键菜单中依次选择“Run As”→“Java Application”,表示运行这段Java代码。运行结果可以在界面下方的Console窗口中观察,如下图所示。
由此可见游客从凤阳门进入邺城,依次参观了铜雀台、金虎台、冰井台几个景点。看起来代码逻辑的主要意思都在了,细节上面可能有一些陌生的地方,不过不用担心,后面的文章将会逐步拨开迷雾。