1.主要学习资料
李刚.疯狂Java讲义.北京: 电子工业出版社,2008,10.
高永强.Java编程艺术.北京: 清华大学出版社,2009,7.
Bruce Eckel.Thinking of Java.China Machine Press,2009,9.
2.Java的概述
2.1 Java语言的发展简史
我觉得既然决定学习Java语言,就要以精通Java为终极目标。而Java的发展历史应该作为常识去了解。很多人在读这一章节的时候只是略略翻过,甚至直接跳过。我曾经也这么干过,我就想,我是要踏踏实实学技术的人,我又不耍什么嘴皮子,我知道这些东西有什么用呢?但是,经过更深层次的学习和对其他面向对象语言的学习之后,我觉得这些知识是应该了解的,它并不是你跟人炫耀的资本,而是帮助你建立计算机语言体系的必经之路。如果你精通这门语言,却不知道它为什么来到这个世界,你不觉得很可笑吗?只有知其来由,方可明其根本,继而开启未来创新之路。
以下几条是必须了解的:
2.1.1 Java的创始人:伟大的James Gosling大师。
2.1.2 Java的前世:Oak。你可以认为是OK!其发明者:Bill Joy大师。
2.1.3 怀孕Java的子宫:Green计划。看来是Java一出生就是绿色产品。
2.1.4 生日:1995年初。看来Java已经小学毕业了,但现在学还不晚。
2.1.5 牙牙学语时间:1998年12月,快4岁了。Sun发布了Java历史上最重要的JDK版本:JDK1.2。将Java语言分为了三个版本。
2.1.6 Java的三个版本:J2SE,J2ME,J2EE。
2.1.7 知道一些常见的开源框架:Struts,WebWork,Hibernate,Spring等。
2.1.8 小学毕业纪念日:2004年10月,Sun发布了JDK1.5。将三版本改名为:Java SE、Java ME、Java EE。
2.2 Java的竞争对手及各自优势
这个说法特别残酷,什么技术都存在着竞争。不过其实要是了解到其竞争对手的优势的话,在你的心里,这也许不是什么竞争,而是各取所长罢了。
说一下C#,这个新鲜的面向对象语言是微软大哥力挺的。Sun小弟的势力范围扩大的已经威胁到了大哥的地位。这一战不可避免啊。C#是Dot Net主要语言,其主要阵地也局限于Visual Studio开发平台。这点是Java拥护者的主要攻击目标。您虽然仗着有windows的后台,但您也就能在您那一亩三分地上发威不是?所以这样也很明显了,当你依托于windows开发应用系统的时候,我建议Dot Net不失为一个最佳的选择。不说别的,拿他开发肯定要比Java简单,这是我所听到前辈们的经验,还是吸取吸取吧。
另外李刚老师还介绍了Ruby和Python,这俩我压根就没听说过。我建议,啥时候用到了再看也不迟。
2.3 Java程序的运行机制和JVM
我就记住了李刚老师的一句话:两个步骤,先编译后解释。
Java是个杂种语言,因为它是编译型语言和解释性语言的杂交组合。生物学上强调一个杂种优势,Java的潜力无穷啊。
JVM是Java虚拟机。我觉得书中的那个比喻非常的恰当,将JVM比喻成笔帽。我觉得您也可以理解为是泥土,您要想种花,会买许多大小不等的花盆。这花盆便是不同的操作系统,它不一样没关系。您只要有泥土就行,管他是什么规格的花盆,用泥土将它填满,然后在上面种上花朵。您要是聪明,也就会想到这一朵朵美丽的花儿便是咱Java语言。JVM起到的便是这个转换接口的作用了。这么理解是不是透彻了?咱们程序员还都是种花的高手啊!
2.4 开发Java的准备
安装JDK,我的版本(成文之日应该是最新的了):jdk1.6.0_18。
JDK是个啥玩意呢?我也当一把庖丁,分解一下其内部结构吧:
2.4.1 bin:存放JDK的各种工具命令。
2.4.2 db:由于听从了书上的建议,没有安装db组件,故而没有此文件夹。我想是关于数据库的东西吧。
2.4.3 demo:演示代码。
2.4.4 jre:jre的环境。
2.4.5 lib:存放JDK工具命令的实际执行程序。
2.4.6 sample:示例代码。
2.4.7 src.zip:核心类库的源码。
2.4.8 剩下的为说明文档。
环境变量的设置:右键我的电脑->属性->高级->环境变量。新建变量PATH,如下图:
然后在C盘根目录下找到隐藏文件:AUTOEXEC.BAT:加入一句话,如下图:
2.5 第一个Java程序
我在D:\Java\javaSE中新建了一个文本文档:HelloWorld.java
注意扩展名一定要是java,而不是txt,若是隐藏了扩展名一定先调出来再改。
2.5.1 这是我的第一个java程序:
public class HelloWorld
{
//Java 程序的入口方法,程序将从这里开始运行
public static void main(String args[])
{
//向控制台打印一条语句
System.out.println("Hello Java!");
}
}
2.5.2 如何编译和运行这段代码呢?
开始-》运行-》cmd
打开源代码所在目录:D:\Java\javaSE
输入:javac –d . HelloWorld.java
执行后,在该目录下会产生一个HelloWorld.class文件
输入:java HelloWorld
控制台显示输出语句:
2.5.3 对于java语言编译与运行的思考
Q:为什么java语言可以在任何的平台上运行而不受环境的影响呢?
A:自制力不好的同志知道,如果环境不好,请自己制造环境。Java也是一样,我们不妨看一看它的编译过程。我们在文本文档中编写的是源代码,在将扩展码写为.java的时候,系统将之看作了java代码。(由于有jdk与jre的缘故)Java编译器将源代码编译为一个被称为字节码的机器代码,再经过JVM(java虚拟机)的解释,逐行翻译为了计算机CPU可执行的机器码。然后便可以进行运行处理。
Q:环境变量到底有什么用处?
A: “当我们使用java Java类名命令来运行Java程序时,JRE到哪里去搜索Java类呢?”这是李刚老师抛出的另一个疑问。对此,他也做出了回答:原来1.5以上版本的JDK的设计被改善,JRE会自动搜索当前路径下的类文件。而之前版本的JDK却没有这样的功能。故而以往的Java教材都会首先强调环境变量的设置。而李刚老师的疑问正好回答了环境变量作用的问题,它的用处就是给JRE一个方向,让它去找Java源代码地址。这样才能实现对源代码的编译。
2.6 Java程序的基本规则
2.6.1 必须要有main方法
Java解释器规定:如果类能被解释器直接执行,则这个类里必须包含main方法,而且main必须使用public static void来修饰,且main方法的形参必须是一个字符串数组(String args[]是字符串数组的形式),也就是说,main方法的写法几乎是固定的。
main 方法是Java程序的入口。
2.6.2 一些要注意的问题
① Java语言是严格区分大小写的
② JDK的文件路径最好不要包含空格
③ main方法不要写成Main方法
2.6.3 垃圾回收机制
Java程序的内存分配和回收都是由JRE在后台自动进行的。但注意垃圾回收只能回收内存资源,对其他的物理资源,如数据库连接、磁盘IO等资源则无能为力。将对象的引用变量设置为null,则是暗示垃圾回收机制可以回收。垃圾回收的发生有不可预知性。
一个基本原则:对于不再需要的对象,不要再引用他们!