Java 历史背景、体系特点以及实现原理

  • 一、Java 历史背景
    • 1.1 起源
    • 1.2 演变
  • 二、Java 体系特点
    • 2.1 Java的各种版本
    • 2.2 Java 开发的方向
    • 2.3 Java 的特性
  • 三、跨平台原理
    • 3.1 Java技术的两种核心机制
    • 3.2 Java虚拟机(JVM)
    • 3.3 垃圾回收器(GC)
    • 3.4 Java SE 的组成概念图
    • 3.5 JDK
  • 四、何为程序
  • 五、Java 程序开发的三个步骤
  • 六、Java 语法简介

一、Java 历史背景

1.1 起源

20世纪90年代,单片机计算机系统诞生。SUN 公司为了抢占市场先机,1999年成立了由詹姆斯·高斯林(James Gosling)领导的“Green”项目小组。虽然当时流行C++语言,但是由于其过于复杂、庞大以及跨平台不友好,故而项目小组对C+进行了改造:去除了C++复杂的指针和内存管理,结合嵌入式系统的实时性需求,最终在1992年,开发了"OaK"面向对象语言。 1994年,OaK 应用于万维网。1995年使用OaK 语言研发了将小程序嵌入到网页中的技术—Applet,由于它不仅能嵌入网页,还可以随同网页在网络上传输,让无数的程序员认识到了OaK语言,这时OaK 语言正式更名为Java。

1.2 演变

1996 年 1 月,SUN 公司推出了 JDK1.0。在 JDK1.0 发布后,有很多程序员学习并运用 Java 来制作
网页,JDK 包括两大部分:开发工具和运行环境。
运行环境包括核心 API、集成 API、用户界面 API、发布技术、Java 虚拟机(JVM)。JDK1.0 的发布,
标志着 Java 成为一种独立的开发工具。在同年 9 月,约有 8.3 万个网页应用了 Java 技术来制作。
JDK1.0 的代表性技术有:Java 虚拟机、Applet、AWT 等。
1997 年 2 月,SUN 公司紧接着推出了 JDK 1.1,在推出后 3 周时间里,达到了近 22 万次的下载量。
4 月 2 日,首届 Java One 大会在美国旧金山召开,参加会议的人超过一万人,创造了当时全球同类
会议规模最高的纪录。9 月,Java Developer Connection 社区成员超过 10 万,同年还有 10 个最主
要的操作系统供应商正式声明将在他们的产品中使用 Java。
JDK1.1 的代表性技术有:JDBC、JavaBeans、RMI、JAR 文件格式、Java 语法中的内部类和反射。
1998 年 12 月 8 日,JDK1.2——第二代 Java 平台的企业版 J2EE 发布。
1999 年 6 月,Sun 公司把 Java 体系分为三个方向:
J2ME(Java2 Micro Edition,Java2 平台的微型版),应用于移动、无线及有限资源的环境;
J2SE(Java 2 Standard Edition,Java 2 平台的标准版),应用于桌面环境;
J2EE(Java 2Enterprise Edition,Java 2 平台的企业版),应用于基于 Java 的应用服务器。
随着供应商的不同,Java 的 API 也分为三大类:
Java Core API:Java 核心类库;
Java Optional API:对之前 API 的扩充;
特殊 API:由特殊厂商或组织提供的 API。
Java 2 平台的发布,是 Java 发展过程中最重要的一个里程碑,标志着 Java 的应用开始普及。
JKD1.2 的代表性技术有:Swing、Java IDL、EJB、Java Plug-in 等,在 API 文档中,添加了 strictfp
关键字和 Collections 集合类。
1999 年 4 月 27 日,HotSpot 虚拟机发布。HotSpot 是由一家叫“Longview Technologies”的小公司开
发的,后来被 SUN 公司收购。HotSpot 虚拟机发布时是作为 JDK 1.2 的附加程序提供的,后来它成
为了 JDK 1.3 及之后所有版本的 Sun JDK 的默认虚拟机 。
2000 年 5 月,JDK1.3、JDK1.4 和 J2SE1.3 相继发布,J2SE1.3 是对 J2SE1.2 的补充和扩展,从应
用领域的角度分析,JavaSE1.3 已经涵盖了数据库、WEB、网络、图形、多媒体、电话、影像等大
部分的信息技术领域。
2002 年 2 月 26 日,J2SE1.4 发布。与 J2SE1.3 相比,多了近 62%的类和接口。在这些新特性当中,
还提供了广泛的 XML 支持、安全套接字(Socket)支持(通过 SSL 与 TLS 协议)、全新的 I/OAPI、
正则表达式、日志与断言。
2004 年 9 月 30 日,J2SE1.5 发布,成为 Java 语言发展史上的又一里程碑。为了表示该版本的重要
性,J2SE 1.5 更名为 Java SE 5.0(内部版本号 1.5.0)。Java SE 5.0 包含了从 1996 年发布 1.0 版
本以来的最重大的更新,其中包括泛型支持、基本类型的自动装箱、改进的循环、枚举类型、格式化
I/O 及可变参数。
2005 年 6 月,在 Java One 大会上,Sun 公司发布了 Java SE 6。此时,Java 的各种版本已经更名,
已取消其中的数字 2,如 J2EE 更名为 JavaEE,J2SE 更名为 JavaSE,J2ME 更名为 JavaME。
2011 年 7 月 28 日,收购 Sun 公司的 Oracle 发布了 Java SE 7,引入了二进制整数、支持字符串的
switch 语句、棱形语法、多异常捕抓、自动关闭资源的 try 语言等新特性。
2014 年 3 月 18 日,Oracle 公司发布 Java SE8,这次版本升级为 Java 带来了全新的 Lambda 表达
式、流式编程等大量新特性,这些新特性使得 Java 变得更加强大。
2017 年 9 月 22 日,Oracle 公司发布 Java SE 9,这次版本升级强化了 Java 的模块化系统,让 Java
语言更轻量化,且采用了更高效、更智能的 GI 垃圾回收器,并在核心类库上进行大量更新,可进一
步简化编程。
2018 年 3 月 21 日,Java SE 10 发布,Java 10 版本带来了很多新特性,其中最备受广大开发者
关注的莫过于局部变量类型推断。此外,还包垃圾收集器改善、GC 改进、性能提升、线程管控等新
特性。
2018 年 9 月 26 日,Java SE 11 发布。这是 Java 大版本周期变化后的第一个长期支持版本(LTS
版本持续支持到 2026 年 9 月)。Java11 带来了 ZGC、Http Client 等重要特性,一共包含 17 个 JEP
(JDK Enhancement Proposals,JDK 增强提案)。
2019 年 3 月 20 日,Java SE 12 发布。Java 12 是短期支持版本,可在下一个版本发布之前获得 Oracle
的商业支持。
2019 年 9 月 23 日,Java SE 13 发布,此版本中添加了“文本块”,文本块是一个多行字符串文字,
避免对大多数转义序列的需要,以可预测的方式自动格式化字符串,并在需要时让开发人员控制格式。

二、Java 体系特点

2.1 Java的各种版本

Java SE: Java Platform, Standard Edition (标准版:各应用平台的基础,桌面开发和低端商务开发的解决方案。)
Java EE: Java Platform, Enterprise Edition (企业版:以企业为环境而开发程序应用的解决方案)
Java ME: Java Platform, Micro Edition (微型版:致力于消费产品和嵌入式设备和解决方案)

2.2 Java 开发的方向

开发桌面应用程序
银行软件、商场结算软件
开发面向Internet的web应用程序
门户网站(工商银行)、网上商城、阿里巴巴、电子商务网站
提供各行业的解决方案
金电信、电力…
嵌入式开发
移动电话、可视电话、数字机顶盒、汽车导航系统

2.3 Java 的特性

  • 一种纯面向对象的编程语言。
  • 一种与平台无关的(跨平台)的编程语言。(它提供了在不同平台下运行的解释环境)
  • 一种健壮的语言,吸收了C/C++语言的优点
  • 有较高的安全性。(自动回收垃圾、强制类型检查,取消指针)

三、跨平台原理

3.1 Java技术的两种核心机制

Java 虚拟机(Java Virtual Machine)JVM
垃圾回收器(Garbage Collection)GC

3.2 Java虚拟机(JVM)

JVM 可以理解为一个专门运行Java字节码的虚拟计算机系统:

  • JVM 有一个解释器组件,可以实现Java字节码与计算机操作系统之间的通信
  • 注意:对于不同的运行平台,有不同的JVM

3.3 垃圾回收器(GC)

  • 作用:将不再使用的内存空间进行回收。
  • 对比C/C++:垃圾(无用内存)由程序员自己负责回收,而Java语言消除了程序员回收无用内存的责任。
  • GC的具体实现:JVM提供了一种系统线程跟踪存储空间的分配情况。并在JVM空闲时,检查释放哪些可以被释放的空间。
  • 注意:GC在Java程序运行过程中自动启动,程序员无法精确控制和干预。

3.4 Java SE 的组成概念图

3.5 JDK

JDK (Java Development Kits)–Java 开发工具集:
1. JRE(Java Runtime Environment)–Java 运行时的环境
JRE三项主要功能
- 加载代码:由类加载器(class loader)完成
- 校验代码:由字节码校验器(byte code verifier)完成
- 执行代码:由运行时解释器(runtime interpreter)完成
2. JVM
3. Java API(应用程序编程接口)
- Java编译器(Javac.exe)
- Java运行时解释器(Java.exe)
- Java文档化工具(Javadoc.exe)
- 其他工具以及资源

四、何为程序

为了让计算机执行某些操作或解决某个问题而编写的一系列有序指令(即命令)的集合。
Java程序类型
1. 命令行程序
2. GUI程序
3. Applet程序
4. J2EE web应用程序

五、Java 程序开发的三个步骤

  • [1] 编写源码 (HelloWorld.java)
  • [2] 编译器编译 (HelloWorld.class)
  • [3] 在Java平台运行

六、Java 语法简介

  • 注释:Java 程序由三种注释方式
单行注释: //注释
多行注释:/*注释*/
文档注释: /**注释*/
  • Java 代码的位置

    • class 必须编写在.java 文件中
  • 语法规则
    • java 是严格区分大小写的
    • java 是一种自由格式的语言
    • 代码分为结构定义和功能执行语句
    • 功能执行语句的最后必须用分号结束

Java 基础 --- Java 历史背景、体系特点以及实现原理相关推荐

  1. Java基础----Java编程语言概述

    Java基础----Java编程语言概述 文章目录 Java基础----Java编程语言概述 Java编程语言概述 1-1 软件开发介绍 1.1软件开发介绍 1.2 常用命令 1-2 计算机编程语言介 ...

  2. Java基础-Java中的堆内存和离堆内存机制

    Java基础-Java中的堆内存和离堆内存机制 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 转载于:https://www.cnblogs.com/yinzhengjie/p/9 ...

  3. Java基础-JAVA中常见的数据结构介绍

    Java基础-JAVA中常见的数据结构介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.什么是数据结构 答:数据结构是指数据存储的组织方式.大致上分为线性表.栈(Stack) ...

  4. Java基础-Java中的内存分配与回收机制

    Java基础-Java中的内存分配与回收机制 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一. 二. 转载于:https://www.cnblogs.com/yinzhengji ...

  5. Java基础——Java多继承的三种实现方式

    Java基础--Java"多继承"的三种实现方式 Java语言本身只支持单继承(每个类只能有一个父类),但单继承的局限性很大,因此,可以通过以下的方式实现"多继承&quo ...

  6. [重学Java基础][Java IO流][Exter.2]IO流中几种不同的读写方法的区别

    [重学Java基础][Java IO流][Exter.2]IO流中几种不同的读写方法的区别 Read 读入方法 read(): 一般是这种形式 public int read() 1.从流数据中读取的 ...

  7. JAVA基础--JAVA SE(知识点总结 Ⅴ )

    前面内容请见: JAVA基础–JAVA SE(知识点总结 Ⅰ ) JAVA基础–JAVA SE(知识点总结 Ⅱ ) JAVA基础–JAVA SE(知识点总结 Ⅲ ) JAVA基础–JAVA SE(知识 ...

  8. Java基础-Java中常用的锁机制与使用

    Java基础-Java中常用的锁机制与使用 锁lock或互斥mutex是一种同步机制,主要用于在存在多线程的环境中强制对资源进行访问限制.锁的主要作用为强制实施互斥排他以及并发控制策略.锁一般需要硬件 ...

  9. java基础01-java历史

    #java (*是重点) java历史 1990年sun公司  ,面包机...设计的一门语言叫Oak 随着互联网行业的迅速发展 java的分类(j2  >  java 2) 5.0之前 J2SE ...

最新文章

  1. 【spring源码分析】IOC容器初始化(六)
  2. 单目+惯性 VIO SLAM 对比
  3. rsyslog+analyzer
  4. 用c语言合并两个链表,合并两个链表.
  5. simulink中mask设置_Mask Editor 概述
  6. docker-compose常用命令
  7. java swing linux_Linux下关于解决JavaSwing中文乱码的情况
  8. Kali Linux 无线渗透测试入门指南 第六章 攻击客户端
  9. MySQL日期 专题
  10. 创建数独小游戏uniapp/vue
  11. 计算机微课课件评比活动总结,教学大赛总结.doc
  12. python学习方法总结(内附python全套学习资料)
  13. java pfx_如何在Java读取PFX格式证书
  14. 速通~腾讯云学生gpu服务器安装TensorFlow
  15. 【笔记】Android手机root的概念
  16. 白月黑羽教python之selenium:课后练习作业二
  17. 在WindowsXP系统下搭建PPPoE服务器总结
  18. 软考初级程序员上午单选题(15)
  19. 怎么将打开的网页在浏览器中隐藏而不关闭
  20. java.util.ConcurrentModificationException at java.util.ArrayList$Itr.checkForComodification

热门文章

  1. 下载vue模板框架并使用
  2. 16位CRC校验码计算,485MODBUS计算
  3. Arcgis流域分析 实验报告
  4. # 2021-01-15 #「开源视频管理系统」- 搭建属于自己的视频站点
  5. Android商城开发----点击加入购物车,购物车商品的增删减
  6. 计算机视觉、机器学习、图形学等学习资料网站
  7. 高端在线客服系统源码PHP外贸新版(基于Thinkphp的网站在线客服系统)
  8. 关于计算机毕业后能从事的岗位,以及工作内容。
  9. 程导微编MikroElektronika.Compilers.and.Software.Tools.2017.09 11CD
  10. 阿里云腾讯云轻量应用服务器搭建网站教程