pbootcms网站模板|日韩1区2区|织梦模板||网站源码|日韩1区2区|jquery建站特效-html5模板网

是否可以用 Java 編寫設(shè)備驅(qū)動(dòng)程序?

Is it possible to code a device driver in Java?(是否可以用 Java 編寫設(shè)備驅(qū)動(dòng)程序?)
本文介紹了是否可以用 Java 編寫設(shè)備驅(qū)動(dòng)程序?的處理方法,對(duì)大家解決問題具有一定的參考價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧!

問題描述

限時(shí)送ChatGPT賬號(hào)..

我聽說過一些關(guān)于用 Java 編寫設(shè)備驅(qū)動(dòng)程序的消息(聽說是用我的耳朵"而不是從互聯(lián)網(wǎng)上聽到的)并且想知道......我一直認(rèn)為設(shè)備驅(qū)動(dòng)程序是在操作系統(tǒng)級(jí)別上運(yùn)行的,因此必須用與操作系統(tǒng)相同的語言(因此主要是 CI 假設(shè))

I heard something about writing device drivers in Java (heard as in "with my ears", not from the internet) and was wondering... I always thought device drivers operated on an operating system level and thus must be written in the same language as the OS (thus mostly C I suppose)

  1. 我一般是錯(cuò)的嗎假設(shè)?(好像是這樣)
  2. 外星人"中的司機(jī)如何操作系統(tǒng)中使用的語言?
  3. 有什么要求(來自編程語言的觀點(diǎn))無論如何都需要設(shè)備驅(qū)動(dòng)程序?

感謝閱讀

推薦答案

有幾種方法可以做到這一點(diǎn).

There are a couple of ways this can be done.

首先,在操作系統(tǒng)級(jí)別"運(yùn)行的代碼不需要使用與操作系統(tǒng)相同的語言編寫.它只需要能夠與操作系統(tǒng)代碼鏈接在一起.幾乎所有語言都可以與 C 互操作,而這正是我們所需要的.

First, code running at "OS level" does not need to be written in the same language as the OS. It merely has to be able to be linked together with OS code. Virtually all languages can interoperate with C, which is really all that's needed.

所以語言方面,技術(shù)上沒有問題.Java函數(shù)可以調(diào)用C函數(shù),C函數(shù)可以調(diào)用Java函數(shù).如果操作系統(tǒng)不是用 C 編寫的(比如說,為了論證它是用 C++ 編寫的),那么操作系統(tǒng) C++ 代碼可以調(diào)用一些中間 C 代碼,這些代碼會(huì)轉(zhuǎn)發(fā)給你的 Java,反之亦然.C 幾乎是編程的一種通用語言.

So language-wise, there is technically no problem. Java functions can call C functions, and C functions can call Java functions. And if the OS isn't written in C (let's say, for the sake of argument that it's written in C++), then the OS C++ code can call into some intermediate C code, which forwards to your Java, and vice versa. C is pretty much a lingua franca of programming.

程序一旦被編譯(編譯為本機(jī)代碼),其源語言就不再相關(guān).無論源代碼在編譯之前是用哪種語言編寫的,匯編程序看起來都差不多.只要你使用與操作系統(tǒng)相同的調(diào)用約定,就沒有問題.

Once a program has been compiled (to native code), its source language is no longer relevant. Assembler looks much the same regardless of which language the source code was written in before compilation. As long as you use the same calling convention as the OS, it's no problem.

更大的問題是運(yùn)行時(shí)支持.操作系統(tǒng)中沒有很多軟件服務(wù)可用.例如,通常沒有 Java 虛擬機(jī).(從技術(shù)上講,沒有理由不存在,但通常,但通常可以安全地假設(shè)它不存在).

A bigger problem is runtime support. Not a lot of software services are available in the OS. There usually is no Java virtual machine, for example. (There is no reason why there technically couldn't be, but usually, but usually, it's safe to assume that it's not present).

不幸的是,在其默認(rèn)"表示中,作為 Java 字節(jié)碼,Java 程序需要很多基礎(chǔ)設(shè)施.它需要Java VM來解釋和JIT字節(jié)碼,它需要類庫等等.

Unfortunately, in its "default" representation, as Java bytecode, a Java program requires a lot of infrastructure. It needs the Java VM to interpret and JIT the bytecode, and it needs the class library and so on.

但是有兩種方法可以解決這個(gè)問題:

But there are two ways around this:

  • 在內(nèi)核中支持 Java.這將是一個(gè)不尋常的步驟,但可以做到.
  • 或者將您的 Java 源代碼編譯為本機(jī)格式.Java 程序不必編譯為 Java 字節(jié)碼.您可以將其編譯為 x86 匯編程序.這同樣適用于您使用的任何類庫.這些也可以一直編譯到匯編程序.當(dāng)然,部分 Java 類庫需要某些不可用的操作系統(tǒng)功能,但可以避免使用這些類.

所以是的,這是可以做到的.但這并不簡單,也不清楚你會(huì)得到什么.

So yes, it can be done. But it's not straightforward, and it's unclear what you'd gain.

當(dāng)然,另一個(gè)問題可能是 Java 不允許您訪問任意內(nèi)存位置,這會(huì)使很多硬件通信變得非常棘手.但這也可以解決,也許可以通過調(diào)用非常簡單的 C 函數(shù)來簡單地將相關(guān)的內(nèi)存區(qū)域作為數(shù)組返回,供 Java 處理.

Of course another problem may be that Java won't let you access arbitrary memory locations, which would make a lot of hardware communication pretty tricky. But that could be worked around too, perhaps by calling into very simple C functions which simply return the relevant memory areas as arrays for Java to work on.

這篇關(guān)于是否可以用 Java 編寫設(shè)備驅(qū)動(dòng)程序?的文章就介紹到這了,希望我們推薦的答案對(duì)大家有所幫助,也希望大家多多支持html5模板網(wǎng)!

【網(wǎng)站聲明】本站部分內(nèi)容來源于互聯(lián)網(wǎng),旨在幫助大家更快的解決問題,如果有圖片或者內(nèi)容侵犯了您的權(quán)益,請(qǐng)聯(lián)系我們刪除處理,感謝您的支持!

相關(guān)文檔推薦

Parsing an ISO 8601 string local date-time as if in UTC(解析 ISO 8601 字符串本地日期時(shí)間,就像在 UTC 中一樣)
How to convert Gregorian string to Gregorian Calendar?(如何將公歷字符串轉(zhuǎn)換為公歷?)
Java: What/where are the maximum and minimum values of a GregorianCalendar?(Java:GregorianCalendar 的最大值和最小值是什么/在哪里?)
Calendar to Date conversion for dates before 15 Oct 1582. Gregorian to Julian calendar switch(1582 年 10 月 15 日之前日期的日歷到日期轉(zhuǎn)換.公歷到儒略歷切換)
java Calendar setFirstDayOfWeek not working(java日歷setFirstDayOfWeek不起作用)
Java: getting current Day of the Week value(Java:獲取當(dāng)前星期幾的值)
主站蜘蛛池模板: 禹城彩钢厂_钢结构板房_彩钢复合板-禹城泰瑞彩钢复合板加工厂 | 安徽净化板_合肥岩棉板厂家_玻镁板厂家_安徽科艺美洁净科技有限公司 | 体视显微镜_荧光生物显微镜_显微镜报价-微仪光电生命科学显微镜有限公司 | 北京律师事务所_房屋拆迁律师_24小时免费法律咨询_云合专业律师网 | 滤芯,过滤器,滤油机,贺德克滤芯,精密滤芯_新乡市宇清流体净化技术有限公司 | 爆破器材运输车|烟花爆竹运输车|1-9类危险品厢式运输车|湖北江南专用特种汽车有限公司 | 水厂自动化|污水处理中控系统|水利信息化|智慧水务|智慧农业-山东德艾自动化科技有限公司 | 铝合金电阻-无源谐波滤波器-上海稳达电讯设备厂| 橡胶粉碎机_橡胶磨粉机_轮胎粉碎机_轮胎磨粉机-河南鼎聚重工机械制造有限公司 | 商标转让-购买商标专业|放心的商标交易网-蜀易标商标网 | 合肥活动房_安徽活动板房_集成打包箱房厂家-安徽玉强钢结构集成房屋有限公司 | PU树脂_水性聚氨酯树脂_聚氨酯固化剂_聚氨酯树脂厂家_宝景化工 | 一体式钢筋扫描仪-楼板测厚仪-裂缝检测仪-泰仕特(北京) | 洛阳永磁工业大吊扇研发生产-工厂通风降温解决方案提供商-中实洛阳环境科技有限公司 | 丙烷/液氧/液氮气化器,丙烷/液氧/液氮汽化器-无锡舍勒能源科技有限公司 | 新中天检测有限公司青岛分公司-山东|菏泽|济南|潍坊|泰安防雷检测验收 | 北京网站建设-企业网站建设-建站公司-做网站-北京良言多米网络公司 | 华禹护栏|锌钢护栏_阳台护栏_护栏厂家-华禹专注阳台护栏、楼梯栏杆、百叶窗、空调架、基坑护栏、道路护栏等锌钢护栏产品的生产销售。 | 政府园区专业委托招商平台_助力企业选址项目快速落地_东方龙商务集团 | 安全,主动,被动,柔性,山体滑坡,sns,钢丝绳,边坡,防护网,护栏网,围栏,栏杆,栅栏,厂家 - 护栏网防护网生产厂家 | 银川美容培训-美睫美甲培训-彩妆纹绣培训-新娘化妆-学化妆-宁夏倍莱妮职业技能培训学校有限公司 临时厕所租赁_玻璃钢厕所租赁_蹲式|坐式厕所出租-北京慧海通 | 热风机_工业热风机生产厂家上海冠顶公司提供专业热风机图片价格实惠 | DNA亲子鉴定_DNA基因检测中心官方预约平台-严选好基因网 | 防爆正压柜厂家_防爆配电箱_防爆控制箱_防爆空调_-盛通防爆 | 色油机-色母机-失重|称重式混料机-称重机-米重机-拌料机-[东莞同锐机械]精密计量科技制造商 | 气动隔膜泵-电动隔膜泵-循环热水泵-液下排污/螺杆/管道/化工泵「厂家」浙江绿邦 | 渣油泵,KCB齿轮泵,不锈钢齿轮泵,重油泵,煤焦油泵,泊头市泰邦泵阀制造有限公司 | 珠宝展柜-玻璃精品展柜-首饰珠宝展示柜定制-鸿钛展柜厂家 | 楼承板-钢筋楼承板-闭口楼承板-无锡优贝斯楼承板厂 | 石家庄救护车出租_重症转院_跨省跨境医疗转送_活动赛事医疗保障_康复出院_放弃治疗_腾康26年医疗护送转诊团队 | 新中天检测有限公司青岛分公司-山东|菏泽|济南|潍坊|泰安防雷检测验收 | 密集架-手摇-智能-移动-价格_内蒙古档案密集架生产厂家 | 邢台人才网_邢台招聘网_邢台123招聘【智达人才网】 | 莱州网络公司|莱州网站建设|莱州网站优化|莱州阿里巴巴-莱州唯佳网络科技有限公司 | 档案密集架,移动密集架,手摇式密集架,吉林档案密集架-厂家直销★价格公道★质量保证 | 华溶溶出仪-Memmert稳定箱-上海协烁仪器科技有限公司 | 石家庄装修设计_室内家装设计_别墅装饰装修公司-石家庄金舍装饰官网 | 防爆电机生产厂家,YBK3电动机,YBX3系列防爆电机,YBX4节防爆电机--河南省南洋防爆电机有限公司 | Boden齿轮油泵-ketai齿轮泵-yuken油研-无锡新立液压有限公司 | 哲力实业_专注汽车涂料汽车漆研发生产_汽车漆|修补油漆品牌厂家 长沙一级消防工程公司_智能化弱电_机电安装_亮化工程专业施工承包_湖南公共安全工程有限公司 | 山东聚盛新型材料有限公司-纳米防腐隔热彩铝板和纳米防腐隔热板以及钛锡板、PVDF氟膜板供应商 |