java如何调用驱动程序_可以用Java编写设备驱动程序吗?

有几种方法可以做到这一点。

首先,以“OS级别”运行的代码不需要与操作系统相同的语言编写。它只需要能够与OS代码链接在一起。几乎所有的语言都可以与C进行互操作,这真的是所有需要的。

所以在语言方面,技术上没有问题。 Java函数可以调用C函数,C函数可以调用Java函数。如果操作系统不是用C编写的(就是说,为了C语言编写的参数,OS C代码可以调用一些中间的C代码,它们转发到你的Java,反之亦然。 C几乎是编程的通用语言。

一旦程序被编译(本地代码),它的源语言就不再相关了。无论编译之前编写源代码是哪种语言,汇编程序看起来都是一样的。只要您使用与操作系统相同的调用约定,这没有问题。

更大的问题是运行时支持。 OS中没有很多软件服务可用。通常没有Java虚拟机,例如。 (没有理由在技术上不能,但通常,但通常,它是安全的,假设它不存在)。

不幸的是,在其“默认”表示中,作为Java字节码,Java程序需要大量的基础设施。它需要Java VM来解释和JIT字节码,它需要类库等等。

但有两种方法:

>在内核中支持Java。这将是一个不寻常的一步,但可以做到。

>或者将Java源代码编译成本机格式。 Java程序不必编译为Java字节码。您可以将其编译为x86汇编程序。同样适用于您使用的任何类库。那些也可以编译成汇编程序。当然,Java类库的一部分需要一些不可用的操作系统功能,但是可以避免使用这些类。

所以是的,可以做到。但是这并不简单,你不知道你会获得什么。

当然另一个问题可能是Java不会让你访问任意的内存位置,这会使很多硬件通信很棘手。但是也可以通过调用非常简单的C函数来简单地返回相关的内存区域作为Java的数组。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值