有几种方法可以做到这一点.
首先,在"OS级别"运行的代码不需要用与OS相同的语言编写.它只需要能够与OS代码链接在一起.事实上,所有语言都可以与C互操作,这实际上就是所需要的.
语言方面,技术上没有问题.Java函数可以调用C函数,C函数可以调用Java函数.如果操作系统不是用C语言编写的(比如说,为了论证它是用C++编写的),那么OS C++代码可以调用一些中间的C代码,它们转发到Java,反之亦然.C几乎是编程的通用语言.
一旦程序编译(到本机代码),其源语言就不再相关.无论在编译之前编写源代码的语言是什么,汇编程序看起来都大致相同.只要您使用与操作系统相同的调用约定,就没有问题.
更大的问题是运行时支持.操作系统中没有很多软件服务可用.例如,通常没有Java虚拟机.(没有理由在技术上不可能,但通常,但通常,假设它不存在是安全的).
不幸的是,在其"默认"表示中,作为Java字节码,Java程序需要大量的基础结构.它需要Java VM来解释和JIT字节码,它需要类库等等.
但是有两种方法:
在内核中支持Java.这将是一个不寻常的步骤,但它可以做到.
或者将Java源代码编译为本机格式.Java程序不必编译为Java字节码.您可以将其编译为x86汇编程序.您使用的任何类库都是如此.那些也可以编译到汇编程序.当然,Java类库的某些部分需要某些不可用的OS功能,但是可以避免使用这些类.
是的,它可以做到.但这并不简单,而且不清楚你会获得什么.
当然另一个问题可能是Java不允许你访问任意内存位置,这会使很多硬件通信变得非常棘手.但也可以通过调用非常简单的C函数来解决这个问题,这些函数只是将相关的内存区域作为Java的数组返回.
有几种方法可以做到这一点.
首先,在"OS级别"运行的代码不需要用与OS相同的语言编写.它只需要能够与OS代码链接在一起.事实上,所有语言都可以与C互操作,这实际上就是所需要的.
语言方面,技术上没有问题.Java函数可以调用C函数,C函数可以调用Java函数.如果操作系统不是用C语言编写的(比如说,为了论证它是用C++编写的),那么OS C++代码可以调用一些中间的C代码,它们转发到Java,反之亦然.C几乎是编程的通用语言.
一旦程序编译(到本机代码),其源语言就不再相关.无论在编译之前编写源代码的语言是什么,汇编程序看起来都大致相同.只要您使用与操作系统相同的调用约定,就没有问题.
更大的问题是运行时支持.操作系统中没有很多软件服务可用.例如,通常没有Java虚拟机.(没有理由在技术上不可能,但通常,但通常,假设它不存在是安全的).
不幸的是,在其"默认"表示中,作为Java字节码,Java程序需要大量的基础结构.它需要Java VM来解释和JIT字节码,它需要类库等等.
但是有两种方法:
在内核中支持Java.这将是一个不寻常的步骤,但它可以做到.
或者将Java源代码编译为本机格式.Java程序不必编译为Java字节码.您可以将其编译为x86汇编程序.您使用的任何类库都是如此.那些也可以编译到汇编程序.当然,Java类库的某些部分需要某些不可用的OS功能,但是可以避免使用这些类.
是的,它可以做到.但这并不简单,而且不清楚你会获得什么.
当然另一个问题可能是Java不允许你访问任意内存位置,这会使很多硬件通信变得非常棘手.但也可以通过调用非常简单的C函数来解决这个问题,这些函数只是将相关的内存区域作为Java的数组返回.
用Java编写Solaris设备驱动程序包括用Java编写的A RAM磁盘设备.
Linux的另一个.更深入地了解为什么你可能也想要Java中的DD(因为有些人对其他帖子和评论的外观感到疑惑)