大家好,今天小编关注到一个比较有意思的话题,就是关于java语言编辑单片机的问题,于是小编就整理了2个相关介绍Java语言编辑单片机的解答,让我们一起看看吧。
如果有配套的编译器,JAVA语言可不可以编写单片机程序呢?
说的对,只要你愿意理论上什么语言都可以进行单片机编程!呵呵,只要你学过编译器原理这个问题就很简单,当然你一定要对CPU指令集指令集有所研究,通过编译器编译出对应指令集的指令就可以了,在简单的说只要J***a编译器能把源代码编译成对应单片机的指令集,就可以使用J***a编程语言进行单片机编程!喜欢的读者可关注”嘿咪编程专家”与我私信活留言
事实上,目前的J***a语言没有办法运行在单片机上。J***a语言不是一种编译型语言,是一种字节码解释型语言。J***a代码的运行除了需要一个J***a虚拟机,还需要一大堆相关的基本库。以arm处理器为例,arm 32位版本的J***a虚拟机运行时占用内存空间为190M字节,基本库和你的代码运行空间还不包括在内。如果一个处理器被称为单片机,内存一般以KB计算,有些高级单片机有1M或2M内存已经不得了了。这里内存容量是指RAM,不是闪存。这个评估还是把单片机字长,操作系统,指令系统给忽略的情况下做出的。说到J***a的本质,就是运行在哪里,就要把编译器安装到哪里的累赘语言。此外,由于J***a使用了动态内存自动回收机制,使得这种语言不可能应用于***紧缺型处理器。
J***a最初设计的初衷是通过网络来微波炉等单片机设备做演示,所以当初设计成跨平台,并发展出了j2se、j2me、applet以及后面的j2ee,j2me就是移动端的方案,也就是为单片机准备的,现在官方网站应该还有单片机版本的虚拟机环境下载,J***a发展的今天表面看只有j2se和j2ee,其实Android系统就是J***a的单片机方案,google把sun公司的J***a班底挖过去重构的,但是Google给他换了个名,在官方场合是不承认这是J***a扩展的!
用J***A做单片机程序不但不可行而且没有必要。
单片机是最简洁的计算机。单片机程序写在内存中由CPU直接读取执行。而手机和个人电脑则需要从文件系统中将程序读到内存中再执行。J***A程序要更复杂一些,需要先编译成字节码,在执行的时候由不同操作系统上的虚拟机,根据所在系统的指令集进行实时编译之后再执行的。J***A不能脱离操作系统。
可是单片机上没有也不需要操作系统,根本不具备J***A程序的运行条件。尽管理论上可以对J***A程序静态编译后写到单片机上再执行。但这么做了J***A程序的很多特性都失去了意义,还不如直接用C语言写出来即简单又有效率。
是的,如果你能做出像gcj那样的编译器,绝对可以!但是可能会限制一些动态特性,比如动态加载类,比如反射,比如包的扫描。。。所以需要虚拟机运行时支持的特性都不能用!
有人说C、C++、j***a、python编程语言都是高级语言,为什么只有C和C++可以编写单片机程序?
从内存方面简单说说C/J***a/Python的区别,不全面,还请谅解。
首先,单片机上有用J***a, Python编写程序的。但这不是主流,而且也不是标准J***a, Python。而C在单片机上已经普及了最新的C11标准。
这两者的区别主要有两点:
C/C++程序内存由代码自己管理:程序在运行状态的内存占用和分配延迟是可预期的
J***a/Python程序内存由运行时系统进行动态分配和垃圾收集:程序在运行状态的内存占用和分配延迟是不可预期的
小结一下:
C运行时系统占用RAM和ROM都很小(KB级);而J***a/Python运行时系统占用RAM/ROM较多(MB级)
到此,以上就是小编对于j***a语言编辑单片机的问题就介绍到这了,希望介绍关于j***a语言编辑单片机的2点解答对大家有用。