1.1、什么是Java
Java是一门面向对象的编程语言
不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念
因此因此Java语言具有功能强大和简单易用两个特征
Java语言作为静态面向对象编程语言的代表,极好的实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程
1.2、Java的历史(Java是如何诞生的)
20世纪90年代,硬件领域出现了单片式计算机系统,使用它可以大幅度提升消费类电子产品的智能化程度。Sun公司为了抢占市场先机,在1991年成立了一个成为Green的项目小组,专攻计算机在家电产品上的嵌入式应用
由于消费电子产品所采用的嵌入式处理芯片的种类繁杂,为了解决跨平台的困难,他们首先着眼于语言的开发,假设了一种结构简单、符合嵌入式应用需要的硬件平台体系结构并为其制定了相应的规范
对于新语言的设计,Sun公司研发人员并没有开发一种全新的语言,而是根据嵌入式软件的要求,对C++进行了改造,去除了留在C++的一些不太实用及影响安全的成分,并结合嵌入式系统的实时性要求,开发了一种称为Oak的面向对象语言
1992年的夏天,当Oak语言开发成功,但是,硬件生产商并未对此产生极大的热情。因为他们认为,在所有人对Oak语言还一无所知的情况下,就生产硬件产品的风险实在太大了,所以Oak语言也就因为缺乏硬件的支持而无法进入市场,从而被搁置了下来
1994年6、7月间,在经历了一场历时三天的讨论之后,团队决定再一次改变了努力的目标,这次他们决定将该技术应用于万维网。作为原型,帕特里克·诺顿写了一个小型万维网浏览器WebRunner
1995年,互联网的蓬勃发展给了Oak机会。业界为了使死板、单调的静态网页能够“灵活”起来,急需一种软件技术来开发一种程序,这种程序可以通过网络传播并且能够跨平台运行。这个时候,Sun公司想起了被搁置起来很久的Oak,Sun公司首先推出了可以嵌入网页并且可以随同网页在网络上传输的Applet,并将Oak更名为Java(在申请注册商标时,发现Oak已经被人使用了,再想了一系列名字之后,最终,使用了提议者在喝一杯Java咖啡时无意提到的Java词语)。
5月23日,Sun公司在Sun world会议上正式发布Java和HotJava浏览器。IBM、Apple、Adobe、HP、Oracle和微软等各大公司都纷纷停止了自己的相关开发项目,竞相购买了Java使用许可证,并为自己的产品开发了相应的Java平台。
1996年1月,Sun公司发布了Java的第一个开发工具包(JDK 1.0),这是Java发展历程中的重要里程碑,标志着Java成为一种独立的开发工具。9月,约8.3万个网页应用了Java技术来制作。10月,Sun公司发布了Java平台的第一个即时(JIT)编译器。
1997年2月,JDK 1.1面世,在随后的3周时间里,达到了22万次的下载量。4月2日,Java One会议召开,参会者逾一万人,创当时全球同类会议规模之纪录。9月,Java Developer Connection社区成员超过10万。
1998年12月8日,第二代Java平台的企业版J2EE发布。1999年6月,Sun公司发布了第二代Java平台的3个版本:J2ME;J2SE;J2EE。Java 2平台的发布,是Java发展过程中最重要的一个里程碑,标志着Java的应用开始普及。
1999年4月27日,HotSpot虚拟机发布。HotSpot虚拟机发布时是作为JDK 1.2的附加程序提供的,后来它成为了JDK 1.3及之后所有版本的Sun JDK的默认虚拟机
2000年5月,JDK1.3、JDK1.4和J2SE1.3相继发布,几周后其获得了Apple公司Mac OS X的工业标准的支持。
2005年6月,在Java One大会上,Sun公司发布了Java SE 6。此时,Java的各种版本已经更名,已取消其中的数字2,如J2EE更名为JavaEE,J2SE更名为JavaSE,J2ME更名为JavaME。
2006年11月13日,Java技术的发明者Sun公司宣布,将Java技术作为免费软件对外发布。
2009年,甲骨文公司宣布收购Sun 。2010年,Java编程语言的共同创始人之一詹姆斯·高斯林从Oracle公司辞职。2011年,甲骨文公司举行了全球性的活动,以庆祝Java7的推出,随后Java7正式发布。2014年,甲骨文公司发布了Java8正式版
1.3、Java的三个版本
-
Java总共分为Java SE、Java EE和Java ME三个版本:
Java SE:标准版Java SE(Java Platform,Standard Edition)。JavaSE以前成为J2SE。 它语序开发和部署在桌面,服务器,嵌入式环境和实时环境中使用Java应用程序。JavaSE包含了支持JavaWeb服务的开发的类,并为Java Platform,Enterprise Edition(Java EE)提供了基础。
Java EE:企业版Java EE(Java Platform,Enterprise Edition)。这个版本以前成为J2EE。 企业版本帮助开发和部署可移植,健壮,可伸缩切安全的服务器端Java应用程序。
Java ME:微型版Java ME(Java Platform,Micro Edition)。这个版本以前称为J2ME。 Java ME为在移动设备和嵌入式设备(笔记手机,PDA,电视机顶盒和打印机)上运行的应用程序提供一个健壮且灵活的环境。
1.4、Java的语言特点
简单性:Java看起来设计得很像C++,但是为了使语言小和容易熟悉,设计者们把C++语言中许多可用的特征去掉了,这些特征是一般程序员很少使用的。
面向对象:对程序员来说,这意味着要注意应中的数据和操纵数据的方法(method),而不是严格地用过程来思考。
分布性:Java设计成支持在网络上应用,它是分布式语言。
编译和解释性:Java编译程序生成字节码(byte-code),而不是通常的机器码。
稳健性:Java原来是用作编写消费类家用电子产品软件的语言,所以它是被设计成写高可靠和稳健软件的。
安全性:Java的存储分配模型是它防御恶意代码的主要方法之一。
可移植性:Java使得语言声明不依赖于实现的方面。
高性能:Java是一种先编译后解释的语言,所以它不如全编译性语言快。但是有些情况下性能是很要紧的,为了支持这些情况,Java设计者制作了“及时”编译程序,它能在运行时把Java字节码翻译成特定CPU(中央处理器)的机器代码,也就是实现全编译了。
多线程行:Java是多线程语言,它提供支持多线程的执行(也称为轻便过程),能处理不同任务,使具有线索的程序设计很容易。
动态性:Java语言设计成适应于变化的环境,它是一个动态的语言。
1.5、Java的工作原理
-
由四方面组成
Java编程语言
Java类文件格式
Java虚拟机
Java应用程序接口
-
当编辑并运行一个Java程序时,需要同时涉及到这四种方面。
1.6、JVM、JRE、JDK的关系
-
JVM、JRE、JDK的关系
JVM :英文名称(Java Virtual Machine),就是我们耳熟能详的 Java 虚拟机。它只认识 xxx.class 这种类型的文件,它能够将 class 文件中的字节码指令进行识别并调用操作系统向上的 API 完成动作。所以说,jvm 是 Java 能够跨平台的核心,具体的下文会详细说明。
JRE :英文名称(Java Runtime Environment),我们叫它:Java 运行时环境。它主要包含两个部分,jvm 的标准实现和 Java 的一些基本类库。它相对于 jvm 来说,多出来的是一部分的 Java 类库。
JDK :英文名称(Java Development Kit),Java 开发工具包。jdk 是整个 Java 开发的核心,它集成了 jre 和一些好用的小工具。例如:javac.exe,java.exe,jar.exe 等。
-
关系图: