Java是一门面向对象编程语言。它不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言功能强大并且简单易用。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。
Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点。Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等。
Java由时任Sun公司的James Gosling等人于20世纪90年代初开发,最初被命名为Oak,随着互联网的兴起,Sun公司看到了Oak在计算机网络上的广阔应用前景,于是改造了Oak,于1995年5月23日以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跨平台。
首先前往下载地址[jdk下载地址],截止2020.3.6(https://www.oracle.com/java/technologies/javase-downloads.html)
下载适合于自己电脑版本的JDK。
按照提示将JDK安装到自己盘符下。
注:其中,bin
和lib
目录为最主要的两个目录,bin
目录下存放JDK命令,lib
目录下存放系统类库。
安装完成后,需要设置环境变量,鼠标右键单击"我的电脑",点击"属性",选择"高级系统设置"(在此电脑属性下面,而非快捷方式)如是快捷方式,在设置 -> 个性化 -> 图标下设置。
选择"高级"选项卡,点击"环境变量"
在“系统变量”或”用户变量”中设置3项环境变量,JAVA_HOME
、PATH
、CLASSPATH
,若已存在则点击“编辑”,不存在则点击“新建”,具体设置方法在下文进行详细说明。
JAVA_HOME
JAVA_HOME
,一是为了方便引用,比如,JDK
安装在C:\Program Files\Java\jdk1.8.0_212目录里,则设置JAVA_HOME
为该目录路径,那么以后要使用这个路径的时候,只需输入%JAVA_HOME%
即可,避免每次引用都输入很长的路径串;二则是归一原则,当JDK路径改变的时候,仅需更改JAVA_HOME
的变量值即可,否则,就要更改任何用绝对路径引用JDK
目录的文档,要是万一没有改全,某个程序找不到JDK
,后果便是该软件无法正常运行!三则是第三方软件会引用约定好的 JAVA_HOME
变量,不然,也无法正常使用该软件。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
环境变量中.第一步,创建Java源程序文件,Java源文件是以.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是跨平台的语言,平台是指操作系统和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
小程序中经历的步骤,如下:
说明:
Java源程序到字节码是编译执行,字节码到机器码是解释执行。
编译执行是一次性把源程序编译成计算机能识别的目标程序,因此计算机执行起来速度非常快,但是编译后的目标程序只能在同一平台下运行。比如用C语言编写的程序,在Windows平台下编译的结果,离开Windows平台将无法正确的运行;解释执行的程序是指 解释器将源程序逐句翻译的同时逐句执行,因此执行起来速度上不占优势,但是这种程序执行时往往不依赖于特定的平台,通过在不同平台上提供不同的解释器就可以跨平台执行。