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

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

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

問題描述

限時(shí)送ChatGPT賬號..

我聽說過一些關(guān)于用 Java 編寫設(shè)備驅(qū)動程序的消息(聽說是用我的耳朵"而不是從互聯(lián)網(wǎng)上聽到的)并且想知道......我一直認(rèn)為設(shè)備驅(qū)動程序是在操作系統(tǒng)級別上運(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ū)動程序?

感謝閱讀

推薦答案

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

There are a couple of ways this can be done.

首先,在操作系統(tǒng)級別"運(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 代碼,這些代碼會轉(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)功能,但可以避免使用這些類.

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

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)存位置,這會使很多硬件通信變得非常棘手.但這也可以解決,也許可以通過調(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ū)動程序?的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網(wǎng)!

【網(wǎng)站聲明】本站部分內(nèi)容來源于互聯(lián)網(wǎng),旨在幫助大家更快的解決問題,如果有圖片或者內(nèi)容侵犯了您的權(quán)益,請聯(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)前星期幾的值)
主站蜘蛛池模板: 掺铥光纤放大器-C/L波段光纤放大器-小信号光纤放大器-合肥脉锐光电技术有限公司 | 深圳市索富通实业有限公司-可燃气体报警器 | 可燃气体探测器 | 气体检测仪 | 智能垃圾箱|垃圾房|垃圾分类亭|垃圾分类箱专业生产厂家定做-宿迁市传宇环保设备有限公司 | 老房子翻新装修,旧房墙面翻新,房屋防水补漏,厨房卫生间改造,室内装潢装修公司 - 一修房屋快修官网 | WF2户外三防照明配电箱-BXD8050防爆防腐配电箱-浙江沃川防爆电气有限公司 | 环压强度试验机-拉链拉力试验机-上海倾技仪器仪表科技有限公司 | 欧美日韩国产一区二区三区不_久久久久国产精品无码不卡_亚洲欧洲美洲无码精品AV_精品一区美女视频_日韩黄色性爱一级视频_日本五十路人妻斩_国产99视频免费精品是看4_亚洲中文字幕无码一二三四区_国产小萍萍挤奶喷奶水_亚洲另类精品无码在线一区 | Dataforth隔离信号调理模块-信号放大模块-加速度振动传感器-北京康泰电子有限公司 | 辽宁资质代办_辽宁建筑资质办理_辽宁建筑资质延期升级_辽宁中杭资质代办 | 低气压试验箱_高低温低气压试验箱_低气压实验箱 |林频试验设备品牌 | 车件|铜件|车削件|车床加工|五金冲压件-PIN针,精密车件定制专业厂商【东莞品晔】 | 直流电能表-充电桩电能表-导轨式电能表-智能电能表-浙江科为电气有限公司 | 儋州在线-儋州招聘找工作、找房子、找对象,儋州综合生活信息门户! | 学校用栓剂模,玻璃瓶轧盖钳,小型安瓿熔封机,实验室安瓿熔封机-长沙中亚制药设备有限公司 | Brotu | 关注AI,Web3.0,VR/AR,GPT,元宇宙区块链数字产业 | 英国公司注册-新加坡公司注册-香港公司开户-离岸公司账户-杭州商标注册-杭州优创企业 | PCB厂|线路板厂|深圳线路板厂|软硬结合板厂|电路板生产厂家|线路板|深圳电路板厂家|铝基板厂家|深联电路-专业生产PCB研发制造 | 壹作文_中小学生优秀满分作文大全 | RS系列电阻器,RK_RJ启动调整电阻器,RQ_RZ电阻器-上海永上电器有限公司 | PC阳光板-PC耐力板-阳光板雨棚-耐力板雨棚,厂家定制[优尼科板材] | 玻纤土工格栅_钢塑格栅_PP焊接_单双向塑料土工格栅_复合防裂布厂家_山东大庚工程材料科技有限公司 | 济南冷库安装-山东冷库设计|建造|冷库维修-山东齐雪制冷设备有限公司 | 儿童乐园|游乐场|淘气堡招商加盟|室内儿童游乐园配套设备|生产厂家|开心哈乐儿童乐园 | 杭州实验室尾气处理_实验台_实验室家具_杭州秋叶实验设备有限公司 | 喷码机,激光喷码打码机,鸡蛋打码机,手持打码机,自动喷码机,一物一码防伪溯源-恒欣瑞达有限公司 | 老房子翻新装修,旧房墙面翻新,房屋防水补漏,厨房卫生间改造,室内装潢装修公司 - 一修房屋快修官网 | 热回收盐水机组-反应釜冷水机组-高低温冷水机组-北京蓝海神骏科技有限公司 | 无尘烘箱_洁净烤箱_真空无氧烤箱_半导体烤箱_电子防潮柜-深圳市怡和兴机电 | 东莞办公家具厂家直销-美鑫【免费3D效果图】全国办公桌/会议桌定制 | 电磁铁_小型推拉电磁铁_电磁阀厂家-深圳市宗泰电机有限公司 | 软文推广发布平台_新闻稿件自助发布_媒体邀约-澜媒宝 | 房屋质量检测-厂房抗震鉴定-玻璃幕墙检测-房屋安全鉴定机构 | 全屋整木定制-橱柜,家具定制-四川峨眉山龙马木业有限公司 | 武汉森源蓝天环境科技工程有限公司-为环境污染治理提供协同解决方案 | 油罐车_加油机_加油卷盘_加油机卷盘_罐车人孔盖_各类球阀_海底阀等车用配件厂家-湖北华特专用设备有限公司 | KBX-220倾斜开关|KBW-220P/L跑偏开关|拉绳开关|DHJY-I隔爆打滑开关|溜槽堵塞开关|欠速开关|声光报警器-山东卓信有限公司 | 华东师范大学在职研究生招生网_在职研究生招生联展网 | 光伏支架成型设备-光伏钢边框设备-光伏设备厂家| 废气处理设备-工业除尘器-RTO-RCO-蓄热式焚烧炉厂家-江苏天达环保设备有限公司 | 首页|专注深圳注册公司,代理记账报税,注册商标代理,工商变更,企业400电话等企业一站式服务-慧用心 | 聚氨酯催化剂K15,延迟催化剂SA-1,叔胺延迟催化剂,DBU,二甲基哌嗪,催化剂TMR-2,-聚氨酯催化剂生产厂家 |