本文是Java基础课程的第一课。主要介绍Java的由来、发展历史及应用领域等,另外还会介绍Java开发环境的搭建,并且完成HelloWorld小程序
Java是一门面向对象编程语言。它不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言功能强大并且简单易用。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。
Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点。Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等。
Java由时任Sun公司的James Gosling等人于20世纪90年代初开发,最初被命名为Oak,随着互联网的兴起,Sun公司看到了Oak在计算机网络上的广阔应用前景,于是改造了Oak,于1995年5月23日以Java的名称正式发布了。后逐渐成为业界最为重要的编程语言之一。
Java之父,James Gosling:
Sun公司在1991年成立了一个称为Green的项目小组,James Gosling和其他几个工程师一起组成的工作小组在加利福尼亚州门洛帕克市沙丘路的一个小工作室里面研究开发新技术,专攻计算机在家电产品上的嵌入式应用。由于C++所具有的优势,该项目组的研究人员首先考虑采用C++来编写程序。但对于硬件资源极其匮乏的单片式系统来说,C++程序过于复杂和庞大。另外由于消费电子产品所采用的嵌入式处理器芯片的种类繁杂,如何让编写的程序跨平台运行也是个难题。为了解决困难,他们首先着眼于语言的开发,根据嵌入式软件的要求,对C++进行了改造,去除了留在C++的一些不太实用及影响安全的成分,并结合嵌入式系统的实时性要求,开发了一种称为Oak的面向对象语言。
起初的Oak语言,整个系统除了比C++更加简单之外,没有什么大的区别。市场并未对此产生极大的热情。所以Oak语言也渐渐因为缺少支持被搁置了下来。
1995年,互联网的蓬勃发展给了Oak机会。业界为了使死板、单调的静态网页能够“灵活”起来,急需一种软件技术来开发一种程序,这种程序可以通过网络传播并且能够跨平台运行。Sun公司想起了那个被搁置起来很久的Oak,由于它是按照嵌入式系统硬件平台体系结构进行编写的,所以非常小,特别适用于网络上的传输系统,而Oak也是一种精简的语言,程序非常小,适合在网络上传输。Sun公司首先推出了可以嵌入网页并且可以随同网页在网络上传输的Applet。并将Oak更名为Java。5月23日,Sun公司在Sun world会议上正式发布Java和HotJava浏览器。
下面记录了Java发展历史中的一些主要事件:
时间 | 事件 |
---|---|
1991年1月 | Sun公司成立了Green项目小组,专攻智能家电的嵌入式控制系统 |
1991年2月 | Green项目小组放弃C++,开发新语言,命名为“Oak” |
1991年6月 | James Gosling开发了Oak的解释器。 |
1992年1月 | Green项目小组完成了Green操作系统、Oak语言、类库等开发 |
1994年7月 | 第一个Java语言的Web浏览器WebRunner(后来改名为HotJava),Oak更名为Java |
1995年5月23日 | Java语言正式发布 |
1996年1月 | Sun公司发布了Java的第一个开发工具包:JDK-1.0 |
1996年4月 | 10个最主要的操作系统供应商申明将在其产品中嵌入Java技术 |
1996年9月 | 约8.3万个网页应用了Java技术来制作 |
1997年2月18日 | JDK1.1发布 |
1997年4月2日 | JavaOne会议召开,参与者逾一万人,创当时全球同类会议纪录 |
1998年12月8日 | Java 2企业平台J2EE发布 |
1999年6月 | SUN公司发布Java三个版本:标准版(J2SE)、企业版(J2EE)和微型版(J2ME) |
2000年5月8日 | JDK1.3发布 |
2000年5月29日 | JDK1.4发布 |
2001年9月24日 | J2EE1.3发布 |
2002年2月26日 | J2SE1.4发布,此后Java的计算能力有了大幅提升 |
2004年9月30日 | J2SE1.5发布,成为Java语言发展史上的又一里程碑。 为了表示该版本的重要性,J2SE1.5更名为Java SE 5.0 |
2005年6月 | JavaOne大会召开,SUN公司发布Java SE6。 此时,Java的各种版本已经更名,以取消其中的数字“2”: J2EE更名为Java EE, J2SE更名为Java SE, J2ME更名为Java ME |
2009年04月20日 | Oracle(甲骨文)74亿美元收购Sun。取得java的版权 |
2011年7月28日 | 甲骨文发布 Java7.0 的正式版 |
2014年3月18日 | 甲骨文发布 Java SE 8 |
2017年9月21日 | 甲骨文发布 Java SE 9 |
2018年3月21日 | 甲骨文发布 Java SE 10 |
2018年9月25日 | Java SE 11 发布 |
2019年3月20日 | Java SE 12 发布 |
许多的 Android应用都是Java程序员开发者开发。虽然 Android运用了不同的JVM以及不同的封装方式,但是代码还是用Java语言所编写。相当一部分的手机中都支持Java游戏,这就使很多非编程人员都认识了Java。
Java在金融服务业的应用非常广泛,很多第三方交易系统、银行、金融机构都选择用Java开发,因为相对而言,Java较安全。大型跨国投资银行用Java来编写前台和后台的电子交易系统,结算和确认系统,数据处理项目以及其他项目。大多数情况下,Java被用在服务器端开发,但多数没有任何前端,它们通常是从一个服务器(上一级)接收数据,处理后发向另一个处理系统(下一级处理)。
Java 在电子商务领域以及网站开发领域占据了一定的席位。开发人员可以运用许多不同的框架来创建web项目,SpringMVC、Struts2.0等。即使是简单的servlet,jsp和以struts为基础的网站在政府项目中也经常被用到。例如医疗救护、保险、教育、国防以及其他的不同部门网站都是以Java为基础来开发的。
Java在嵌入式领域发展空间很大。在这个平台上,只需130KB就能够使用Java技术(在智能卡或者传感器上)。
Hadoop以及其他大数据处理技术很多都是用Java,例如Apache的基于Java的HBase和Accumulo以及 ElasticSearchas。
Java平台提高了这个平台的特性和即时编译,他同时也能够像 C++ 一样传递数据。正是由于这个原因,Java成为程序员编写交易平台的语言,因为虽然性能不比C++,但开发人员可以避开安全性,可移植性和可维护性等问题。
Java在科学应用中是很好选择,包括自然语言处理。最主要的原因是因为Java比C++或者其他语言相对其安全性、便携性、可维护性以及其他高级语言的并发性更好。
JDK(Java Development Kit)称为Java开发包,是一个编写Java应用程序的程序开发环境。JDK是整个Java的核心,包括了Java运行环境(Java Runtime Envirnment),一些Java工具和Java的核心类库(Java API)。可以把Java API类库中的Java SE API子集和Java虚拟机这两部分统称为JRE(JAVA Runtime Environment),JRE是支持Java程序运行的标准环境。
JRE是个运行环境,JDK是个开发环境。因此写Java程序的时候需要JDK,而运行Java程序的时候就需要JRE。而JDK里面已经包含了JRE,因此只要安装了JDK,就可以编辑Java程序,也可以正常运行Java程序。
JVM是Java Virtual Machine(Java虚拟机)的缩写。JVM是java的核心和基础,是Java编译器和OS平台之间的虚拟处理器,主要用于实现Java跨平台。
首先,前往下载地址,下载地址,截至2019年5月28日,页面如下图:
截至2019年5月28日,Java SE 12 已经发布,因此可以看到页面显著位置为Java SE 12 的下载按钮。如果要下载之前的版本,可以向下搜索,本文及后续的章节将主要以Java SE 8为主,向下搜索该下载页面,如图:
点击“下载”按钮,跳转到具体的下载页面,并找到下载位置,本文以 Window 32位操作系统、JDK 8u212为例,如图:
之后,如果没有登录的话,会跳转到Oracle的登录界面,输入已注册的Oracle账号和密码,登录成功后会自动开始下载,下载结束后得到Window 32位操作系统下JDK 8u212的安装文件,如图:
运行下载好的JDK 8u212安装程序,如下图:
点击“下一步”,等待一会后出现定制安装界面,如下图:
可以选择要安装的可选功能,修改默认的安装目录,如果都不需要修改的话,可以直接进入下一步,点击“下一步”按钮后,便来到安装进度界面,如图:
结束后会来到JRE的安装界面,如图:
可以修改JRE的安装目录,如果不需要修改的话,直接点击“下一步”,进入安装进度界面,如图:
安装进度结束后,可以看到安装成功界面:
此时,本次安装已经成功完成,点击关闭即可。可以查看JDK安装目录(C:\Program Files\Java\jdk1.8.0_212
)下的安装结果,如图:
其中,bin
和lib
目录为最主要的两个目录,bin
目录下存放JDK命令,lib
目录下存放系统类库。
安装完成后,需要设置环境变量,鼠标右键单击"我的电脑",点击"属性",选择"高级系统设置",如图:
选择"高级"选项卡,点击"环境变量",如图:
会出现如下图所示的页面:
在“系统变量”或”用户变量”中设置3项环境变量,JAVA_HOME
、PATH
、CLASSPATH
,若已存在则点击“编辑”,不存在则点击“新建”,具体设置方法在下文进行详细说明。
JAVA_HOME
C:\Program Files\Java\jdk1.8.0_212
(需要设置JDK安装根目录,值可能因人而异)JAVA_HOME
,一是为了方便引用,比如,JDK安装在C:\Program Files\Java\jdk1.8.0_212
目录里,则设置JAVA_HOME
为该目录路径,那么以后要使用这个路径的时候,只需输入%JAVA_HOME%
即可,避免每次引用都输入很长的路径串;二则是归一原则,当JDK路径改变的时候,仅需更改JAVA_HOME
的变量值即可,否则,就要更改任何用绝对路径引用JDK目录的文档,要是万一没有改全,某个程序找不到JDK,后果便是该软件无法正常运行!三则是第三方软件会引用约定好的 JAVA_HOME
变量,不然,也无法正常使用该软件 CLASSPATH
.;%JAVA_HOME%\lib
CLASSPATH
环境变量的作用是,当开发者在Java程序开发过程中需要引用别人写好的类时,告诉 Java 解释器去哪里找这个类。通常,JDK 为开发者提供了丰富的类包,都位于 C:\Program Files\Java\jdk1.8.0_141\lib
目录下,所以通常会将这个目录加到的 CLASSPATH
中;那 CLASSPATH
最前面的“.;”
是做什么用的呢?“.”
代表当前目录,所以配置“.;”
,是为了让 Java 解释器去当前目录下找开发者自己提供的类Path
%JAVA_HOME%\bin
Path
变量使得开发者能够在系统中的任何地方运行Java应用程序,比如 javac
、java
、javah
等等,这就要求系统能够找到开发者安装的这些Java应用程序,假设开发者的JDK安装在 C:\Program Files\Java\jdk1.8.0_212\
目录下,那么在 C:\Program Files\Java\jdk1.8.0_212\bin
目录下就是常用的 Java 应用程序,故需要把 C:\Program Files\Java\jdk1.8.0_212\bin
这个目录添加到 Path
环境变量中最后,测试环境变量是否配置正常,步骤如下:
安装JDK并配置好环境变量后就可以进行Java编程了,下面编写一个入门级别的Java程序来体验Java开发的神奇之旅。
第一步,创建Java源程序文件,Java源文件是以.java
结尾的文本文件,是开发人员创建和编写的。在C盘根目录下创建一个目录,命名为java
,在c:\java
目录中新建一个记事本文件,将该文件命名为HelloWorldApplication.java
。在HelloWorldApplication.java
文件中输入下面的代码:
public class HelloWorldApplication {
public static void main(String[] args) {
System.out.println("Hello World");
}
}
HelloWorldApplication
,因此,HelloWorldApplication.java
文件也被称为一个类文件。类文件的名称必须和类文件中由public
修饰的类名相同。HelloWorldApplication
类中定义了一个方法,方法名称叫main
,Java程序是从main
方法开始运行的。main
方法中的代码向控制台输出Hello World
字符串。第二步,将Java源程序文件编译为字节码文件。字节码文件是以.class
结尾的文件,字节码文件一般是通过Javac
编译器编译出来的。使用win + r打开命令行界面,前往c:\java
目录,使用javac
命令对源文件HelloWorldApplication.java
进行编译,如下:
编译完成后c:\java
目录下会出现HelloWorldApplication.class
字节码文件,如下:
说明:
第三步,运行字节码文件。仍然在命令行界面继续使用java
命令,运行刚才编译生成的HelloWorldApplication.class
字节码文件,Hello World
字符串将会被打印出来。如下:
Java是跨平台的语言,平台是指操作系统和CPU,每个平台能够运行与该平台匹配的机器码。Java跨平台就是让所有的平台都能运行Java代码。Java做到了write once, run anyWhere,一次编写到处运行。实现这一点的核心便是JVM(Java Virtual Machine),即Java虚拟机。
回顾上例中的HelloWorldApplication
小程序,经历的主要过程有:
在上述过程中,“运行”这一步骤并不是直接在操作系统上进行,事实上,所有的Java源程序文件都可以编译成字节码文件,字节码文件可以执行在任何一个JVM上,JVM可以运行在专用的平台上,例如JVM for DOS,JVM for windows,JVM for Unix等。所有的JVM都可以将字节码文件转换成平台对应的机器码,如下图所示:
进一步理解在HelloWorldApplication
小程序中经历的步骤,如下:
说明: