JAVA跨平台原理(图文详述版)

在说明原理之前,我们先引用一个概念作解释。

首先,JAVA编程语言属于高级编程语言,而高级编程语言的编译运行方式有三种

编写,编译,运行

编写是指程序工作者手动编写的源代码文件

比如java程序员编写的文件一定是以“.java”为后缀的。

编译是指程序工作者编写的源代码文件转化成机器认识的机器语言的过程。

运行是指通过编译后,让机器执行编译后的指令。

高级语言的编译方式也分为三种:(如下图)

编译型的代表语言就是我们大家所熟知的:C/C++语言

C/C++的编译首先通过手机或电脑两种平台编译器进行整体翻译,比如手机的平台编译器是Arm编译器,而电脑的平台编译器是X86编译器。经过平台整体翻译后,会得到一个二进制的机器指令,然后在手机或电脑上运行。

但即使C语言经过平台编译器后,就算是同样的电脑平台编译,也会由于不同的计算机硬件和操作系统不同,而产生兼容性问题

所以针对不同类型的硬件和操作系统,C语言的源代码都需要重新根据实际进行编写。

毫不夸张的说,就算是同类型操作系统,但由于计算机硬件不同,也很容易造成无法运行的问题。

所以C语言不是跨平台的语言!

解释型的代表语言是Python语言

Python的编译运行方式和C语言类似,手机的平台通过Arm平台编译器,电脑的平台通过X86编译器。但Python语言不是直接全部进行编译转换,而是一行代码一行代码的翻译转换

Python在编译后不会生成一个新的文件,运行的方式是直接通过运行的设备进行,所以Python语言是天生的开源语言

接下来就是我们要介绍的JAVA语言

混合型(编译+解释)的代表则是JAVA语言

JAVA源代码文件首先编译成后缀名是“.class”的二进制文件(也称字节码文件),然后同样,手机对应的平台编译器是Arm架构,电脑平台对应的平台编译器是X86架构。

(X86追求性能最优,缺点是功耗大,不节能(和ARM对比)。)

(ARM追求低功耗(节能),缺点是采用精简指令集,导致编译器处理复杂,因此性能相对X86差。)

但JAVA字节码文件并不是直接交给相对的设备去运行的,而是交给了在操作系统下的设备的虚拟机(英文简称JVM)中。(注意:字节码文件只面向虚拟机,不具备面向平台能力。尽管由于操作系统不同导致的所对应的虚拟机也不同,但是这些不同的虚拟机都提供了相同的接口

在不同的操作系统中对应着不同的虚拟机,而JAVA字节码文件都可以通过在对应不同操作系统的虚拟机中进行编译,以常见的三个操作系统Windows,Mac,Linux来说明:(如下图)

上图中我们可以看到,JAVA源文件只是编写了一次,就可以在不同平台上进行编译然后运行。

只需要我们在对应的平台安装JAVA提供的对应的虚拟机即可。

正是这一特性,也引出了当时形容JAVA语言的口号:

Write Once, Run Anywhere(一次编写,到处运行)”。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Java中发送钉钉消息,可以通过使用钉钉开放平台提供的API来实现。具体步骤如下: 1. 首先,你需要在钉钉开放平台上创建一个机器人,获得机器人的Webhook URL。Webhook URL是用于接收和发送钉钉消息的地址。 2. 在Java项目中使用HttpClient或者其他相关的HTTP库发送HTTP POST请求,将消息以JSON格式发送给钉钉机器人的Webhook URL。向Webhook URL发送的消息一般包括以下信息: - "msgtype"字段,表示消息类型为图文消息。 - "link"字段,包括图文消息的标题、消息内容、消息封面图片等信息。 下面是一个使用HttpClient发送钉钉图文消息的示例代码: ```java import org.apache.http.HttpEntity; import org.apache.http.client.methods.HttpPost; import org.apache.http.entity.ContentType; import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import java.io.IOException; public class DingTalkMessageSender { private static final String WEBHOOK_URL = "your_webhook_url"; public static void sendNewsMessage() throws IOException { CloseableHttpClient httpClient = HttpClients.createDefault(); HttpPost httpPost = new HttpPost(WEBHOOK_URL); // 构建图文消息的JSON字符串 String messageJSON = "{\"msgtype\":\"link\",\"link\":{\"title\":\"图文消息标题\",\"text\":\"图文消息内容\",\"picUrl\":\"图片地址\",\"messageUrl\":\"消息点击跳转链接\"}}"; // 设置请求header httpPost.addHeader("Content-Type", "application/json; charset=utf-8"); // 设置请求内容 HttpEntity httpEntity = new StringEntity(messageJSON, ContentType.APPLICATION_JSON); httpPost.setEntity(httpEntity); // 发送请求 httpClient.execute(httpPost); } public static void main(String[] args) { try { sendNewsMessage(); } catch (IOException e) { e.printStackTrace(); } } } ``` 上述代码中,你需要将`your_webhook_url`替换成你钉钉机器人的Webhook URL,然后调用`sendNewsMessage`方法即可发送图文消息。 这样,你就可以在Java中使用钉钉的API发送图文消息了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值