您现在的位置是: 首页 > 数码科技咨询 数码科技咨询
java调用硬件_ja 调用
tamoadmin 2024-08-18 人已围观
简介1.ja如何获取Linux操作系统下的硬件信息2.什么语言能直接控制硬件? C/C++吗?本人做ja的。如果要做一个让计算机接受外部传感器(比如摄像机 ,3.ja功能是硬件还是软件?目前技术来看,ja做应用比较好,也可以做,不过比较麻烦,从ja的各种框架可以看出,ja越来越多的把人们从底层解脱出来,只是关注逻辑的实现,就目前技术来来看,硬件编程还没有发生什么重大技术革命,也许有好的方法,目前还不明
1.ja如何获取Linux操作系统下的硬件信息
2.什么语言能直接控制硬件? C/C++吗?本人做ja的。如果要做一个让计算机接受外部传感器(比如摄像机 ,
3.ja功能是硬件还是软件?
目前技术来看,ja做应用比较好,也可以做,不过比较麻烦,从ja的各种框架可以看出,ja越来越多的把人们从底层解脱出来,只是关注逻辑的实现,就目前技术来来看,硬件编程还没有发生什么重大技术革命,也许有好的方法,目前还不明显。仅供参考
ja如何获取Linux操作系统下的硬件信息
这个是由于历史的原因导致的。
第一,Ja是以C++为蓝本,设置类库概念,以虚拟机增加移植性而出现的语言。它抢走了不少C++程序员,所以被C++程序员亲切地称C+++(表示C++升级版),也有人认为是对C++的一种简化(简化语言,增加类库)所以称之为C++-。由此引发一场关系,微软认为其侵权状告SUN公司,但官司输了。
第二,微软发虚拟机与类库概念确实是语言上的一个进步,于是开发C#语言,其实就是C++++,但内定版本叫Ja+,试图抢回C++程序员。结果被SUN公司告了,结果官司又是微软输了!
微软出现了断代,微软有C语言,C+语言(这个知道的人少,只流行了一年时间),C++语言及C#语言。但确实没有存在过C+++语言。加上微软的输掉三场官司(微软为报复第二次输入的官司,从IE中将网景的Applet去掉了,网景被SUN公司收购,所以SUN公司又告了微软),所以这一点上微软就失了阵势。
Ja早期存在不少C++转行的大牛,而虽然Ja与C#入门门槛都低,但早期有大牛撑着门面,被恶意宣传导致不少人认为C#中已无能人。
再者Ja入门门槛低,但C#入门门槛更低,曾一句说三个月学会Ja,两个月可以学会C#(.NET)。所以基于以上几点,导致不少人认为.NET中无高手。
.net为了易用性做了很大的努力,就是增加十分庞大的反射机制(Reflect),而这一点在Ja较为薄弱,但同时引入的一个性能问题(虽然是同一级别上,但性能却实没有原生的Ja性能高)。所以Ja将反射机制引发的性能问题尽量放大,进而对.net进行嘲讽。但这一问题.net却无可反驳——因为他的自豪就是这个反射!
本身易用性与性能,性能与空间就是相互交换的,易用性与性能方面的平衡点只是不同公司的不同理解而已(Ja程序员富有攻击性)。
那么事实呢?
我看过ja/php/.net三本入门经典的书,每本书都说明自己的性能是第一,关键在于各自都是在各自原生平台上进行的对比。这显然不公平——.net把ja部署到windows下的weblogic上,而Ja那本书却把.net部署到了linux上,这种情况对比确实没有多大意义的。
但有一点对于性能来说,确实Ja>.NET>PHP(至少PHP上说PHP>Ja>.NET,Ja上说Ja>.NET>PHP,.net书上说.NET>Ja>PHP),但是对于一门语言上来性能并不评判语言好坏的唯一标准。怕是三者都比不了C++吧?
对于移植性上来说Ja最好,.NET只是在windows上转圈圈上(这个与微软输掉的官司有关)。而PHP就是一个网页语言而已,拿他做桌面应用程序绝非他的所长。
从易用性上来说,.Net入门门槛较低,Ja次之,而PHP的学习难度也不算太大。
由于移植性与反射的原因,.NET应用软件的平台调用相当好,而Ja这部分怕是只是呵呵了。Ja调用的硬件一般是专门为Ja开发的SDK,而.NET在没有SDK的情况下还可以使用PInvoke调用,这得益于.net只在windows上移植性有关(移植性确实不如Ja,而Ja对于硬件更加抽象,以致于其没有平台调用的可能性)
从开源上来说,Ja的开源非常多,而.net近几年来开源增速也非常快,但由于其起步晚其开源与Ja相比确实很大。正因为如此造成两门语言的编程惯性——Ja程序员喜欢到开源中抄来一段,而.NET根据技术去了解不同的类库自己开发。.NET反驳Ja的原因是嘲讽其反射机制太差以及程序员喜欢抄来抄去(找段功能够用的就凑),没有自己的编程思想。换句话来说,.NET类库支持非常强大,而Ja的开源牛B哄哄。
从编译器上来说,Ja因开源,所以编程工具百家齐放,而.net因其封闭,编程工具一家独大。话说微软经常喜欢自己订一些个标准,不太遵从其他标识,比如IL明明有标准,微软还要搞个MSIL。等等,微软确实是老大,总是做一些不守规据的事儿来。
比较一下高手,其实Ja的编程高手(构架师除外,不少早期Ja程序员已经混上构架师等职了,所以对Ja存在或多或少的偏护)基本上不多了,但.NET的高手也并不多,这是因为入门门槛太低,对于具象知识理解还行,抽象的东西理解太差,所以导致高手也并不多。但.NET的高手却越来越比Ja多。(目前语言使用率上Ja还高于C#,至于原因,一是编程习惯,二是基数问题——本身Ja基数就较多,三是早期程序员对Ja的偏护)。
为什么这么说呢(不少.net程序员都觉得自己是高手,但其实能力还不到高程),先从语言层面来看,Ja的类型有两种值类型与引用类型,.NET却还存在第三种指针类型,这个多用于非安全代码使用,为的是提高性能(如果真与Ja拼性能,使用非安全编程时,Ja想干过.net性能只是一个梦),损失了移植性与反制机制,这玩意虽然比C++简单些,但毕竟不是想入门就入门的,一些号称高手的应用程序员怕是连个听都没听过吧!
所以有句话“.net两月入门,Ja三个月入门,Ja有好老师带着三年能学精通,.net找个好老师带着五年未必学精”,我都不知道那些号称自己.net中上游的程序员连IIS的19个都不知道,哪来的自信!一句话来说.net所涵盖的内容不只是比Ja多了一点两点!比深度,.net比Ja深的太多了,可惜的是因为尝试较深,会的人不是很多!
哪里有高手,怕是一目了然了!
资料可比性,Ja因为程序员基数大,所以翻译的学习资料较多,而C#却要晚很多或者翻译的较少,所以资料上由于推崇的原因,Ja相对多一些。所以对于不少微软的东西会些洋文的必要性还是很大的,否则就跟着大伙人云亦云吧。
我从来只是Ja程序员只是笑笑,他们那么天生俱来的优越感是多么的阿Q精神啊。拿大型网站数量,总体网站数据来说事——那么桌面应用呢,只能拿手机软件来玩点优越感了吧?换句话来说Linux由于其开源的原因,在服务器市场还是比较大的,但对于桌面市场来说,linux还只能算是少数民族!这也正是为什么Ja网站多的原因,同时由于安全原因(linux毕竟是小众,攻击没有windows的多)所以不少大型网站也选用Ja的原因,基于这个原因分析,JSP盛行是有它的根源原因的,所以Ja喜欢比的就是网站数量与手机软件,事实上对于应用程序来说,linux桌面应用却基本上还是C/C++的天下,而window基本上现在安装个软件都要求你先安装netfx4了!
然后Ja喜欢说的是某某银行的指纹就是Ja,这个吧我也只是笑笑,因为他们看到只是银行的一个网站,网站而已——其实核心系统很多银行还是C++,后来内部使用混合架构,各系统之间的联系(模块)等基本上是linux与Windows均半(精明的银行家怎么可能把鸡蛋放到一个篮子里呢,他们也不会把信任放到一个篮子里),所以基本上来说Ja除了对外的网页来说,还真没有多大优势(碰巧我在银行工作过)。不过老实说,不少银行在面向用户或业务的页面确实选用Linux+JSP的方式,这样至少能少下一大笔钱,包含操作系统费用、维护费用、团队成员费用(他们也会考虑谁的程序员多),并非因为Ja有多先进,这个因素怕是根本不在他们考虑的范畴内!用这个说明不了Ja的优势(当然开发工具上的优势,Visual Studio还需要花钱的),而银行内部的任务(跑批,批量任务等等)基本上全是NT服务与NT服务器相配合。虽然性能低些,但J2EE在内部并没有多大延伸。
所以呢,Ja与NET之间的争论不休只是处于一种偏见,Ja程序员的偏见更重一些,他们一直想为什么会有.NET的存在呢?而.NET程序员只是在应用Ja的攻击,再加上.NET程序员确实很多时候不给力——他们毕竟习惯于类库开发,但又对自身语言的认识不足,出现N多大空(没有开源供他们抄时,谎言很容易被揭穿的),所以包括用人单位都对.NET存在一些偏见,几乎是基于系统(service系统存在虽有Core版但诸多人不会,也没有学习的环境),桌面程序一直拖着后腿,且付费高昂等等原因,基于语言,开源帮助下,Ja程序员的富有攻击性(早期生存的一个能力吧,不然当初谁愿意用Ja)等等导致.NET一直偏于弱势。
我设一下,service系统部分性免费或达到linux server版本相对收费价格,IDE开源不收费,或不保留起诉盗版软件的权利,如果这样都公平了,不知道现在还有Ja什么事?
注:我对Ja也不十分了解,在选语言时读过三个月的Ja转入.NET的,工作中由于Ja方面的博客较多,经常性看一些Ja的编程思想(如多线程模式之类的,Ja总喜欢写Ja多线程模式,其实.NET支持的也相当好),所以以上部分有错误解理的可以讨论,但从没后悔过自己选择了.net。至少当前个人认为JSP网页部分只是多的优势——但这种优势并非是Ja语言本身的优势,而且在庞大的桌面应用程序面前,Ja的用武之地极其有限的,这也是我选择.NET的原因,我接受.NET的性能损失,自豪反射机制,接受其移植性,自豪其平台调用性...总之选择.net的原因个人还是认为十分客观的。
什么语言能直接控制硬件? C/C++吗?本人做ja的。如果要做一个让计算机接受外部传感器(比如摄像机 ,
引入包:
import ja.net.InetAddress;
import ja.net.UnknownHostException;
import ja.util.Map;
import ja.util.Properties;
import org.hyperic.sigar.CpuInfo;
import org.hyperic.sigar.CpuPerc;
import org.hyperic.sigar.FileSystem;
import org.hyperic.sigar.FileSystemUsage;
import org.hyperic.sigar.Mem;
import org.hyperic.sigar.NetFlags;
import org.hyperic.sigar.NetInterfaceConfig;
import org.hyperic.sigar.NetInterfaceStat;
import org.hyperic.sigar.OperatingSystem;
import org.hyperic.sigar.Sigar;
import org.hyperic.sigar.SigarException;
import org.hyperic.sigar.Swap;
import org.hyperic.sigar.Who;
代码太长 了,不给贴出来。相关的代码太多了,github一抓一大把。
ja功能是硬件还是软件?
是否能够直接访问硬件接口,关键是语言对应的实现和体系结构,而不是语言本身。
现在硬件提供的高级语言接口以及宿主操作系统(若有的话)基本都是基于C/C++的,而Ja的实现一般需要背着一个庞大的运行时环境。如果能用Ja实现操作系统或者相关接口,再让硬件厂商支持,那么至少理论上是可能的。当然,现实是不合算。
归结到语言的原因主要有两点:
1.抽象、实现的复杂性和性能问题。Ja在这方面的抽象能力实在太弱了点——比如没有指针算术,没有内建显式内存分配和释放,没有能力直接映射确定地址空间的内存,不能直接支持处理机的调用约定等,会导致使用起来的不便。运行时的实现原理和复杂性制约性能的发挥。而C++其实也需要一些运行时来支持异常和RTTI,虽然禁用这些特性,把C++当C用,可以不太受影响。
2.习惯和旧的项目。因为传统,硬件厂商的接口主要是C/汇编,再次才是C++。(这也能说明为什么即便C++能当作C来用,C在这个领域明显更主流。)
ISO C/C++允许没有操作系统支持的独立实现(freestanding implementation)。在这类环境中,硬件提供的接口可以包装为设备的控制寄存器、I/O寄存器等专用存储的状态,映射至volatile限定类型的对象中,使用volatile指针访问(诸如(volatile unsigned int*)0x12345678)。通过读写这些对象,被操作的设备就可以和主存或特定设备内存硬件共享存储的内容或发送/接受控制信息。之后这些保持的这些状态由设备中的控制芯片等按需进行一系列处理(如编解码、计算电机转速之类),最终转换为特定的电平信号,用于控制各种设备中各个部件的行为:接通或关闭电源、接受传感器信号、打开无线电、驱动伺服电路等。
在有操作系统支持的宿主实现(hosted implementation)中,操作系统一般会提供硬件抽象层(HAL)来对上述接口进行若干公共的抽象和封装,并在此基础上提供自身的API供厂商编写驱动程序。这样的好处很明显,能复用某些设备控制程序的底层实现(例如做成动态库)以便于分发和维护,并能一定程度上保证驱动程序之间以及和操作系统其它部分相互隔离(这样驱动程序bug时系统宕机危险比独立实现的可能小一点,当然因为往往特权等级过高还是比一般程序危险)。具体的接口视具体的系统而定,如POSIX系统的ioctl系统调用、Windows DDK提供的NT内核驱动和WDM驱动API等。
一般来说,上面硬件部分、某些最底层的接口和专用的驱动程序是硬件厂商自己做的,HAL、驱动开发框架和某些通用的设备驱动程序是操作系统厂商提供的,这些基本上用的都是C/C++。剩下的逻辑则全部是上层的应用开发者实现的,只要能调用到底层提供的API,不限于C/C++,Ja或者C#什么的都没问题。
软件
JAVA是一种编程语言
硬件是指看的见的东西,电脑硬件指令很简单,只有0和1,也就是开关量
也有其它意思,如:一个人跑步快是因为穿的好鞋子,就说他的硬件好
软件是指看不见的东西,电脑软件功能强大,可以模拟硬件,也可以控制硬件
当然也有其它意思。如:工作中有人工作好,就说他软件好
下一篇:佳能r5_佳能r5相机参数