1.Java的起源
Java源自Sun公司的一个叫Green的项目,其原先的目的是为家用电子消费产品开发一个分布式代码系统,这样就可以将通信和控制信息发给电冰箱、电视机、烤面包机等家用电器,对它们进行控制和信息交流。最初Green项目的工程师们准备采用C++,但C++比较复杂,最后经过裁剪、优化和创新,1990年,由Sun公司的James Gosling(詹姆斯·高斯林)领导的小组基于C++开发了一种与平台无关的新语言Oak(Java的前身)。Oak的取名源于Gosling办公室外有一棵枝繁叶茂的橡树,这在硅谷是一种很常见的树。
1995年1月,Oak被改名为Java,这是因为Oak是一家显卡制造商已注册的商标。Oak若想发展壮大,法律层面上的改名势在必行。Java是印度尼西亚“爪哇(注:Java的音译)”岛的英文名称,该岛因盛产咖啡而闻名。这就是Java的官方商标是一杯浓郁的咖啡的原因。Sun随后开发了HotJava浏览器,得到了Sun公司时任首席执行官Scott McNealy的支持,触发了Java进军Internet。
2.Java的简史
从Java的第一个版本诞生到现在已经有二十余年的时间,白驹过隙,沧海桑田,转眼已过了四分之一个世纪,我们看到JDK的版本已经发展到了JDK 13。这二十多年里诞生过无数与Java相关的产品、技术与标准。现在让我们走入时间隧道,从孕育Java语言的时代开始,再来回顾一下Java的发展轨迹和历史变迁。
3.Java的基本思想
在过去,大多数程序在移植到不同的操作系统平台(如UNIX、Linux和Windows等)上时,程序员通常不得不重新调试与编译这些程序,有时甚至需要重写。Java最大的优点就是在设计之初就秉承了“一次编写,到处运行”思想(Write Once, RunEverywhere,简称WORE,有时也写成“WriteOnce, Run Anywhere”,简称WORA),它是Sun 公司为宣传Java语言的跨平台特性而提出的口号。
Java的跨平台性是指在一种平台下用Java语言编写的程序可以在编译后不用经过任何更改,就能在其他平台上运行。比如,一个在Windows下开发出来的程序,在运行时可以无缝地部署到Linux、UNIX或Mac OS(苹果操作系统)环境之下。反之亦然,在Linux下开发的Java程序,同样可在Windows等其他平台上运行。Java是如何实现跨平台性的呢?我们可用下面的图来比拟说明。
比如说,中国人(一个平台)说的一句问候的话语:“你好,世界!”,美国人、法国人、德国人及日本人(其他平台)都能理解中国人的“问候”。之所以能这样,这得益于英文、法语、德语及日语翻译们的翻译。Java语言聪明之处在于,它用一个名为Java虚拟机(JVM—Java VirtualMachine)的机制屏蔽了这些“翻译”的细节。各国人尽管尽情地表达(编写Java代码),JVM在背后默默地帮他们干了“翻译沟通”的活。正是因为有JVM的存在,Java程序员才可以做到“一次编写,到处运行”——这正是Java的灵魂所在。
4.Java的技术体系
仅从传统意义上来看, Java技术体系包括以下几个组成部分:
●Java编程语言
●class文件格式
●Java API类库
●开源社区及商业机构的第三方Java类库
●各种平台上的Java虚拟机
什么是JDK?什么又是JRE?两者有什么区别与联系?
JDK:我们把Java编程语言、Java API类库和Java虚拟机这三部分统称为JDK(Java DevelopmentKit,Java 开发工具包)(注:JDK包括JRE,Java基本类库,Java开发工具,如编辑器,调试器等)。JDK是用于支持Java程序开发的最小环境。有时为了方便起见,会以JDK来代替整个Java技术体系。
JRE: 我们把Java API类库中的Java SE API子集和Java虚拟机这两部分统称为JRE(Java RuntimeEnvironment,Java运行时环境),JRE是支持Java程序运行的标准环境。
二者区别与联系:在Java技术体系上, JDK范围涵盖JRE,JRE是JDK的子集。如果仅仅是运行Java程序,用户计算机只需配置JRE环境;如果用户还想自己开发Java程序,则需要用户安装配置JDK环境。
按照Java技术关注的重点业务领域来划分,Java技术体系可以分为4个平台,如下图所示。
(1)Java SE(Standard Edition,标准版):支持面向桌面级应用(如Windows下的应用程序)的Java平台,提供了完整的Java核心API,这个版本2005年以前称为J2SE。
(2) Java EE(Enterprise Edition,企业版):以Java SE为基础,往外延伸,增加了许多支持企业内部使用的扩充类,支持使用多层架构的企业应用(如ERP—企业资源计划系统、CRM—客户关系管理系统的应用)的Java平台,除了提供Java SEAPI外,还对其做了大量的扩充并提供了相关的部署支持。这个版本2005年以前称为J2EE。
(3) Java ME(Micro Edition,微型版):JavaME同样以Java SE为基础,但向内精简。它所支持的只有核心类的子集合,它支持Java程序运行在移动终端(手机、PDA—掌上电脑)上的平台,加入了针对移动终端的支持。这个版本2005年以前称为J2ME。Java的微型版主要是进行嵌入式开发,目前渐渐被Android开发所替代。
(4)Java Card(智能卡版):由于服务对象定位更加明确化,Java Card版本比Java ME(微型版)更加精简。它支持一些Java小程序(Applets)运行在小内存设备(如容量小于64K的智能卡)的平台上。
但是,不管Java的技术平台如何划分,都是以JavaSE为核心的,所以掌握Java SE最为重要,这也是本书的主要讲解范围。如果要想进行Java EE的开发,Java SE是其中必要的组成部分,这也就是为什么在学习Java EE之前要一定要有扎实的Java SE基础了。
5.java的学习路线
Java学习的路线在整体上需遵循:初级阶段-中级阶段-高级阶段。不建议一开始就“越级”学习,需知“欲速则不达”。在这三个阶段各自内部的知识点,没有必然的先后次序,可根据自己的实际情况“有的放矢”地学习。不管处于哪个学习阶段,都要重视Java的实战练习。
6.Java学习的经验
Java是一门面向对象编程(Object-orientedprogramming,简称OOP)语言,在学习的过程中一定要多从面向对象的角度去考虑问题。在初级入门阶段,读者要以上机实训为主,多动手,增强自己对Java代码的感性认识。感性认识积累多了,再配合书籍学好理论,这才能有高层次的理性认知。
学习任何编程语言,亲自动手编程实践是必不可少的。在阅读完每一个章节后,尽量将书上的实例代码和课后习题亲自编写一遍。在编写代码的过程中,一定要理清代码思路,发现问题,解决问题。对复杂的代码要反复揣摩,直至烂熟于心。
有些源代码已随书配备,有些网站上也提供现成的,但作为初学者,务必不能偷懒,直接复制,拿来就用。虽然亲自编写代码比较麻烦,也容易出错,但请记住:纠正这些错误正是非常好的学习机会!
从一个Java的初学者,升级为一个编程高手,没有捷径。其必经的一个成长路线正如下图所示:(1)编写代码 →(2)犯错(发现问题)→(3)纠错(解决问题)→(4)自我提升……积累了一定的感性认识后,才会有质的突变,提升至新的境界。总之,想成为一个高水平的Java程序员,一定要多动手练习,多思考。
阅读Java书籍也要掌握一定的技巧。建议读者在阅读时,快速看完某一章的全部内容,在第一遍阅读期间,可允许在一定程度上“不求甚解”。当读者掌握了Java的基础语法,初步理解了面向对象的编程主要特征后,这时应该重新看书——“温故而知新”,将书中的面向对象内容从头到尾再看一遍,进行知识的归类总结。建议在学习过程中记录心得和感悟,把自己对某一知识点的理解记录下来。在书本空白处,甚至可在个人的博客里纪录下自己的感悟,这样一来可加深自己理解,二来也可服务在此知识点困惑的其他读者,一举两得。
学习要循序渐进。在学习的初期,读者应从基础语法学起,不要拘泥于细节,耐得住性子,把书读完,先将容易理解的部分快速学会,再去研究晦涩的部分。当一个知识点实在搞不明白的时候,可以先把它记下来。先从宏观上对一个知识点有个整体的把握,然后回过头来再研究细节。一开始“有所舍弃”,之后“重头再来”,这会提高你的学习效率,让你养成一个良好的学习习惯。
“罗马不是一日建成的(Rome was not built ina day)”,编程高手也不是一日能成就的。《荀子·劝学篇》亦有云:“骐骥一跃,不能十步;驽马十驾,功在不舍。学习Java的途中没有捷径,需要进行不断地理论学习、反复地实战练习才能将代码运用灵活,就好像练习武功一样,只有重视基本功,并持之以恒,才能让自己的动作收放自如,招式炉火纯青。加油吧!