了解Java
- 一、Java的起源
- 二、Java的演变
- 三、Java 的体系
- 四、Java的特点
- 五、Java的跨平台原理
- 六、JDK、JRE、JVM、GC
一、Java的起源
诞生时间:
上世纪90年代,1992年开发出来,1995年正式流行。
主要发明人:
詹姆斯.高斯林(James Gosling)
公司:
美国SUN公司(后被Oracle公司收购)历史:
1991年
,Sun公司成立以詹姆斯.高斯林领导的“Grenn”项目小组,为家用消费电子产品开发一个分布式代码系统, 这样可以把E-mail发给电冰箱、 电视机等家用电器, 对它们进行控制, 和它们进行信息交流。
1992年
,由于C++太复杂, 安全性差, Green小组基于C++开发一种新的语言叫“Oak”,这个名字取自高斯林想名字时,看到窗外的一棵橡树。
1994年
,团队决定将Java技术应用于万维网。他们认为随着Mosaic浏览器的到来,因特网正在向同样的高度互动的远景演变,而这一远景正是他们在有线电视网中看到的。作为原型,帕特里克·诺顿写了一个小型万维网浏览器,WebRunner,后来改名为HotJava。
同年,Oak改名为Java。在申请注册商标时,商标搜索显示,Oak已被一家显卡制造商注册,因此团队找到了一个新名字。这个名字是在很多成员常去的本地咖啡馆中杜撰出来的,于是, Java这个名字就这样传开了 。
1994年底
,James Gosling参加了在硅谷召开的“技术、教育和设计大会”。他报着试一试的心情向与会者演示了Java的功能。
他点击了网页上的一个静止的分子结构图标,一条命令通过互联网送到了几百英里外的网站,下载了一段Java小程序,在本地工作站上开始执行。在几秒钟时间里,原本静止的网页,一个分子图像以三维动画的方式转了起来
。
“哇!”James Gosling听到了全场观众的赞叹声。
不久后,硅谷最大的报纸《圣荷西信使报》在头版刊登了一篇专文,“为什么Sun认为一杯热咖啡能让你鼓足精神”。 从文章见报开始,负责Java市场人员的电话响个不停。不久,全美的主要报刊杂志都刊登了Java的报道。Java出名了!
二、Java的演变
1996年
,JDK1.0,核心技术有Java虚拟机、Applet、AWT等。1997年2月
,JDK1.1,添加了: Java Bean、远程方法调用(RMI)、JAR文件格式、数字签名、AWT增强(代理事件模型、支持剪贴板、打印等)、对象序列化、反射和内省、内部类等技术。1998 年 12 月 8 日
,JDK1.2——第二代 Java 平台的企业版 J2EE 发布。1999 年 6 月
,Sun 公司把 Java 体系分为三个方向:J2SE、J2EE、J2MEJava 2 平台的发布,是 Java 发展过程中最重要的一个里程碑,标志着 Java 的应用开始普及。
JKD1.2 的代表性技术有:Swing、2D API(图像绘制)、拖拽功能、音频加强、Java IDL、安全增强(安全策略)、JIT,在 API 文档中,添加了 strictfp关键字和 Collections 集合2000 年 5 月
,JDK1.3、JDK1.4 和 J2SE1.3 相继发布。2002 年 2 月 26 日
,J2SE1.4 发布。与 J2SE1.3 相比2004 年 9 月 30 日
,J2SE1.5 发布,成为 Java 语言发展史上的又一里程碑。2005 年 6 月
,在 Java One 大会上,Sun 公司发布了 Java SE 6。2011 年 7 月 28 日
,收购 Sun 公司的 Oracle 公司发布了 Java SE 7。2014 年 3 月 18 日
,Oracle 公司发布 Java SE8,这次版本升级为 Java 带来了全新的 Lambda 表达式、流式编程等大量新特性,这些新特性使得 Java 变得更加强大.2017 年 9 月 22 日
,Oracle 公司发布 Java SE 9.2018 年 3 月 21 日
,Java SE 10 发布.2018 年 9 月 26 日
,Java SE 11 发布。这是 Java 大版本周期变化后的第一个长期支持版本.2019 年 3 月 20 日
,Java SE 12发布。2019 年 9 月 23 日
,Java SE 13发布。
三、Java 的体系
体系 | 方向 |
Java ME(Micro,微型版) | 致力于消费产品和嵌入式设备的解决方案,应用于移动、无线及有限资源的环境。 |
Java SE(Standard, 标准版) | 各应用平台的基础,桌面开发和低端商务应用的解决方案。应用于桌面环境。 |
Java EE(Enterprise, 企业版) | 以企业为环境而开发应用程序的解决方案,应用于基于 Java 的应用服务器。 |
四、Java的特点
-
简单易学
,Java上手速度快,几乎大部分程序员在刚开始时都是选用Java入门,Java也被成为“编程界的英语”。 -
面向对象
,Java是一种纯面向对象的编程语言,所以Java具备面向对象的三大特性:封装性,继承性,多态性 -
跨平台性(平台无关性)
,“一次编译,到处运行
”,Java最具独特性的特点,也是Java与其他语言的最大区别. -
健壮性
,Java语言是一种强类型语言,即在编译和运行时进行大量的类型检查,防止不匹配的数据类型的发生。
Java提供自动垃圾收集来进行内存管理,防止了内存分配的错误
Java语言设计了异常处理机制,可以反馈出可能出现但未被处理的异常,帮助程序员正确地进行选择以防止系统的崩溃。 安全性
官方解释是这儿样的- 详情可以访问官网
https://docs.oracle.com/en/java/javase/16/security/java-security-overview1.html#GUID-2EF91196-D468-4D0F-8FDC-DA2BEA165D10) 支持网络编程
支持多线程
五、Java的跨平台原理
Java是可以跨平台的编程语言,那我们首先得知道什么是平台,我们把CPU处理器与操作系统的整体叫平台
,也可以说“平台= CPU+OS”。
了解了平台,接下来语言根据执行方式的不同分类:
第一是编译执行,如说到的C,它把源程序由特定平台的编译器一次性编译为平台相关的机器码,它的优点是执行速度快,缺点是无法跨平台;
第二是解释执行,如JavaScript,HTML等它使用特定的解释器,把代码一行行解释为机器码,类似于同声翻译,它的优点是可以跨平台,缺点是执行速度慢,暴露源程序;
第三种是从Java开始引入的“中间码+虚拟机”的方式,它既整合了编译语言与解释语言的优点,同时如虚拟机又可以解决如垃圾回收,安全性检查等这些传统语言头疼的问题,所以其后微软的.NET平台也使用的这种方式。
我们知道使用C语言的源程序,需要经过相应操作系统的编译器编译之后,才能在平台上运行,所以在C语言中,编译器与平台相关。
举个例子,经过VC编译后的.exe文件能在Linux平台上运行吗?答案肯定是否定的。使用特定编译器编译的程序只能在对应的平台运行,这里也可以说编译器是与平台相关的,编译后的文件也是与平台相关的。我们说的语言跨平台是编译后的文件跨平台,而不是源程序跨平台
,如果是源程序,任何一门语言都是跨平台的语言了。
Java和C不一样的是,Java将源程序编译为中间语言,再由解释器二次编译,解释执行。
接下来我们再比较下两种方式的差异:
第一,C语言是编译执行的,编译器与平台相关,编译生成的可执行文件与平台相关;
第二,Java是解释执行的,编译为中间码的编译器与平台无关,编译生成的中间码也与平台无关(一次编译,到处运行),中间码再由解释器解释执行,解释器是与平台相关的,也就是不同的平台需要不同的解释器.
六、JDK、JRE、JVM、GC
JDK:(Java Development Kits) Java开发工具集
JRE:(Java Runime Environment)Java运行时环境
JVM:(Java Virtual Machine) Java虚拟机
GC:(Garbage Collection)垃圾回收器
JVM、GC是Java技术的两种核心机制
JVM是整个java实现跨平台的最核心的部分,它屏蔽了底层运行平台的差别,实现了“一次编译,随处运行”,对于不同的运行平台,有不同 的 JVM。
JVM将堆内存分为Eden区、新生代区、老生代区。创建的对象会放在Eden区,如果Eden区满,则发生GC,新生代区利用可达性算法接收可达对象,然后将Eden区清空。
JDK、JRE、JVM是逐层递减的包含关系,JDK包含JRE,JRE包含JVM