Java 基础第一讲:Java 的故事和 Java 编程环境搭建
13 Sep
一、《Java 基础讲座》前言:
学习 Android 如果 Java 基础不好,势必举步维艰,所以从今天开始连载
《Android 的 Java 基础讲座》。本系列讲座假想对象是 Java 没有任何基础的朋
友。Java 基础知识不是高科技,无数人都会,但是基础好的并不多,如何用清
晰、简练、生动有趣的方式把 Java 的基础概念讲清楚,也比较困难。我能承诺
的是用心去做、持续修订每一讲,本系列分 35 讲,具体目录可以看这里。
二、Java 的故事:
我们知道人可以使用程序软件来操控计算机的硬件来完成一些工作,而软件
(程序)则是由某种编程语言编写的。Java 就是这样一种正在广泛流行和使用
的面向对象的编程语言,也是我们今后研究的重点语言。
1、Java 的诞生
让我们把时空切换到 1982 年,那一年一个伟大的公司诞生于美国斯坦福大学校
园,它的名字叫 Sun Microsystems,直译的话叫太阳微系统公司,事实上 Sun
是 Stanford University Network 的缩写。Sun 在 IT 行业中被认为是最具创造性
的企业。是极少数几个同时拥有自己微处理器、电脑系统、操作系统的公司。
1990 年的一天,Sun 的总裁麦克尼利(McNealy)听说他最好的一个工程师詹
姆斯.高斯林(James Gosling)打算离职,他感觉事态很严重。直觉告诉他优秀
的员工的离去意味着公司正在出大麻烦。麦克尼利必须找高斯林和其他员工好
好谈谈,看看问题出在哪里。
这些员工的意见很一致。Sun 公司本来是硅谷极为特殊的一个公司,以充满活
力、富于创新著称。太阳微系统公司一直很尊重员工,尽量发挥他们的创造力
和热情。但是,近年来,太阳微系统公司却越来越像成熟的大公司了。连哥斯
林这样的人,公司也安排他去做一些为老系统写升级软件这种琐碎的工作。正
在扼杀着太阳微系统公司员工的创新思想和工作热情。高斯林他们想做一些伟
大的、革命性的事情,但在 Sun 公司现在的状况中是不可能实现的。
Java 的创造者 詹姆斯.高斯林(James Gosling)
随后,麦克尼利采取了一个大胆的举动,他让高斯林自己组建一个完全独立于
公司的小组,由小组成员自己决定工作目标和进度。麦克尼利对哥斯林说:“我
不管你们要做什么,要多少钱、多少人,也不管你们花多长时间做出来,公司
都无条件支持。”
这个后来取名为“绿色小组”所要研究的产品就是十年后风靡 IT 界的数字家电、
后 PC 设备和家庭网。事实证明,绿色小组的研究并不十分成功,直到 2001
年,Sun 在数字家电方面的业绩并不很突出。但是,绿色小组的一个副产品,
高斯林发明的 Java 程序设计语言,却深深改变了这个世界……
绿色小组成立之初只有 4 个人。他们有一个很模糊的想法,甚至连最终的目标
产品是硬件还是软件也不知道。但是他们知道必须发明一些技术或者产品让
Sun 公司赶上信息领域的下一波大浪潮。
当时人类已经发明了很多种消费类电子产品,包括微机、手机、手持电脑、录
相机、电视机、洗衣机、冰箱、微波炉等等。他们认为要将这些设备数字化并
用网络互联讲是今后的方向(物联网?)。绿色小组将这个需求归结成两个产
品原型目标,即发明一种手持遥控设备来实现所有家电设备的互联(硬件);
发明一种程序设计语言,用它来编写能在这些设备上运行的小巧程序(软
件)。
高斯林给当时设计了一种运行在虚拟机中的面向对象的语言,起名叫 Oak(橡
树,高斯林窗外的一颗树)。
但是申请注册上商标时,发现 Oak 被其他公司注册了,不得不重新起名。当时
他们正在咖啡馆里喝着印尼爪哇(Java)岛出产的咖啡,有一个人灵机一动说就
叫 Java 怎么样,并得到了其他人的赞赏,于是他们就将这种程序语言命名为
Java。
绿色小组的成员每周工作七天,平均每天工作 12 到 14 个小时,后期工程师们
几乎住在实验室,没日没夜地干,只是每隔几天回家洗澡换衣服。三年以后他
们制作出了第一台样机,尽管实现了基本功能,但造价在一万美元以上,尽管
市场前景不明朗,技术上也还有很多问题,Sun 公司的管理层还是用奖金和股
权大大奖励了绿色小组的成员,并加大投入,努力实现产品化。
但是公司内外对其产品都不看好,市场也并不认可。绿色小组的成员在沮丧和
失望中度过了整个 1993 年和 1994 年。在士气最低落的时候,大部分成员都离
开了绿色小组,有的甚至离开了 Sin 公司。留下来的人也失去了工作热情。不
少人每天早上 11 点钟上班,下午 4 点钟就离开了。有些人一天到晚只是玩游
戏,还有的人则念学术论文。
在黑暗的日子里他们都期待着上天能眷顾他们这些苦命的人,期待着某种奇迹
出现……
当时互联网已经出现了 20 年左右,但 Ftp 和 Telnet 的方式无法在科研人员之外
的人群普及和应用,1994 年一个名叫网景的公司推出了一种叫做 Netscape 浏览
器的东西,加速了互联网的普及;高斯林他们意识到互联网是一个今后的发展
方向。开始制作针对互联网的 Java 应用,希望会有所斩获。
1995 年初的一天,高斯林和以往一样不停地参加各种会议以期让人们认可他们
的产品,这次他参加的是“硅谷-好莱坞”互联网及娱乐业的研讨会。演讲刚开始
是,大家对高斯林的讲解意兴阑珊,直到他将鼠标移向一个分子模型,这个分
子模型动起来了,而且会随着鼠标的移动上下翻滚!场面立刻发生了逆转,会
场一下子沸腾起来,人们惊叹不已、啧啧称奇。刹那间,人们对互联网的潜力
进行了一番新的审视!也就在刹那间,这一批有影响力的人成了高斯林最忠实
也是最有力的说客。
Java 活下来了,并且成了互联网时代最强势、最具代表性的语言。
2、微软和 Sun 针对 Java 的世纪之战
Java 特点是,一次编写,到处运行,可以适应于任何平台。而互联网就是这样
一个可以是任意平台的超大网络。所以 Java 借着互联网快速发展的东风,扶摇
而上,迅速穿红。
面对 Java 金矿,大家都跃跃欲试…… 这其中要数微软和 Sun 之间的斗争最为
典型:
1996 年 9 月的某一天,微软浏览器部门的主管艾达姆·波茨瓦斯几经考量之后,
提笔给时任微软 CEO 的比尔·盖茨写了一邮件,他非常恳切地提醒比尔·盖茨注
意一个正在形成的威胁。他写到:"必须意识到 Java 不仅仅是一种语言,如果
它只是一种语言,我们愿意并且能够容易地为它建立最佳的表现形式,事情可
以圆满解决了。但是事实上,Java 绝不仅仅是一种语言,它是 COM 的替代
者!" 而 COM 恰恰是 Windows 的编程模型。而 Java 编程很多时候比 C++编程
要容易的多,更致命的是他是跨平台的。波茨瓦斯也提出了对抗 Java 的方法,
就是悄悄地为 Java 提供某些扩展,使得用 Java 编写的程序能够在 Windows 中
工作得更好,但是在其它平台上却不能运行。
盖茨显然被这封信吓坏了,他第二天就回信了:"这可把我吓坏了。我不清楚微
软的操作系统要为 Java 的客户应用程序代码提供什么样的东西,而这些东西将
足够让它来取代我们的市场地位。了解这一点非常重要,是应该最优先考虑的
事情。"(没想到,这封信成为几年后司法部针对微软的反托拉斯案的呈堂证
供。)
自此微软和 Sun 针对 Java 的世纪之战拉开了……
第一回合:微软推出 J++语言,并推出了 Visual j++集成编程工具,对 Java 进行
了大量的修改。1997 年,Sun 公司以歧视使用 Java 软件,旨在维持其视窗操作
系统的垄断地位,违反反垄断法为由起诉微软,2001 年 1 月,SUN 胜诉,根据
双方达成的和解协议,微软不得对 Windows 操作系统中包含的 Java 语言作任
何改动,并获赔 2000 万美元。
第二回合:2001 年年底,微软在推出新版操作系统 Windows XP 和新版 IE 时,
故意不安装 Java 软件,并且推出自己仿造 Java 创造的语言 C#和.net 框架。
2002 年的 3 月 8 日,SUN 公司向美国加州地区法庭提出起诉,称此举造成它直
接经济损失高达 10 亿美元。2002 年 6 月,微软干脆称从 2004 年起,因为安全
原因微软的 Windows 操作系统将不再支持 Java 语言。
就在双方口水战日益升级之际,迎来了有关 SUN 诉微软案的第一次听证会。
SUN 起诉微软的听证会被安排在 2002 年 12 月的第一周,当时,在巴尔的摩市
下了近三年来最大的一场雪。整个城市几乎都停止运转。但是弗雷德里克·摩兹
法官坚持要求开庭,并且要求几十位与案件有关的律师到场出席;据审判时一
位目击者说,为了保证早上能够到庭,法官他自己在会议室中睡了一晚。
几周后,也就是 2002 年 12 月 23 日,摩兹法官发布了那份长达 42 页的判决
书,他裁定微软公司必须在其 Windows 操作系统和 IE 中发布与其竞争的 Java
编程语言。摩兹法官的意见是:在微软的垄断下,Java 拥有一个并不健全的市
场,比如说,大部分 PC 上所安装的 Java 软件要么就是旧版本,要么就是仅适
用于 Windows 的版本,这使得其它软件开发者对 Java 平台产生了厌恶的情
绪,这些都是因为微软反竞争行为的结果,看来微软已经利用 Windows 的垄断
地位来破坏 SUN 对 Java 的销售渠道。树立市场正义的唯一方法是纠正微软的
所作所为,"阻止微软从它过去的错误中获得将来的利益!"
针尖对麦芒的斗争一直在继续……
和解:2004 年 4 月 2 日,两者达成和解协议微软将向 Sun 赔付 20 亿美元以消
解旧怨,他们开始共同应对来自 IBM 和 Linux 的挑战。
从上面的故事中可能有同学认为 Sun 是正义的,微软是非正义的,是这样的
吗?
我们可以再看看下面的故事……
3、Oracle 和 Google 针对 Java 的再次对决
事实上,不止微软一家意识到 Java 是座金矿。Oracle 是第二家从 Sun 手中购买
Java 许可证的公司,而 IBM 甚至比 Sun 更早的意识到 Java 在企业级应用方面
的价值,在对 Java 支持上投入了巨大的精力,我们平时编写 Java 程序使用的
Eclipse IDE 集成编程环境,就是 IBM 主导开发、用以争夺 Java 领导权的重大
举措(有空可以细讲 IBM 和 Sun 的恩恩怨怨,从 Eclipse 这个名字就可以看到
其中的火药味)。
“和谐”的阴影:
IBM 和 Intel 为了争夺 Java 的话语权,向 Sun 发出了新一轮的挑战,2005 年他
们支持 Apache 开源社区发起了一个叫做 Harmony 的项目,Harmony 有个有趣
的中文意思–和谐。
Harmony 的目的有两个:
1、在 Apache Licence v2 的许可之下,独立的(不阅读 Sun JDK 的源代码,
仅仅根据 Java SE 5 specification)开发一个与 Java SE 兼容的 JDK。
2、通过 Harmony 的开发社区,创建一个模块化的架构(包括虚拟机和类
库)。该架构允许所有的独立开发项目可以共享运行时组件。
简单的说,Harmony 就是让其他公司可以使用它来绕开 SUN JDK 的商业限
制。Sun 为了保持自己对 Java 的主导权,坚决不给 Harmony 颁发 JDK 认证。
这让开源社区 Apache 和 SUN 发生了决裂……
“太阳”的终结:
Sun 创造了 Sparc、Solaris、Java 等伟大的产品,Sun 曾经风光无限,市值估价
2000 亿美金。Sun 预测到网络就是计算机,可是真正的网络时代到来时,它却
没有真正调整过来,不断的亏损和决策失误让它举步维艰。
2009 年 4 月 Oracle 宣布以 74 亿美金收购 Sun,2010 年 1 月欧盟决定无条件同
意这项收购,一个伟大公司就这样走到生命的尽头。
Java 的创造者 James Gosling 在自己的博客贴出了一幅画,并写了一句话 So
long, old friend… (再见了,老朋友)
(墓前站的是 Linux 的吉祥物 Tux 塔克斯和 Java 的吉祥物 Duke 杜克)
虽然 Sun 已经离去,Java 还会继续前行……
“机器人”的小伎俩:
1998 年 Sun 的共同创始人 Andy Bechtolsheim 给了斯坦福大学的两个学生一笔
10 万美金的天使投资,他们成立了一个小公司名字叫——Google。
2007 年 11 月 5 日,已经成长为互联网领域内巨人的 Google 发布了一个叫做
Android 的手机操作系统平台。Android 采用我们上面提到的 Harmony 来作为
JDK(Java 开发工具包)的替代品,使用 Dalivk 虚拟机来替代 JVM(Java 虚拟
机),它这次从头至尾都没有说它用的是 Java,可是所有的 Java 程序员都懂这
就是 Java ……
Oracle 对 Google 的诉讼:
2010 年 8 月 12 日,Java 专利权的新主人 Oracle 指控 Google 在 Android 开发中
“故意,直接并反复侵犯 Oracle 的 Java 相关的知识产权”,新一轮的斗争正在继
续。
三、Java 的版本演进
1995 年 5 月 23
日
Java 语言发布
1996 年 1 月, 诞生,
4 月,10 个最主要的操作系统供应商申明将在其产品中嵌入 JAVA 技术,
9 月,约 万个网页应用了 JAVA 技术来制作
1997 年 2 月 18
日
发布
1998 年 12 月 4
日
(Java2)发布
随后,SUN 公司发布 Java 的三个版本:标准版(J2SE)、企业版
(J2EE)和微型版(J2ME),为 Java 今后的方向指明了道路。
2000 年 5 月 8 日 发布
2000 年 5 月 29
日
发布
2004 年 9 月 30
日
发布,成为 Java 语言发展史上的又一里程碑。
为了表示该版本的重要性, 更名为 Java SE
2005 年 6 月 Java SE 发布。J2EE 更名为 Java EE,J2SE 更名为 Java SE,J2ME 更名
为 Java ME
四、Java JDK 安装和编程环境搭建
接下来我们就开始学习这个改变了世界的编程语言。我们学打扑克牌需要先买
一副扑克牌,然后打开牌盒先认认牌。学习一门语言的第一步就是搭建它的编
程环境,然后写一个简单的 Java 程序的例子,简单了解一下。最后看看别人都
用这个语言都弄出来些什么好玩的程序。
1、JDK 的下载(Windows 环境):
JDK 的意思是 Java Development Kit ,直译就是 Java 开发套件。JDK 是我们学
习 Java 必备工具。
我们可以从 Oracle 的网站可以下载最新版的 JDK。
a、访问 点
击 Download JDK 按钮
b、在出来的页面中点击 Download 按钮
c、在下面的页面中选择 Platform 为 Windows,然后点击 Continue 按钮
安装过程我就不演示了,只需要建议的是,可以把 JDK 安装在类似
“C:\javasoft” 的目录中,而不是 c:\program fileI 下。
d、在接下来的页面里点击 带下划线的下载链接即可
2、JDK 的安装:
a、下面介绍一下安装步骤,双击下载回来的 ,点击
下一步
b、更改安装位置为 c:\javasoft\_21
c、稍等片刻
d、在选择 JRE(Java Runtime Environment Java 运行时环境)安装目录步骤时可以
直接点下一步。
e、安装 jre 的过程中竟然有个 OOo(OpenOfficeOrganization)的广告
f、再稍等一下就可以看到成功安装的提示
g、最后打开命令行窗口敲一个命令检查是否运行正常 java –version ,这是个
查看 Java 版本号的命令,我们这次安装的是 JDK 的 第 21 个更新包,所以
看到的反馈应该是这样:
好吧,恭喜你完成了最重要的一步 ^_^ 。
3、环境变量
环境变量一般是指在操作系统中用来指定操作系统运行环境的一些参数,比如
临时文件夹位置和系统文件夹位置等。Java 的运行环境需要配置如下几个参
数,JAVA_HOME,classpath 和 Path,下面简单叙述一下:
在“我的电脑”上点右键,在随后的菜单中选属性,可以看到系统属性选项卡,
右下角就是“环境变量”按钮。
点击“新建…”:变量名写 JAVA_HOME,变量值写 c:\javasoft\_21,这样
就配置好了 JAVA_HOME,这个变量时其他 JAVA 程序约定俗称的寻找 Java 安
装目录的依据。
找到变量 Path,点击“编辑…”,在最前端加入“%JAVA_HOME%\bin;” 这样, 我们
就可以在任何路径下使用 java 和 javac 命令了。
找到 classpath,如果没有则新建一个。变量值为:
“.;%JAVA_HOME%\lib\;%JAVA_HOME%\lib\” ,留意一下最前面
的”.”,它代表当前目录。 classpath 的作用是让 java 虚拟机能够找到 class 文件的
位置。
配置完成后需要检测一下,运行 cmd,敲命令 javac –version , 如果不报错,就
说明配置成功了。
4、创建、编译和运行一个 Java 文件
a、我们建立一个目录,今后所有的实验都将在这里进行 “c:\workspace\java”
b、在 java 目录下建立今天课程的目录 lesson01,记住目录名小写
c、创建 :建立一个名字叫 的文件,右键用
Editplus 打开(不会使用 EditPlus 的请自行搜索和学习使用,很简单不用怕)。
在文件中写入:
view source
print?
1class Lesson01{
2}
上面的代码你可以理解成:有个东西叫 Lesson01
d、编译 : 在命令行窗口(不了解命令行窗口的同学可以自行搜
索并学习)中敲入如下命令
javac
如果成功的话会没有任何提示,并且会出现一个名字叫 的文
件,生成 class 的过程就是编译的过程。
e、运行 :在命令行窗口中敲入如下命令,
view source
print?
1 java Lesson01
提示如下图所示:意思是“在主线程中产生了一个叫做没有 main 这个方法的错
误”
我们下面就来尝试修正这个错误,重新编辑 ,内容如下:
view source
print?
1class Lesson01{
2 public static void main(String[] args){
3 ("欢迎进入 Java 的世界!");
4 }
5}
再次编译、运行,这次看到将是:
恭喜你成功完成了一个 Java 程序从创建、编译到运行的全过程,Java 的世界就
此向你展开。
六、Java 虚拟机和 Java 程序运行原理
我们在命令行中运行一下 java –version ,看看结果:
注意它的反馈信息实际上有 3 行,分别是 java sdk 的版本,JRE 的版本和 JVM
的版本, 而 Java HotSpot Client Virtual Machine 就是 Sun 公司开发的 Java 虚拟
机。
那么什么是 Java 虚拟机?
Java 虚拟机(JVM)是可运行 Java 代码的假想计算机。只要根据 JVM 规格描述将
解释器移植到特定的计算机上,就能保证经过编译的任何 Java 代码能够在该系
统上运行。
Java 程序的运行过程大致就是先吧 Java 源文件(后缀是.java 的文件)编译成
(.class)文件,然后再运行 class 文件。
七、Java 程序演示(Demo)
Java 可以做些什么,同学们可以先到 java 安装目录的 demo 子目录
(C:\javasoft\_21\demo)中看一看,这就是个本节课的作业,大家去寻
宝吧。
最后送大家一架钢琴, 这个小程序是我从 Mac OS 自带的
JDK 包目录里发现的,双击即可运行,鼠标放上去就会有音乐飘出,尽情的演
奏吧^_^
这个文件我打包源文件里了,不用向我单独要。
本讲就到这里,Take your time and enjoy it 。