Java 是由 Sun Microsystems 公司于 1995 年 5 月推出的 Java 面向对象程序设计语言和 Java 平台的总称。
主要特性
- Java 语言是简单的:
Java 语言的语法与 C 语言和 C++ 语言很接近,使得大多数程序员很容易学习和使用。另一方面,Java 丢弃了 C++ 中很少使用的、很难理解的、令人迷惑的那些特性,如操作符重载、多继承、自动的强制类型转换。特别地,Java 语言不使用指针,而是引用。并提供了自动分配和回收内存空间,使得程序员不必为内存管理而担忧。
- Java 语言是面向对象的:
Java 语言提供类、接口和继承等面向对象的特性,为了简单起见,只支持类之间的单继承,但支持接口之间的多继承,并支持类与接口之间的实现机制(关键字为 implements)。Java 语言全面支持动态绑定,而 C++语言只对虚函数使用动态绑定。总之,Java语言是一个纯的面向对象程序设计语言。
- Java语言是分布式的:
Java 语言支持 Internet 应用的开发,在基本的 Java 应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括 URL、URLConnection、Socket、ServerSocket 等。Java 的 RMI(远程方法激活)机制也是开发分布式应用的重要手段。
- Java 语言是健壮的:
Java 的强类型机制、异常处理、垃圾的自动收集等是 Java 程序健壮性的重要保证。对指针的丢弃是 Java 的明智选择。Java 的安全检查机制使得 Java 更具健壮性。
- Java语言是安全的:
Java通常被用在网络环境中,为此,Java 提供了一个安全机制以防恶意代码的攻击。除了Java 语言具有的许多安全特性以外,Java 对通过网络下载的类具有一个安全防范机制(类 ClassLoader),如分配不同的名字空间以防替代本地的同名类、字节代码检查,并提供安全管理机制(类 SecurityManager)让 Java 应用设置安全哨兵。
- Java 语言是体系结构中立的:
Java 程序(后缀为 java 的文件)在 Java 平台上被编译为体系结构中立的字节码格式(后缀为 class 的文件),然后可以在实现这个 Java 平台的任何系统中运行。这种途径适合于异构的网络环境和软件的分发。
- Java 语言是可移植的:
这种可移植性来源于体系结构中立性,另外,Java 还严格规定了各个基本数据类型的长度。Java 系统本身也具有很强的可移植性,Java 编译器是用 Java 实现的,Java 的运行环境是用 ANSI C 实现的。
- Java 语言是解释型的:
如前所述,Java 程序在 Java 平台上被编译为字节码格式,然后可以在实现这个 Java 平台的任何系统中运行。在运行时,Java 平台中的 Java 解释器对这些字节码进行解释执行,执行过程中需要的类在联接阶段被载入到运行环境中。
- Java 是高性能的:
与那些解释型的高级脚本语言相比,Java 的确是高性能的。事实上,Java 的运行速度随着 JIT(Just-In-Time)编译器技术的发展越来越接近于 C++。
- Java 语言是多线程的:
在 Java 语言中,线程是一种特殊的对象,它必须由 Thread 类或其子(孙)类来创建。通常有两种方法来创建线程:其一,使用型构为 Thread(Runnable) 的构造子类将一个实现了 Runnable 接口的对象包装成一个线程,其二,从 Thread 类派生出子类并重写 run 方法,使用该子类创建的对象即为线程。值得注意的是 Thread 类已经实现了 Runnable 接口,因此,任何一个线程均有它的 run 方法,而 run 方法中包含了线程所要运行的代码。线程的活动由一组方法来控制。Java 语言支持多个线程的同时执行,并提供多线程之间的同步机制(关键字为 synchronized)。
- Java 语言是动态的:
Java 语言的设计目标之一是适应于动态变化的环境。Java 程序需要的类能够动态地被载入到运行环境,也可以通过网络来载入所需要的类。这也有利于软件的升级。另外,Java 中的类有一个运行时刻的表示,能进行运行时刻的类型检查。
发展历史
- 1995 年 5 月 23 日,Java 语言诞生
- 1996 年 1 月,第一个 JDK-JDK1.0 诞生
- 1996 年 4 月,10 个最主要的操作系统供应商申明将在其产品中嵌入 JAVA 技术
- 1996 年 9 月,约 8.3 万个网页应用了 JAVA 技术来制作
- 1997 年 2 月 18 日,JDK1.1 发布
- 1997 年 4 月 2 日,JavaOne 会议召开,参与者逾一万人,创当时全球同类会议规模之纪录
- 1997 年 9 月,JavaDeveloperConnection 社区成员超过十万
- 1998 年 2 月,JDK1.1 被下载超过 2,000,000次
- 1998 年 12 月 8 日,JAVA2 企业平台 J2EE 发布
- 1999 年 6月,SUN 公司发布 Java 的三个版本:标准版(JavaSE, 以前是 J2SE)、企业版(JavaEE 以前是 J2EE)和微型版(JavaME,以前是 J2ME)
- 2000 年 5 月 8 日,JDK1.3 发布
- 2000 年 5 月 29 日,JDK1.4 发布
- 2001 年 6 月 5 日,NOKIA 宣布,到 2003 年将出售 1 亿部支持 Java 的手机
- 2001 年 9 月 24 日,J2EE1.3 发布
- 2002 年 2 月 26 日,J2SE1.4 发布,自此 Java 的计算能力有了大幅提升
- 2004 年 9 月 30 日 18:00PM,J2SE1.5 发布,成为 Java 语言发展史上的又一里程碑。为了表示该版本的重要性,J2SE1.5 更名为 Java SE 5.0
- 2005 年 6 月,JavaOne 大会召开,SUN 公司公开 Java SE 6。此时,Java 的各种版本已经更名,以取消其中的数字 "2":J2EE 更名为 Java EE,J2SE 更名为 Java SE,J2ME 更名为 Java ME
- 2006 年 12 月,SUN 公司发布 JRE6.0
- 2009 年 04 月 20 日,甲骨文 74 亿美元收购 Sun,取得 Java 的版权。
- 2010 年 11 月,由于甲骨文对于 Java 社区的不友善,因此 Apache 扬言将退出 JCP。
- 2011 年 7 月 28 日,甲骨文发布 Java7.0 的正式版。
- 2014 年 3 月 18 日,Oracle 公司发表 Java SE 8。
- 2017 年 9 月 21 日,Oracle 公司发表 Java SE 9
- 2018 年 3 月 21 日,Oracle 公司发表 Java SE 10
- 2018 年 9 月 25 日,Java SE 11 发布
- 2019 年 3 月 20 日,Java SE 12 发布
java三大版本:
J2SE: Standard Edition(标准版),包括那些构成Java语言核心的类。
比如;接口定义、输入/输出、网络编程、数据库连接
J2EE :Enterprise Edition(企业版),J2EE 包含J2SE中的类,并且还包括用于开发企业级应用的类.
比如:servlet、JSP、XML、事物控制
J2ME: Micro Edition(微缩版),包含J2SE中一部分类,用于消费类电子产品的软件开发。
比如:智能卡、手机、呼机
java跨平台原理
平台就是指我们计算机的操作系统,例如:Windows、Linux、Mac等操作系统。 跨平台的意思就是java程序在编译完成之后,在这些平台上都可以运行,比如我在Windows上编译好一个java程序,不做任何修改就能在Linux或者Mac系统上运行。(也就是一次编译,到处运行)
那么跨平台是如何实现的呢?
这里就要提到java虚拟机(Java Virtual Machine,简称 JVM),
- JVM是一个软件,在每个平台都有不同的版本,
- java代码被编译后生成后缀为.class的文件,叫做字节码文件,
- JVM负责将字节码文件翻译成对应平台下的机器码然后运行,
- 它的跨平台要点是实现能运行在各个平台上的JVM
简单理解:就是我们去国外旅游,每去一个不同的国家就要带上一个不同的翻译,这个翻译就是JVM,我们相当于.java文件,我们说出的中文就是.class文件,我们带的翻译肯定能听懂我们说的话,我们将我们(.java)的想法用中文(.class)说给翻译(JVM)听,然后翻译(JVM)再将我们说的话(.class)翻译给当地人(平台)听。
JVM、JDK、JRE
JVM
JVM是Java Virtual Machine(Java虚拟机)的缩写,
它是整个Java实现跨平台的最核心的部分,所有的java程序会首先被编译为.class的类文件,这种类文件可以在虚拟机上执行,也就是说class并不直接与机器的操作系统相对应,而是经过虚拟机间接与操作系统交互,由虚拟机将程序解释给本地系统执行。
JRE
JRE是java runtime environment(java运行环境)的缩写。JRE是指java运行环境。
jre目录,里面有两个文件夹bin和lib,在这里可以认为bin里的就是jvm,lib中则是jvm工作所需要的类库,而jvm和lib和起来就称为jre。 (jre里有运行.class的java.exe)
JDK是java development kit(java开发工具包)的缩写.
在目录下面有六个文件夹、一个src类库源码压缩包、和其他几个声明文件。其中,真正在运行
java时起作用的是以下四个文件夹:bin、include、lib、jre。现在我们可以看出这样一个关系,JDK包含JRE,而JRE包含JVM。
bin: 最主要的是编译器(javac.exe)
include: java和JVM交互用的头文件
lib:类库
jre: java运行环境
(注意:这里的bin、lib文件夹和jre里的bin、lib是不同的)
总的来说JDK是用于java程序的开发,而jre则是只能运行class而没有编译的功能。
JDK,JRE,JVM三者关系概括如下:
jdk是JAVA程序开发时用的开发工具包,其内部也有JRE运行环境JRE。
JRE是JAVA程序运行时需要的运行环境,
JVM内部包含许多应用程序的类的解释器和类加载器等等。
就是说如果你光是运行JAVA程序而不是去搞开发的话,只安装JRE就能运行已经存在的JAVA程序了。JDk、JRE内部都包含JAVA虚拟机JVM,