{eval=Array;=+count(Array);}

问答专栏Q & A COLUMN

如果有配套的编译器,JAVA语言可不可以编写单片机程序呢?

孙淑建孙淑建 回答10 收藏1
收藏问题

10条回答

waruqi

waruqi

回答于2022-06-22 18:37

回答里多是不怎么懂java的前端小程序员,对java理解太狭隘,Java最初的设计就是用于嵌入式的(当Java还叫Oak的时候,它是用于超前于时代很多的*7(Star-7)PDA项目),Java SE Embedded、Java ME(其中例如Blu-ray Disc Java(BD-J))、JavaCard、Sun SPOT是几种不同层面的嵌入式Java开发技术。有兴趣的可以去搜索了解。

实际上嵌入式系统用java写软件很广泛和常见的,会把jvm一起刷到固件运行,比如身边的安卓电视,机顶盒还有车载的大屏影音娱乐设备(常见的MTK+Android方案)都是典型的Android+Java的应用。

此外商场饭店用于扫码的POS机,甚至有时你看到商场内展示图像和楼层信息的显示屏幕,这些也属于使用嵌入式Linux+Android+Java的应用。

嵌入式Linux+Android系统+Java软件的应用在影音娱乐方向目前可以说成为主流。实现影音图像类应用

评论0 赞同0
  •  加载中...
Nekron

Nekron

回答于2022-06-22 18:37

说的对,只要你愿意理论上什么语言都可以进行单片机编程!呵呵,只要你学过编译器原理这个问题就很简单,当然你一定要对CPU指令集指令集有所研究,通过编译器编译出对应指令集的指令就可以了,在简单的说只要Java编译器能把源代码编译成对应单片机的指令集,就可以使用Java编程语言进行单片机编程!喜欢的读者可关注”嘿咪编程专家”与我私信活留言

评论0 赞同0
  •  加载中...
xuweijian

xuweijian

回答于2022-06-22 18:37

理论上没问题,不过好像没人这么做,最搞笑的是JAVA本来就是为了在各种不同单片机上能有统一代码而设计的。。。[可爱][可爱][可爱]

评论0 赞同0
  •  加载中...
cocopeak

cocopeak

回答于2022-06-22 18:37

通常单片机用Java的不多,一般用C或C++。但也有的单片机可以用Java,这样的单片机需要集成JVM,如freeRTS就可以使用Java。现在ARM核的单片机在大量应用,ARM不仅可以支持Java,还可以运行多种操作系统。

而Java起源,就是用于电视机、电话、闹钟、烤面包机等家用电器的控制和通信。可是它诞生的太早了,后来在发展中改变了自身的主要应用方向。

评论0 赞同0
  •  加载中...
awkj

awkj

回答于2022-06-22 18:37

用JAVA做单片机程序不但不可行而且没有必要。

单片机是最简洁的计算机。单片机程序写在内存中由CPU直接读取执行。而手机和个人电脑则需要从文件系统中将程序读到内存中再执行。JAVA程序要更复杂一些,需要先编译成字节码,在执行的时候由不同操作系统上的虚拟机,根据所在系统的指令集进行实时编译之后再执行的。JAVA不能脱离操作系统。

可是单片机上没有也不需要操作系统,根本不具备JAVA程序的运行条件。尽管理论上可以对JAVA程序静态编译后写到单片机上再执行。但这么做了JAVA程序的很多特性都失去了意义,还不如直接用C语言写出来即简单又有效率。

评论0 赞同0
  •  加载中...
cjie

cjie

回答于2022-06-22 18:37

把JAVA抽条成几块钱单片机也能运行的瘦系统的话,也就失去了JAVA的意义了,和C也就没有什么本质不同了,纯属为了JAVA而JAVA。

评论0 赞同0
  •  加载中...
Hancock_Xu

Hancock_Xu

回答于2022-06-22 18:37

事实上,目前的Java语言没有办法运行在单片机上。Java语言不是一种编译型语言,是一种字节码解释型语言。Java代码的运行除了需要一个Java虚拟机,还需要一大堆相关的基本库。以arm处理器为例,arm 32位版本的Java虚拟机运行时占用内存空间为190M字节,基本库和你的代码运行空间还不包括在内。如果一个处理器被称为单片机,内存一般以KB计算,有些高级单片机有1M或2M内存已经不得了了。这里内存容量是指RAM,不是闪存。这个评估还是把单片机字长,操作系统,指令系统给忽略的情况下做出的。说到Java的本质,就是运行在哪里,就要把编译器安装到哪里的累赘语言。此外,由于Java使用了动态内存自动回收机制,使得这种语言不可能应用于资源紧缺型处理器。

评论0 赞同0
  •  加载中...
firim

firim

回答于2022-06-22 18:37

Java最初设计的初衷是通过网络来控制微波炉等单片机设备做演示,所以当初设计成跨平台,并发展出了j2se、j2me、applet以及后面的j2ee,j2me就是移动端的方案,也就是为单片机准备的,现在官方网站应该还有单片机版本的虚拟机环境下载,Java发展的今天表面看只有j2se和j2ee,其实Android系统就是Java的单片机方案,google把sun公司的Java班底挖过去重构的,但是Google给他换了个名,在官方场合是不承认这是Java扩展的!

评论0 赞同0
  •  加载中...
LiuRhoRamen

LiuRhoRamen

回答于2022-06-22 18:37

是的,如果你能做出像gcj那样的编译器,绝对可以!但是可能会限制一些动态特性,比如动态加载类,比如反射,比如包的扫描。。。所以需要虚拟机运行时支持的特性都不能用!

评论0 赞同0
  •  加载中...
warnerwu

warnerwu

回答于2022-06-22 18:37

怎么说呢,java要运行就得有jvm环境。单片机有andriod环境的比较少。用c/c++较多。

再者java是高级语言,不能直接操控底层硬件。在如c直接

评论0 赞同0
  •  加载中...

最新活动

您已邀请0人回答 查看邀请

我的邀请列表

  • 擅长该话题
  • 回答过该话题
  • 我关注的人
向帮助了您的网友说句感谢的话吧!
付费偷看金额在0.1-10元之间
<