学Java的小伙伴肯定都知道Java允许跨平台使用,那么你知道Java是如何实现跨平台的吗?原理又是怎样的呢?小千今天就来给你解答一下。

一、Java跨平台的原理

首先我们来说一下Java代码的运行过程:

1、首先将java文件编译成字节码(.class)文件;

2、使用Java虚拟机(JVM–Java Virtual Machine)运行运行字节码文件。

上面的步骤中,第一步中,在所有的平台上生成的字节码文件都是相同的。

上面的步骤中,第二步中,在不同的平台上运行字节码文件的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跨平台的原理了吧。

原文来自千锋教育:http://wh.mobiletrain.org/,转载请注明出处。

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

  1. Java虚拟机(JVM)以及跨平台原理

    一. Java概述 1. Java语言概述 2. Java虚拟机以及跨平台原理 3. Java的主要就业方向 4. Java的不同版本 5. Java开发环境搭建 6. 第一个Java程序示例 7.  ...

  2. 【精致Java教程】02:Java的跨平台原理

    Java的一大特色就是"write once, run anywhere"即"一次编译,到处运行".就是说你不用专门为每个平台写一份代码,你写的Java程序在任 ...

  3. 2.Java语言跨平台原理?

    2.Java语言跨平台原理? 理解 为主 Java程序并非是直接运行的,Java编译器将Java源程序编译成与平台无关的字节码文件(class文件),然后由Java虚拟机(JVM)对字节码文件解释执行 ...

  4. 【JAVA】Java概述(1、Java语言发展史;2、Java语言跨平台原理;3、JRE和JDK;4、JDK的下载与安装)

    Java概述 重新学习Java第一篇 文章目录 Java概述 1.JAVA语言发展史 1.1Java语言 1.2Java语言发展史 2.Java语言跨平台原理 2.1平台 2.2跨平台 2.3跨平台原 ...

  5. 输入输出 原理 java_java输入输出,书写规范,运行原理,跨平台原理(复习)...

    一个大概的java程序执行过程: java虚拟机跨平台原理:不管是什么系统,java源代码程序经过javac编译器编译成二进制的.class文件, .class文件在运行在jvm(虚拟机)上解释成对应 ...

  6. Java01-day01【发展史、跨平台原理、JRE和JDK、常用DOS命令、关键字、常量、数据类型、变量使用的注意事项、标识符、类型转换】

    java零基础入门到精通(2019版)[黑马程序员] 视频+资料:[链接:https://pan.baidu.com/s/1MdFNUADVSFf-lVw3SJRvtg   提取码:zjxs] &qu ...

  7. java原理教程,java基础之运行原理(一),java基础运行原理

    java基础之运行原理(一),java基础运行原理 java的核心配置:JDK JDK主要包括三个部分 1.Jre:java的运行环境 2.Java的工具:java的编译器(java.c.exe). ...

  8. [中级01]java为什么能跨平台,而C\C++语言不能跨平台

    编译后的成果物层面 同样的C\C++源文件文件,经过不同的计算机硬件(x86平台.arm.AMD).不同的操作系统(Linux\mac\windows etc.)上的编译器编译后,生成了不同的机器码, ...

  9. java 语言是跨平台的吗_java语言的跨平台特点是由什么保证的?有什么用吗?

    作为最火的编程语言之一,Java与其他语言的最大区别就在于它的跨平台性,这种特性使得Java在任何平台上都可以运行,问题来了,那你们知道Java它的跨平台性到底是由什么保证的呢?下面跟我一起来了解一下 ...

最新文章

  1. leetcode-86 分隔链表
  2. Django之ModelForm验证
  3. 频谱细化(补零、zfft、czt)
  4. 为什么SOFA RPC调用30s还不超时?
  5. [渝粤教育] 四川农业大学 宏观经济学 参考 资料
  6. 干货!一文看Doris在作业帮实时数仓中的应用实践
  7. 1562a检测软件_洛达1562a空间音频版评测!!!
  8. SpringBoot(十一)-- 动态数据源
  9. 大一C语言大作业ip合法性,c语言实现判断ip地址是否合法
  10. Apache Tika 内容抽取工具集合
  11. 觉得做人累了就看看这些!不是社会错了,是你错了!写的超好!
  12. CTF—攻防练习之HTTP—命令执行漏洞
  13. 交易类APP原型设计分享 - 5miles
  14. 上海计算机在职专业硕士学校,专业硕士计算机类可以报考上海哪些学校?
  15. 重量级ORM框架--持久化框架Hibernate【关系映射详解】
  16. 内网搭建代理DNS使用内网域名代替ip地址
  17. 动物实验,如何设置对照?
  18. 计算机操作系统知识框架要点复习,不包含习题!如有错误可以留言。
  19. 在perl中简单的正则匹配
  20. 为何我只能看到3.25GB物理内存

热门文章

  1. 浙江大学人工智能研究所:AI+X驱动科学发现
  2. 数字和字符串的相互转化
  3. 四张照片合成一张怎么弄_精美!多张照片组合成一张的拼贴画,每一幅都令人惊叹...
  4. python绘制饼图双层_Python入门进阶:Python绘制饼图到Microsoft Excel
  5. PaddlePaddle——手写数字识别DEMO
  6. MyBatis——insert错误[Could not set property ‘id‘ of ‘class‘ with value ‘xxx‘]解决方案
  7. C#——LINQ技术DEMO
  8. Spring Security——org.springframework.security.oauth:spring-security-oauth2项目已过时解决方案
  9. Jupyter Notebook——设置Jupyter Notebook默认目录
  10. Linux系统磁盘满了