当前位置: 首页 > news >正文

Java后端开发中Java 8,JVM和JDK的关系

Java后端开发中Java 8,JVM和JDK的关系

  • 一、技术介绍
    • 1、Java 8
    • 2、JDK(Java Development Kit)
    • 3、JVM(Java Virtual Machine)
  • 二、相互关系
  • 三、总结

一、技术介绍

1、Java 8

Java8(也就是Java1.8)是Java编程语言的一个主要版本,正式名称为Java Platform, Standard Edition 8 (Java SE 8)。Java 8在2014年3月发布,引入了许多新特性,如Lambda表达式、新的日期时间API、接口中的默认和静态方法等。Java 8的引入使得Java程序可以更加简洁、易读,同时提高了编程效率。

2、JDK(Java Development Kit)

定义:JDK是完整的Java软件开发工具包,包含了开发Java应用所需的编译器、Java运行时环境(JRE)、类库和工具。

组成
JDK由以下几部分组成:
JRE(Java Runtime Environment):包含JVM和运行Java程序所需的类库。
Java编译器(javac):将Java源代码编译成Java字节码(.class文件)。
Java文档生成器(javadoc)和其他工具:如调试工具(jdb)、打包工具(jar)等。

3、JVM(Java Virtual Machine)

定义:JVM是一个抽象的计算机,它提供了一个环境,允许Java字节码被执行。JVM使得Java程序能够在任何支持JVM的平台上运行,无需修改代码,实现了“一次编写,到处运行”的目标。

功能:JVM负责运行Java字节码,它通过将字节码转换成特定平台的机器码来执行。它还提供内存管理、垃圾回收等功能。

二、相互关系

(1)Java 8作为一个版本,提供了一系列的新特性和改进,这些改进体现在Java的语言层面、库层面,以及运行时环境上。也就是JVM和JDK都要针对Java 8的版本进行更新或者适配。

(2)JDK则提供了一整套完整的工具,使得开发者能够编写、编译、调试、监控和运行Java应用。JDK不仅提供JVM,还包括了其他开发工具,如编译器(javac)、文档生成器(javadoc)、打包工具(jar)等。

(3)JVM是Java运行时环境的核心部分,负责执行编译后的Java程序(字节码)。JVM提供了运行Java字节码的环境,但它本身并不包括编写、编译或调试Java程序所需的工具。

如果你只需要运行Java应用程序,你实际上是在使用JVM,通常作为JRE的一部分被安装。JRE包括JVM和运行Java应用程序所需的库。为了运行使用Java 8新特性编写的应用程序,JVM必须是支持Java 8的版本。

如果你需要开发Java应用程序,那么你需要JDK,因为它提供了开发过程中所需的工具和库。JDK中包含了JRE(因此也包含了JVM),以及开发人员需要的其他工具。JDK版本与Java平台版本相对应,例如,Java 8的开发工具集称为JDK 8。

三、总结

(1)Java 8定义了语言的特性和标准库,开发者可以利用这些特性和库来编写应用程序。

(2)JDK 8提供了工具和环境来开发、编译、调试和运行使用Java 8特性编写的应用程序。

(3)JVM是运行时环境,负责执行用JDK编译后的Java字节码,确保Java应用可以在任何支持JVM的平台上运行。

Java 8定义了编程语言的规范,JDK提供了实现这些规范的工具,而JVM则是执行这些规范的环境。

相关文章:

  • C语言如何声明外部变量?
  • 一条SQL查询语句的执行顺序
  • mysql慢sql排查与分析
  • Blender怎么样启动默认移动和Cavity效果
  • 理解 Golang 变量在内存分配中的规则
  • ics-05-攻防世界
  • 爬取高校专业信息的Python爬虫简介与实践
  • 【C++ STL算法】sort 排序
  • 隐私计算实训营学习七:隐语SCQL的架构详细拆解
  • 数据库的基本操作
  • 面试题多态结合线程
  • 【TI毫米波雷达】IWR6843AOP的官方文件资源名称BUG,选择xwr68xx还是xwr64xx,及需要注意的问题
  • 【测试面试题】14题常见APP测试面试题(参考答案)
  • 加州大学欧文分校英语基础语法专项课程02:Questions, Present Progressive and Future Tenses 学习笔记
  • Inotify
  • 【399天】跃迁之路——程序员高效学习方法论探索系列(实验阶段156-2018.03.11)...
  • 30天自制操作系统-2
  • C++类中的特殊成员函数
  • Eureka 2.0 开源流产,真的对你影响很大吗?
  • in typeof instanceof ===这些运算符有什么作用
  • Java|序列化异常StreamCorruptedException的解决方法
  • Java深入 - 深入理解Java集合
  • Mac转Windows的拯救指南
  • nginx 配置多 域名 + 多 https
  • NLPIR语义挖掘平台推动行业大数据应用服务
  • PHP 使用 Swoole - TaskWorker 实现异步操作 Mysql
  • PHP的类修饰符与访问修饰符
  • webgl (原生)基础入门指南【一】
  • 大型网站性能监测、分析与优化常见问题QA
  • 规范化安全开发 KOA 手脚架
  • 基于axios的vue插件,让http请求更简单
  • 跨域
  • 前端面试之CSS3新特性
  • 容器化应用: 在阿里云搭建多节点 Openshift 集群
  • 一些css基础学习笔记
  • 一些基于React、Vue、Node.js、MongoDB技术栈的实践项目
  • # 数据结构
  • $.ajax,axios,fetch三种ajax请求的区别
  • (1)Nginx简介和安装教程
  • (bean配置类的注解开发)学习Spring的第十三天
  • (Matlab)遗传算法优化的BP神经网络实现回归预测
  • (ZT)出版业改革:该死的死,该生的生
  • (附源码)ssm教师工作量核算统计系统 毕业设计 162307
  • (附源码)计算机毕业设计SSM疫情下的学生出入管理系统
  • (六)激光线扫描-三维重建
  • (论文阅读22/100)Learning a Deep Compact Image Representation for Visual Tracking
  • (免费分享)基于springboot,vue疗养中心管理系统
  • (转)PlayerPrefs在Windows下存到哪里去了?
  • (转载)跟我一起学习VIM - The Life Changing Editor
  • (轉貼) 寄發紅帖基本原則(教育部禮儀司頒布) (雜項)
  • .aanva
  • .NET Core 将实体类转换为 SQL(ORM 映射)
  • .NET Core 网络数据采集 -- 使用AngleSharp做html解析
  • .Net Web窗口页属性
  • .NET 设计一套高性能的弱事件机制