Go語(yǔ)言將支持Android
成都創(chuàng)新互聯(lián)專(zhuān)業(yè)為企業(yè)提供晉安網(wǎng)站建設(shè)、晉安做網(wǎng)站、晉安網(wǎng)站設(shè)計(jì)、晉安網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)與制作、晉安企業(yè)網(wǎng)站模板建站服務(wù),十年晉安做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。
概述
我們建議將Go語(yǔ)言引入Android平臺(tái),重點(diǎn)是用Go語(yǔ)言編寫(xiě)游戲程序,API將在Android
NDK中定義。
背景
Android平臺(tái)被設(shè)定為一個(gè)多應(yīng)用操作系統(tǒng),一個(gè)相對(duì)于傳統(tǒng)UNIX系統(tǒng)來(lái)說(shuō)更依賴(lài)于網(wǎng)絡(luò)庫(kù)和服務(wù)的操作系統(tǒng),這意味著我們將為Go運(yùn)行時(shí)開(kāi)放更多的API。
將Golang帶入Android平臺(tái)是一件非常糟糕的事情,因?yàn)锳ndroid本身是Java構(gòu)建的并且擁有巨量的API,任何試圖將這些API用Go替代的結(jié)果將會(huì)導(dǎo)致一個(gè)非常糟糕的結(jié)果。無(wú)論是手工建立包裝類(lèi)還是自動(dòng)建立都會(huì)導(dǎo)致程序運(yùn)行非常緩慢。
然而如果使用基于C的API,通過(guò)AndroidNDK來(lái)編寫(xiě)一些游戲類(lèi)程序可能會(huì)帶來(lái)意想不到的收獲。
提議
在Golang
1.4周期中,Android平臺(tái)的編譯將納入Go的源,并且包含Android支持的cgo(由Elias
Naur貢獻(xiàn))。Dalvik-loadable
.so外部連接文件的支持也會(huì)由Android
NDK提供。
在發(fā)布上我們?nèi)匀惶峁┙徊嫫脚_(tái)編譯,并且支持在Linux主機(jī)上adb工具在Android設(shè)備上測(cè)試程序。
我們將會(huì)提供一個(gè)名叫g(shù)o.mobile的子版本,包含:
1、通過(guò)Android
NDK對(duì)OpenGL,OpenSL和OpenMAX的支持。
2、一個(gè)Java-Go的工具,支持通過(guò)Java調(diào)用Go的Package,所以許多游戲的菜單UI可以通過(guò)標(biāo)準(zhǔn)SDK構(gòu)建。(有可能會(huì)支持通過(guò)其他語(yǔ)言調(diào)用Go,比如Objective-C。)
3、集成AndroidStudio
新特性將會(huì)在Go1.4穩(wěn)定版中提供。
go及gomobile的環(huán)境配置這里就不介紹了,直接說(shuō)aar的生成和使用。
1. 設(shè)置環(huán)境變量GOPATH
GOPATH的值可以有多個(gè),用半角分號(hào)間隔,但不能以其結(jié)束,設(shè)置完成后需要重新做 gomobile init 。
2. 在GOPATH里創(chuàng)建src文件夾,用于存放go的包和源文件
3. 在src中創(chuàng)建hello文件夾(go文件的包名)
4. 在hello中創(chuàng)建hello.go文件,并輸入內(nèi)容
5. 編譯
執(zhí)行命令: gomobile bind -target=android hello
會(huì)生成一個(gè)hello.aar文件
6. 導(dǎo)入到android工程
將hello.aar文件放入工程的libs中,并配置build.gradle
在根結(jié)點(diǎn)加入:
在dependencies結(jié)點(diǎn)下加入依賴(lài):
7. 在Java中測(cè)試
運(yùn)行后,結(jié)果會(huì)輸出 Hello, Android and Gopher
非常有可能,Go語(yǔ)言?xún)?yōu)點(diǎn)是部署簡(jiǎn)單,并發(fā)性很好,最重要的是執(zhí)行性好占內(nèi)存比Java少太多了。。我個(gè)人認(rèn)為如果Go語(yǔ)言早出來(lái)5年,android開(kāi)發(fā)肯定不會(huì)用java了,但是Go語(yǔ)言現(xiàn)在還有很長(zhǎng)的路要走啊。。。
Go 語(yǔ)言是一個(gè)試圖結(jié)合動(dòng)態(tài)類(lèi)型和靜態(tài)類(lèi)型,編譯效率和安全性以及語(yǔ)言的易用性等眾多特性與一體的一種嘗試。他的另一個(gè)目標(biāo)是支持現(xiàn)代的基于網(wǎng)絡(luò)的、基于多核的計(jì)算。最后,Go 還是非??斓模梢栽趩蝹€(gè)計(jì)算機(jī)上僅僅花費(fèi)幾秒時(shí)間構(gòu)建一個(gè)龐大的應(yīng)用程序。使用GO語(yǔ)言開(kāi)發(fā)android語(yǔ)言步驟如下:
1. 下載安裝Go語(yǔ)言(版本1.5+)
Golang鏈接
回到頂部
2. 下載安裝 gomobile
下載
$ go get golang.org/x/mobile/cmd/gomobile
安裝(需要等待幾分鐘)
gomobile init
回到頂部
3. Golang開(kāi)發(fā)手機(jī)應(yīng)用有兩種方式
a. 原生應(yīng)用開(kāi)發(fā)
$ go get -d golang.org/x/mobile/example/basic
主要應(yīng)用領(lǐng)域:
應(yīng)用控制管理與配置
OpenGL ES 2 綁定
Asset 管理
Event 管理
試驗(yàn)中的包,含有OpenAL 綁定、音頻、字體、圖形以及運(yùn)動(dòng)傳感器
Android開(kāi)發(fā)
$ gomobile build -target=android golang.org/x/mobile/example/basic
此命令會(huì)生成名為basic的apk安裝包
$ gomobile install golang.org/x/mobile/example/basic
此命令將安裝apk包到已連接的android設(shè)備
Go語(yǔ)言由Google公司開(kāi)發(fā),并于2009年開(kāi)源,相比Java/Python/C等語(yǔ)言,Go尤其擅長(zhǎng)并發(fā)編程,性能堪比C語(yǔ)言,開(kāi)發(fā)效率肩比Python,被譽(yù)為“21世紀(jì)的C語(yǔ)言”。
Go語(yǔ)言在云計(jì)算、大數(shù)據(jù)、微服務(wù)、高并發(fā)領(lǐng)域應(yīng)用應(yīng)用非常廣泛。BAT大廠正在把Go作為新項(xiàng)目開(kāi)發(fā)的首選語(yǔ)言。
Go語(yǔ)言應(yīng)用范圍:
1、服務(wù)端開(kāi)發(fā):以前你使用C或者C++做的那些事情,用Go來(lái)做很合適,例如日志處理、文件系統(tǒng)、監(jiān)控系統(tǒng)等;
2、DevOps:運(yùn)維生態(tài)中的Docker、K8s、prometheus、grafana、open-falcon等都是使用Go語(yǔ)言開(kāi)發(fā);
3、網(wǎng)絡(luò)編程:大量?jī)?yōu)秀的Web框架如Echo、Gin、Iris、beego等,而且Go內(nèi)置的 net/http包十分的優(yōu)秀;
4、Paas云平臺(tái)領(lǐng)域:Kubernetes和Docker Swarm等;
5、分布式存儲(chǔ)領(lǐng)域:etcd、Groupcache、TiDB、Cockroachdb、Influxdb等;
6、區(qū)塊鏈領(lǐng)域:區(qū)塊鏈里面有兩個(gè)明星項(xiàng)目以太坊和fabric都使用Go語(yǔ)言;
7、容器虛擬化:大名鼎鼎的Docker就是使用Go語(yǔ)言實(shí)現(xiàn)的;
8、爬蟲(chóng)及大數(shù)據(jù):Go語(yǔ)言天生支持并發(fā),所以十分適合編寫(xiě)分布式爬蟲(chóng)及大數(shù)據(jù)處理。
Go語(yǔ)言也稱(chēng) Golang,兼具效率、性能、安全、健壯等特性。這套Go語(yǔ)言教程(Golang教程)通俗易懂,深入淺出,既適合沒(méi)有基礎(chǔ)的讀者快速入門(mén),也適合工作多年的程序員查閱知識(shí)點(diǎn)。
Go 語(yǔ)言
這套教程在講解一些知識(shí)點(diǎn)時(shí),將 Go 語(yǔ)言和其他多種語(yǔ)言進(jìn)行對(duì)比,讓掌握其它編程語(yǔ)言的讀者能迅速理解 Go 語(yǔ)言的特性。Go語(yǔ)言從底層原生支持并發(fā),無(wú)須第三方庫(kù)、開(kāi)發(fā)者的編程技巧和開(kāi)發(fā)經(jīng)驗(yàn)就可以輕松搞定。
Go語(yǔ)言(或 Golang)起源于 2007 年,并在 2009 年正式對(duì)外發(fā)布。Go 是非常年輕的一門(mén)語(yǔ)言,它的主要目標(biāo)是“兼具 Python 等動(dòng)態(tài)語(yǔ)言的開(kāi)發(fā)速度和 C/C++ 等編譯型語(yǔ)言的性能與安全性”。
Go語(yǔ)言是編程語(yǔ)言設(shè)計(jì)的又一次嘗試,是對(duì)類(lèi)C語(yǔ)言的重大改進(jìn),它不但能讓你訪問(wèn)底層操作系統(tǒng),還提供了強(qiáng)大的網(wǎng)絡(luò)編程和并發(fā)編程支持。Go語(yǔ)言的用途眾多,可以進(jìn)行網(wǎng)絡(luò)編程、系統(tǒng)編程、并發(fā)編程、分布式編程。
Go語(yǔ)言的推出,旨在不損失應(yīng)用程序性能的情況下降低代碼的復(fù)雜性,具有“部署簡(jiǎn)單、并發(fā)性好、語(yǔ)言設(shè)計(jì)良好、執(zhí)行性能好”等優(yōu)勢(shì),目前國(guó)內(nèi)諸多 IT 公司均已采用Go語(yǔ)言開(kāi)發(fā)項(xiàng)目。Go語(yǔ)言有時(shí)候被描述為“C 類(lèi)似語(yǔ)言”,或者是“21 世紀(jì)的C語(yǔ)言”。Go 從C語(yǔ)言繼承了相似的表達(dá)式語(yǔ)法、控制流結(jié)構(gòu)、基礎(chǔ)數(shù)據(jù)類(lèi)型、調(diào)用參數(shù)傳值、指針等很多思想,還有C語(yǔ)言一直所看中的編譯后機(jī)器碼的運(yùn)行效率以及和現(xiàn)有操作系統(tǒng)的無(wú)縫適配。
因?yàn)镚o語(yǔ)言沒(méi)有類(lèi)和繼承的概念,所以它和 Java 或 C++ 看起來(lái)并不相同。但是它通過(guò)接口(interface)的概念來(lái)實(shí)現(xiàn)多態(tài)性。Go語(yǔ)言有一個(gè)清晰易懂的輕量級(jí)類(lèi)型系統(tǒng),在類(lèi)型之間也沒(méi)有層級(jí)之說(shuō)。因此可以說(shuō)Go語(yǔ)言是一門(mén)混合型的語(yǔ)言。
此外,很多重要的開(kāi)源項(xiàng)目都是使用Go語(yǔ)言開(kāi)發(fā)的,其中包括 Docker、Go-Ethereum、Thrraform 和 Kubernetes。Go 是編譯型語(yǔ)言,Go 使用編譯器來(lái)編譯代碼。編譯器將源代碼編譯成二進(jìn)制(或字節(jié)碼)格式;在編譯代碼時(shí),編譯器檢查錯(cuò)誤、優(yōu)化性能并輸出可在不同平臺(tái)上運(yùn)行的二進(jìn)制文件。要?jiǎng)?chuàng)建并運(yùn)行 Go 程序,程序員必須執(zhí)行如下步驟。
使用文本編輯器創(chuàng)建 Go 程序;
保存文件;編譯程序;運(yùn)行編譯得到的可執(zhí)行文件。
這不同于 Python、Ruby 和 JavaScript 等語(yǔ)言,它們不包含編譯步驟。Go 自帶了編譯器,因此無(wú)須單獨(dú)安裝編譯器。
鏈喬教育在線旗下學(xué)碩創(chuàng)新區(qū)塊鏈技術(shù)工作站是中國(guó)教育部學(xué)校規(guī)劃建設(shè)發(fā)展中心開(kāi)展的“智慧學(xué)習(xí)工場(chǎng)2020-學(xué)碩創(chuàng)新工作站 ”唯一獲準(zhǔn)的“區(qū)塊鏈技術(shù)專(zhuān)業(yè)”試點(diǎn)工作站。專(zhuān)業(yè)站立足為學(xué)生提供多樣化成長(zhǎng)路徑,推進(jìn)專(zhuān)業(yè)學(xué)位研究生產(chǎn)學(xué)研結(jié)合培養(yǎng)模式改革,構(gòu)建應(yīng)用型、復(fù)合型人才培養(yǎng)體系。
網(wǎng)頁(yè)標(biāo)題:go語(yǔ)言android,go語(yǔ)言開(kāi)發(fā)為什么難找工作
網(wǎng)站地址:http://jinyejixie.com/article26/hsshcg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供ChatGPT、搜索引擎優(yōu)化、微信小程序、網(wǎng)站導(dǎo)航、響應(yīng)式網(wǎng)站、品牌網(wǎng)站設(shè)計(jì)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)