{eval=Array;=+count(Array);}
回答里多是不怎么懂java的前端小程序員,對java理解太狹隘,Java最初的設(shè)計就是用于嵌入式的(當(dāng)Java還叫Oak的時候,它是用于超前于時代很多的*7(Star-7)PDA項目),Java SE Embedded、Java ME(其中例如Blu-ray Disc Java(BD-J))、JavaCard、Sun SPOT是幾種不同層面的嵌入式Java開發(fā)技術(shù)。有興趣的可以去搜索了解。
實際上嵌入式系統(tǒng)用java寫軟件很廣泛和常見的,會把jvm一起刷到固件運行,比如身邊的安卓電視,機(jī)頂盒還有車載的大屏影音娛樂設(shè)備(常見的MTK+Android方案)都是典型的Android+Java的應(yīng)用。
此外商場飯店用于掃碼的POS機(jī),甚至有時你看到商場內(nèi)展示圖像和樓層信息的顯示屏幕,這些也屬于使用嵌入式Linux+Android+Java的應(yīng)用。
嵌入式Linux+Android系統(tǒng)+Java軟件的應(yīng)用在影音娛樂方向目前可以說成為主流。實現(xiàn)影音圖像類應(yīng)用
說的對,只要你愿意理論上什么語言都可以進(jìn)行單片機(jī)編程!呵呵,只要你學(xué)過編譯器原理這個問題就很簡單,當(dāng)然你一定要對CPU指令集指令集有所研究,通過編譯器編譯出對應(yīng)指令集的指令就可以了,在簡單的說只要Java編譯器能把源代碼編譯成對應(yīng)單片機(jī)的指令集,就可以使用Java編程語言進(jìn)行單片機(jī)編程!喜歡的讀者可關(guān)注”嘿咪編程專家”與我私信活留言
理論上沒問題,不過好像沒人這么做,最搞笑的是JAVA本來就是為了在各種不同單片機(jī)上能有統(tǒng)一代碼而設(shè)計的。。。[可愛][可愛][可愛]
通常單片機(jī)用Java的不多,一般用C或C++。但也有的單片機(jī)可以用Java,這樣的單片機(jī)需要集成JVM,如freeRTS就可以使用Java?,F(xiàn)在ARM核的單片機(jī)在大量應(yīng)用,ARM不僅可以支持Java,還可以運行多種操作系統(tǒng)。
而Java起源,就是用于電視機(jī)、電話、鬧鐘、烤面包機(jī)等家用電器的控制和通信??墒撬Q生的太早了,后來在發(fā)展中改變了自身的主要應(yīng)用方向。
用JAVA做單片機(jī)程序不但不可行而且沒有必要。
單片機(jī)是最簡潔的計算機(jī)。單片機(jī)程序?qū)懺趦?nèi)存中由CPU直接讀取執(zhí)行。而手機(jī)和個人電腦則需要從文件系統(tǒng)中將程序讀到內(nèi)存中再執(zhí)行。JAVA程序要更復(fù)雜一些,需要先編譯成字節(jié)碼,在執(zhí)行的時候由不同操作系統(tǒng)上的虛擬機(jī),根據(jù)所在系統(tǒng)的指令集進(jìn)行實時編譯之后再執(zhí)行的。JAVA不能脫離操作系統(tǒng)。
可是單片機(jī)上沒有也不需要操作系統(tǒng),根本不具備JAVA程序的運行條件。盡管理論上可以對JAVA程序靜態(tài)編譯后寫到單片機(jī)上再執(zhí)行。但這么做了JAVA程序的很多特性都失去了意義,還不如直接用C語言寫出來即簡單又有效率。
把JAVA抽條成幾塊錢單片機(jī)也能運行的瘦系統(tǒng)的話,也就失去了JAVA的意義了,和C也就沒有什么本質(zhì)不同了,純屬為了JAVA而JAVA。
事實上,目前的Java語言沒有辦法運行在單片機(jī)上。Java語言不是一種編譯型語言,是一種字節(jié)碼解釋型語言。Java代碼的運行除了需要一個Java虛擬機(jī),還需要一大堆相關(guān)的基本庫。以arm處理器為例,arm 32位版本的Java虛擬機(jī)運行時占用內(nèi)存空間為190M字節(jié),基本庫和你的代碼運行空間還不包括在內(nèi)。如果一個處理器被稱為單片機(jī),內(nèi)存一般以KB計算,有些高級單片機(jī)有1M或2M內(nèi)存已經(jīng)不得了了。這里內(nèi)存容量是指RAM,不是閃存。這個評估還是把單片機(jī)字長,操作系統(tǒng),指令系統(tǒng)給忽略的情況下做出的。說到Java的本質(zhì),就是運行在哪里,就要把編譯器安裝到哪里的累贅語言。此外,由于Java使用了動態(tài)內(nèi)存自動回收機(jī)制,使得這種語言不可能應(yīng)用于資源緊缺型處理器。
Java最初設(shè)計的初衷是通過網(wǎng)絡(luò)來控制微波爐等單片機(jī)設(shè)備做演示,所以當(dāng)初設(shè)計成跨平臺,并發(fā)展出了j2se、j2me、applet以及后面的j2ee,j2me就是移動端的方案,也就是為單片機(jī)準(zhǔn)備的,現(xiàn)在官方網(wǎng)站應(yīng)該還有單片機(jī)版本的虛擬機(jī)環(huán)境下載,Java發(fā)展的今天表面看只有j2se和j2ee,其實Android系統(tǒng)就是Java的單片機(jī)方案,google把sun公司的Java班底挖過去重構(gòu)的,但是Google給他換了個名,在官方場合是不承認(rèn)這是Java擴(kuò)展的!
是的,如果你能做出像gcj那樣的編譯器,絕對可以!但是可能會限制一些動態(tài)特性,比如動態(tài)加載類,比如反射,比如包的掃描。。。所以需要虛擬機(jī)運行時支持的特性都不能用!
怎么說呢,java要運行就得有jvm環(huán)境。單片機(jī)有andriod環(huán)境的比較少。用c/c++較多。
再者java是高級語言,不能直接操控底層硬件。在如c直接
10
回答9
回答3
回答10
回答10
回答7
回答6
回答1
回答0
回答0
回答