Java是如何实现跨平台的

Wesley13
• 阅读 1042

一.Java是如何实现跨平台的

1.我们编写的Java源码,编译后会生成一种 .class 文件,称为字节码文件

2.Java虚拟机JVM就是负责将字节码文件翻译成特定平台下的机器码然后运行。也就是说,只要在不同平台上安装对应的JVM,就可以运行字节码文件,运行我们编写的Java程序。

Java是如何实现跨平台的

注意:跨平台的是Java程序,不是JVM。JVM是用C/C++开发的,不同平台下需要安装不同版本的JVM

所以对成千上万的java开发者和java程序来讲,java是跨平台的

二.JRE,JDK, JVM是什么

首先是JDK

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

然后我们来看JRE

JRE(Java Runtime Environment,Java运行环境),包含JVM标准实现及Java核心类库。JRE是Java运行环境,并不是一个开发环境,所以没有包含任何开发工具(如编译器和调试器)

然后JVM

      JVM 就是Java虚拟机,有多个版本,用来支持Java跨平台的

下图清晰明朗

Java是如何实现跨平台的

三.安装和配置java环境

1.先下载安装jdk,首先百度搜索jdk下载,去Orcle官网下载,下载完后安装

2.安装完毕后会有jdk,和jre两个文件夹

JDK打开后目录结构如下图所示:

Java是如何实现跨平台的

3.配置环境变量,打开windons系统的环境变量设置窗口,win10下是:

打开我的电脑,在空白处右键单击选择“属性”->“高级系统设置”->“环境变量”

然后在用户变量这里新建,变量名为PATH,变量值为javac.exe的路径,我的是D:\code\jdk1.8.0_151\bin,点击保存

打开cmd,输入javac,出现下图说明已经配置成功:

Java是如何实现跨平台的

四.编写Java程序并编译

1.在D盘下新建一个文本文件,改后缀名为.java. 比如111.java

2.打开111.java,编辑,输入如下代码:

class Hello
{
  public static void main(String[] args)
  {
   System.out.println("HelloWorld");
  };
}

3.打开cmd,进入D盘,输入javac 111.java , 这是编译的命令,javac是编译的意思

4.编译成功后,会在同样目录下生成Hello.class字节码文件

5.启动JVM,并执行字节码文件,语法:java 带有main函数的类名  举例java Hello

6.控制台输出“Hello World”

五.java的基本语法

1.java严格区分大小写

2.一个java源文件中能有多个类,但只能有一个public类,而且源文件名必须与类名相同

3.一个java源文件中有N个java类时,编译后会生成N份字节码,字节码名称与类名一一对应

4.建议:一个源文件中只定义一个类,并修饰为public

参考资料:https://blog.csdn.net/songkai320/article/details/51819046

http://www.open-open.com/lib/view/open1408453806147.html

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
灯灯灯灯 灯灯灯灯
3年前
大厂必备面试题———JVM内存结构
JVM一,基本介绍解释:java虚拟机,准确的来说是java二进制字节码的运行环境。(jvm是一套规范),用来执行class文件,保证java语言跨平台。Java虚拟机可以看作是一台虚拟的计算机,和真是的计算机一样,有着自己的指令集以及各种运行时内存。jvm就是一个字节码翻译器,它将字节码文件翻译成各个系统对应的的机器码,确保字节码文件能在各个系统上正确的
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
5个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
限时发布!纯手打“RocketMQ笔记”
1JVM的内存区域布局java代码的执行步骤有三点java源码文件编译器字节码文件字节码文件JVM机器码机器码系统CPU执行JVM执行的字节码需要用类加载来载入;字节码文件可以来自本地文件,可以在网络上获取,也可以实时生成。就是说你可以跳过写java代码阶段,直接生成字节码交由JVM执行其中Jav
Wesley13 Wesley13
3年前
Java程序运行机制及开发环境
Java既是编译型语言,又是解释型语言java源文件首先需要通过javac编译生成后缀名为.class的字节码文件(与平台无关,只面向JVM),然后使用Java虚拟机将字节码解释成特定平台上的机器码运行。Java虚拟机JVM不同平台上的JVM不同,但是都提供了相同的接口。开发Java准备1.下
Stella981 Stella981
3年前
KVM调整cpu和内存
一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid
Easter79 Easter79
3年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Wesley13 Wesley13
3年前
Java 虚拟机中的运行时数据区分析
本文基于JDK1.8阐述分析运行过程我们都知道Java源文件通过编译器编译后,能产生相应的.Class文件,也就是字节码文件。而字节码文件通过Java虚拟机中的解释器,编译成特定机器上的机器码。跨平台的特性!在这里插入图片描述(https://imgblog.csdnimg.c