一、前言

此系列随笔是针对《深入理解Java虚拟机:JVM高级特性与最佳实践 第2版》的总结

上一节,我们搭建好了java的开发环境,这一节,我们来看Java的技术体系

二、Java技术体系

1.按功能划分

如 果 仅 从 传 统 意 义 上 来 看, Sun 官 方 所 定 义 的 Java 技 术 体 系 包 括 以 下 几 个 组 成 部 分:

  • Java程序设计语言
  • Java API,包括 Java API类库 和 来自商业机构以及开源社区的第三方类库
  • Class 文件格式
  • 各种硬件平台上的Java 虚 拟 机

1.1 名词解释

简称 全称 含义
Java SE Java Platform Standard Edition java 平台标准版
JDK Java SE Development Kit Java 语言的软件开发工具包(SDK)
JRE Java Runtime Environment Java运行时环境
JVM Java Virtual Machine Java虚拟机

1.2 JDK

全称:Java SE Development Kit —— Java 语言的软件开发工具包(SDK)

我们可以把 Java程序设计语言Java API类库Java虚拟机这三部分统称为 JDK,JDK是用于支持Java程序开发的最小环境。

JDK的组成结构如下图(来自 JDK8官方文档 首页)

1.3 JRE

全称:Java Runtime Environment —— Java运行时环境

如上图,我们可以把Java API类库中的Java SE API子集Java虚拟机这两部分统称为 JRE( Java Runtime Environment),JRE是支持Java程序运行的标准环境。

1.4 JVM

全称:Java Virtual Machine —— Java虚拟机

JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。

1.5 jdk、jre、jvm的关系

三者的关系为:

JDK包含了JRE

JRE包含了JVM

2.按业务领域划分

如 果 按 照 技 术 所 服 务 的 领 域 来 划 分, 或 者 说 按 照 Java 技 术 关 注 的 重 点 业 务 领 域 来 划 分, Java 技 术 体 系 可 以 分 为 4 个 平 台, 分 别 为:

  • Java Card

支 持 一 些 Java 小 程 序( Applets) 运 行 在小 内 存 设 备( 如 智 能 卡) 上 的 平 台。

  • Java ME( Micro Edition)

支 持 Java 程 序 运 行 在 移 动 终 端( 手 机、 PDA) 上 的 平 台, 对 Java API 有 所 精 简, 并 加 入 了 针 对 移 动 终 端 的 支 持, 这 个 版 本 以 前 称 为 J2ME。

  • Java SE( Standard Edition)

支 持 面 向 桌 面 级 应 用( 如 Windows 下 的 应 用 程 序) 的 Java 平 台, 提 供 了 完 整 的 Java 核 心 API, 这 个 版 本 以 前 称 为 J2SE。

  • Java EE( Enterprise Edition)

支 持 使 用 多 层 架 构 的 企 业 应 用( 如 ERP、 CRM 应 用) 的 Java 平 台, 除 了 提 供 Java SE API 外, 还 对 其 做 了 大 量 的 扩 充[ 3] 并 提 供 了 相 关 的 部 署 支 持, 这 个 版 本 以 前 称 为 J2EE。

三、Java的优点

Java能获得如此广泛的认可,除了它拥有一门结构严谨、面向对象的编程语言之外,还有许多不可忽视的优点:

  1. 跨平台

它摆脱了硬件平台的束缚,实现了“一次编写、到处运行”

  1. 相对安全的内存管理和访问机制

它提供了一个相对安全的内存管理和访问机制,避免了绝大部分的内存泄露和指针越界问题

  1. 热点代码检测和运行时编译及优化

它实现了热点代码检测和运行时编译及优化,这使得Java应用能随着运行时间的增加而获得更高的性能

  1. 完整的应用程序接口和第三方类库

它有一套完整的应用程序接口,还有无数来自商业机构和开源社区的第三方类库来帮助它实现各种各样的功能

四、参考资料

  1. Java Platform Standard Edition 8 Documentation
  2. 五月的仓颉——Java虚拟机1:什么是Java
  3. 弄懂JDK、JRE和JVM到底是什么

JVM_总结_02_Java技术体系的更多相关文章

  1. [转] EJB 3和Spring技术体系比较

    最近在学习EJB 3,对于SSH与EJB3,一直不太明白“即生瑜,何生亮?”,今天无意看到一篇旧文,比较系统的对比了这二种技术架构,转载于此: 原文出处:http://www.51cto.com/sp ...

  2. 20140912-关于.NET技术体系的思维导图

    逛园子时看到的. 关于.NET技术体系的思维导图

  3. .NET平台技术体系梳理+初学者学习路径推荐+我们的愿景与目标

    文章出自:http://www.cnblogs.com/ice-river/p/3475041.html 一 .NET平台技术体系梳理 .NET平台应用领域众多(桌面开发,web开发,移动开发),不断 ...

  4. JAVA技术体系发展路线

    JAVA技术体系 1.1 Java程序员 ·高级特性 反射.泛型.注释符.自动装箱和拆箱.枚举类.可变参数.可变返回类型.增强循环.静态导入 ·核心编程 IO.多线程.实体类.集合类.正则表达式.XM ...

  5. .NET平台技术体系

    .NET平台技术体系梳理+初学者学习路径推荐+我们的愿景与目标 一 .NET平台技术体系梳理 .NET平台应用领域众多(桌面开发,web开发,移动开发),不断有新的编程爱好者开始学习或从其他平台转移到 ...

  6. Houdini技术体系 基础管线(四) :Houdini驱动的UE4植被系统 上篇

    背景 之前在<Houdini技术体系 过程化地形系统(一):Far Cry5的植被系统分析>一文中已经对AAA游戏中过程化植被的需求有了一定的定义,后续工作就是如何用Houdini开发功能 ...

  7. Houdini技术体系 基础管线(三) :UE4 Landscape Component的多选支持 下篇

    背景 上篇中,我们介绍了如何修改Houdini Enigne来设置单个Landscape Compnent的Height和Layer的数据,但原生Houdini Engine并不支持多选Compone ...

  8. 深入理解java虚拟机----java技术体系(一)

    1.java技术体系 举例: class文件格式:如下图所示,java源代码可以根据不同的编译器可以编译成不同的代码.即可以自定义语言规范比如beanshell,并编写代码; 然后自己编写java编译 ...

  9. 揭秘Java架构技术体系

    Web应用,最常见的研发语言是Java和PHP. 后端服务,最常见的研发语言是Java和C/C++. 大数据,最常见的研发语言是Java和Python. 可以说,Java是现阶段中国互联网公司中,覆盖 ...

随机推荐

  1. JavaWeb—监听器Listener

    1.简介 Listener是Servlet的监听器,Servlet 监听器用于监听一些重要事件的发生,监听器对象在事情发生前.发生后可以做一些必要的处理. JavaWeb里面的listener是通过观 ...

  2. python 里安装 tensorflow 后运行出错的问题解决

    如果出现一下错误: libcublas.so.8.0: cannot open shared object file: No such file or directory 原因是没有 cuda 环境, ...

  3. SaltStack远程执行命令

    编辑fansik_cmd.sls文件: 内容如下: fansik_cmd:  cmd.run:    - unless:      - test -f /tmp/fansik.txt      - t ...

  4. Shell字符串操作

    @1:子串削除 ${string#substring} 从$string 的开头位置截掉最短匹配的$substring. ${string##substring} 从$string 的开头位置截掉最长 ...

  5. docker devise相关错误

    rake aborted!Devise.secret_key was not set. Please add the following to your Devise initializer: con ...

  6. margin无法居中原因

    1.要给居中的元素一个宽度,否者无效. 2.该元素一定不能浮动,否者无效. 3 在HTML中使用标签,需考虑好整体构架,否者全部元素都会居中的.

  7. php……流程

    流程:由两个及以上的业务步骤,完成一个完整的业务行为的过程,可称之为流程:注意是两个及以上的业务步骤.事物进行过程中的次序或顺序的布置和安排. 创建页面: 登录页面(login.php): <h ...

  8. Python学习进程(13)文件与IO

        本节介绍基本的IO函数和文件的读写操作.     (1)读取键盘输入: Python用于读取键盘输入的函数有两个:raw_input与input. 1)raw_input函数 从标准输入读取一 ...

  9. 02_虚拟机的安装和SecureCRT、FileZilla、Xmanage、UltraEdit工具的介绍

    上述几个工具连接不成功的情况,很多时候是因为ssh服务没有安装,CentOS默认安装,不会出现问题,Ubuntu桌面版默认没有安装,需要手动安装,安装部分参考下文SecureCRT部分 一.安装Cen ...

  10. node做验证码

    使用了ccap插件 1.安装: 通用方法:npm install ccap 2. cnst ccap= require('ccap')({ width: 128, height: 40, offset ...