了解过java语言的小伙伴肯定都知道,Java语言的跨平台性决定了Java语言的应用领域十分广泛,那么你知道Java跨平台的原理是什么吗?它究竟是如何实现跨平台的呢?今天小千就来给大家介绍一下。

Java跨平台的原理

首先我们来说一下Java代码的运行过程:1、首先将java文件编译成字节码(.class)文件;2、使用Java虚拟机(JVM–Java Virtual Machine)运行运行字节码文件。

上面的步骤中,第一步中,在所有的平台上生成的字节码文件都是相同的。第二步中,在不同的平台上运行字节码文件的Java虚拟机是不同的。

Java的开发团队针对不同的平台开发出了对应版本的java虚拟机,这使得同一个java代码文件可以再不同的平台上运行。所以,java能实现跨平台运行是因为有各种平台对应版本的java虚拟机的支持。

几个常见的Java名词解释

  • JDK

JDK是Java Development Kit的缩写,JDK是Java语言的软件开发工具包(SDK)。提供了java开发、编译、运行需要的文件和环境。 在JDK的安装目录下有一个jre目录,里面有两个文件夹bin和lib,在这里可以认为bin里的就是jvm,lib中则是jvm工作所需要的类库,而jvm和 lib合起来就称为jre。

  • JRE

JRE是Java Runtime Environment的缩写,JRE的内部有一个Java虚拟机(Java Virtual Machine)以及一些标准的类别函数库(Class Library),JRE是运行java字节码文件必备的工具。

  • JVM

JVM是Java Virtual Machine的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。JVM有针对不同平台的版本,它们可以运行相同的java代码编译的字节码文件,这使得Java代码实现的跨平台。

以上就是Java跨平台的原理介绍了,相信大家看完应该都有自己的理解了。最后欢迎对java开发感兴趣的同学关注小千,后续会分享更多Java知识。

本文来自千锋教育,转载请注明出处。

Java是如何实现跨平台的?原理是什么?相关推荐

  1. Java如何实现跨平台?原理是怎样的?

    学Java的小伙伴肯定都知道Java允许跨平台使用,那么你知道Java是如何实现跨平台的吗?原理又是怎样的呢?小千今天就来给你解答一下. 一.Java跨平台的原理 首先我们来说一下Java代码的运行过 ...

  2. 多线程的实现方式_一文搞懂Java多线程使用方式、实现原理以及常见面试题

    本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutorial 喜欢的话麻烦点下 ...

  3. 为什么说java语言是支持跨平台的

    1.反问:为什么c语言不支持跨平台. c语言不支持跨平台原因:编译时候,需要指定机器cpu,即平台, 所以为什么说C语言不能实现跨平台运行,就是因为它编译出来的 输出文件的格式,只适用于某种cpu,其 ...

  4. 夯实Java基础系列17:一文搞懂Java多线程使用方式、实现原理以及常见面试题

    本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutorial 喜欢的话麻烦点下 ...

  5. 使用线程锁(lock)实现线程同步_一文搞懂Java多线程使用方式、实现原理以及常见面试题...

    本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutorial 喜欢的话麻烦点下 ...

  6. Java并发机制的底层实现原理

    Java代码在编译后会变成Java字节码,字节码被类加载器加载到JVM里,JVM执行字节码,最终需要转化为汇编指令在CPU上执行,Java中所使用的并发机制依赖于JVM的实现和CPU的指令.本章我们将 ...

  7. Java服务器热部署的实现原理

    [本文转载于Java服务器热部署的实现原理] 今天发现早年在大象笔记中写的一篇笔记,之前放在ijavaboy上的,现在它已经访问不了了.前几天又有同事在讨论这个问题.这里拿来分享一下. 在web应用开 ...

  8. JAVA层HIDL服务的获取原理-Android10.0 HwBinder通信原理(九)

    摘要:本节主要来讲解Android10.0 JAVA层HIDL服务的获取原理 阅读本文大约需要花费19分钟. 文章首发微信公众号:IngresGe 专注于Android系统级源码分析,Android的 ...

  9. JAVA层HIDL服务的注册原理-Android10.0 HwBinder通信原理(八)

    摘要:本节主要来讲解Android10.0 JAVA层HIDL服务的注册原理 阅读本文大约需要花费22分钟. 文章首发微信公众号:IngresGe 专注于Android系统级源码分析,Android的 ...

最新文章

  1. Spring Cloud 中国社区一周年技术沙龙-北京站
  2. 音效摸鱼还不够爽?试试IDE里打几盘魂斗罗?
  3. 根号x_干货 | 设x=my+n?这不耍流氓嘛
  4. 二分类最优阈值确定_分类模型评价标准,AUC还是Macro F1?
  5. MySQL成勒索新目标,数据服务基线安全问题迫在眉睫
  6. php invalid access,PHP出错消息PHP has encountered an Access Violation at XXXXXXXX 如何解决?...
  7. 智慧交通day03-车道线检测实现09:车道线检测代码汇总(Python3.8)
  8. 51单片机c语言计数程序,51单片机INTOINT1中断计数c语言源程序.doc
  9. Android学习笔记(四)——EditText简单登录页面设计
  10. 使用lucene3.6创建索引和实现简单搜索
  11. 结对-结对编项目作业名称-开发环境搭建过程
  12. 【Oracle】服务器端监听配置
  13. H5 设备运动事件 DeviceMotionEvent
  14. Arduino提高篇01—点亮OLED显示屏
  15. js正则验证手机号码和座机号码及邮箱
  16. MySQL三个表的连接查询
  17. hadoop是什么?
  18. ubuntu 截图工具flameshot(火焰截图)
  19. html5的div是什么意思,div是什么意思?
  20. 【JZOJ B组】【JSOI2013】吃货JYY

热门文章

  1. 变分自编码器VAE:一步到位的聚类方案
  2. 机器学习理论《统计学习方法》学习笔记:奇异值分解(SVD)
  3. java.lang.IllegalStateException: PathVariable/RequestParam annotation was empty on param 0.
  4. Spring-Bean的依赖注入分析-01
  5. 【安全系列之跨域】跨域解决方案
  6. BugKuCTF 杂项 隐写
  7. CG CTF MISC 图种
  8. mybatis复杂查询环境 多对一的处理 按照结果嵌套处理和按照查询嵌套处理
  9. Vue.js-Day04-PM【axios(安装、使用)】
  10. 关于获取网络流,根据网络流转byte[],本地文件流转byte[],方法记录