
未來應(yīng)該是屬于google以及Android的世界 偉大 開放的google
我決定以后成為google的跟屁蟲了
選擇google的v8 js engine
選擇google的skia render engine
選擇google的android mobile platform
選擇google的Android things embedded system
選擇google的Android studio / sdk / ndk
選擇google 就是選擇未來!
總結(jié):
本周是獲得蠻多成果的一周:
完成設(shè)計(jì)模式在UI系統(tǒng)開發(fā)中的應(yīng)用(實(shí)現(xiàn)UIPLib 上)
完成設(shè)計(jì)模式在UI系統(tǒng)開發(fā)中的應(yīng)用(實(shí)現(xiàn)UIPLib 下)
完成設(shè)計(jì)模式在UI系統(tǒng)開發(fā)中的應(yīng)用(UIPAnimation實(shí)現(xiàn) 上)
完成google v8 / molliza spidermonkey / ms chakra引擎編譯工作
完成Nodejs v8 版以及chakra版的編譯和運(yùn)行工作
完成v8 / spidermonkey / chakra 與 c++互調(diào)工作
完成Nodejs和c++互調(diào)工作
完成cario渲染引擎的編譯和運(yùn)行工作
完成skia渲染引擎的編譯和運(yùn)行工作
以上都是windows版中的編譯工作,下周開始ios和android端進(jìn)行編譯,當(dāng)然不是全部,僅v8 / chakra 以及skia和cario。
一單技術(shù)選型確定,基本就進(jìn)入開發(fā)階段。
本周的成果源于前兩周的準(zhǔn)備,前兩周的開發(fā)周記如下:
2017/4/10(周一):
上午:
花了一個上午,研究v8對C++包裝的問題。
終于解決了一個困擾我蠻多時間的問題,非常棒的感覺,具體蠻難說清楚,等我好了后再分享。
非常棒的感覺,這樣的話,現(xiàn)有的C++程序會非常方便的被V8所調(diào)用。
下午/晚上:
撰寫設(shè)計(jì)模式在UI系統(tǒng)開發(fā)中的應(yīng)用(導(dǎo)讀)一文
2017/4/11(周二):
上午:
- 完成設(shè)計(jì)模式在UI系統(tǒng)開發(fā)中的應(yīng)用(實(shí)現(xiàn)UIPLib 上)
- 完成設(shè)計(jì)模式在UI系統(tǒng)開發(fā)中的應(yīng)用(實(shí)現(xiàn)UIPLib 下)
下午
- 編譯跨平臺的Cario繪圖引擎
- 測試Cario引擎的性能,感覺還是稍微差了點(diǎn)。算了,還是選擇opengl(es)吧!
- 將以前用C++寫的一個程序通過V8 C++,并入到Nodejs中去。感覺還是滿爽的,不需要重新用JS來撰寫,雖然研究花了不少時間,但是比重寫要有趣的多了
- 繼續(xù)學(xué)習(xí)vue2.x,繼續(xù)我的前后端Demo制作。
- 明白了vue2.x中的prop單向綁定的含義及原理
- 明白了vue2.x中slot的含義,其實(shí)就像面向?qū)ο笳Z言中的多態(tài)的概念一樣.slot就像類的虛函數(shù),有個default的實(shí)現(xiàn)。你可以繼承后進(jìn)行override。從而替換內(nèi)容。
2017/4/12(周三):
上午:
- 修正原來寫的程序
下午:
- 一個很重大的成果,找到JS和CPP之間完美的協(xié)調(diào)關(guān)系,不需要修改一句代碼,就能自動將CPP綁定到V8引擎,由于nodejs也使用V8引擎,這樣,以前寫的c++代碼,可以自動并入到nodejs
以前用C++寫的JSCode-->JSAst--->CPP源碼的工具,后來重寫目前完成60%。

將generator.js讀入內(nèi)存,由v8 運(yùn)行

generator.js,實(shí)際調(diào)用的是用C++中的JSAST::SourceGenerator 類(該C++類被包裝成V8 js腳本可以調(diào)用的形式)。test.js是一個純js實(shí)現(xiàn),303k,還是比較大的一個js文件。

generator.js中調(diào)用的SourceGenerator類對應(yīng)的C++類:

樹形打印出JS的ast名稱(ast=抽象語法樹)

原來寫的程序有近5000行,當(dāng)時還不知道有nodejs,后來發(fā)現(xiàn)nodejs真是好東西,想移植過去,但是工作量有點(diǎn)大?,F(xiàn)在好了,完美的解決js/c++互調(diào).
現(xiàn)在重寫整個程序,進(jìn)行擴(kuò)展,先JS版,然后typescript版,實(shí)際上ts更容易轉(zhuǎn)換成C++

兩年前弄的規(guī)范,由于js缺乏類型系統(tǒng),因此為了能自動轉(zhuǎn)換,需要一些變量聲明帶類型前綴的規(guī)范。還有就是需要規(guī)定一套機(jī)制,例如繼承,虛函數(shù)動態(tài)綁定,函數(shù)回調(diào)之類,內(nèi)存析構(gòu)等(還有很多,碰到一個問題解決一個唄,不停的測試),由于js太靈活,因此需要一套限定規(guī)則,才能更好的進(jìn)行轉(zhuǎn)換。目前重新弄一下。慢慢來!整個框架和關(guān)鍵的地方都弄好了,現(xiàn)在就是需要更好的制定規(guī)則。
貼一些以前的研究成果,后來重寫整個解析和生成流程,代碼比以前質(zhì)量高很多,但是目前只是完成關(guān)鍵部分,還有很多沒弄呢
下圖是兩年前的成果:(都是由js源碼自動生成對應(yīng)的語言,當(dāng)時沒做縮進(jìn)輸出,字符輸出間隔規(guī)則也沒做處理,可以利用代碼編輯器format,現(xiàn)在可以進(jìn)行縮進(jìn)輸出,因?yàn)閍st樹結(jié)構(gòu),天然的層次關(guān)系,特棒)
js2cpp

js2objc

js2cs

入口

2017/4/13(周四):
上午:
撰寫設(shè)計(jì)模式在UI系統(tǒng)開發(fā)中的應(yīng)用(UIPAnimation實(shí)現(xiàn) 上),完成二分之一的內(nèi)容。
StarUML的逆向工程引擎還是蠻好用的,UIPAnimation實(shí)現(xiàn)中的UML圖都是直接由C++頭文件自動生成的,然后手動添加類之間的關(guān)系。
下午:
- 參加孩子學(xué)校舉行的安全教育,由上海東方衛(wèi)視的東方110主持人黃奕警官進(jìn)行現(xiàn)場指導(dǎo),氣氛熱烈,并且學(xué)到不少知識!

-
分享一下有用的信息:
1、一定要了解,上海的每個地鐵內(nèi)都是分區(qū)塊的,每個區(qū)塊都是有編號的,只要報(bào)編號,110可以在30秒內(nèi)快速定位。2、在高架上,如果車子出問題,不知道具體方位,可以在周圍找區(qū)塊編號,只要報(bào)標(biāo)號,110可以在30秒內(nèi)快速定位。
最后還接受了電視臺采訪,感覺講的不錯,就不知道什么時候播出,不知道處女秀是否可以被播出,應(yīng)該ok吧。哈哈哈!
2017/4/14(周五):
上午:
- 下載google skia源碼,這個貌似要有點(diǎn)時間了。
- 繼續(xù)撰寫設(shè)計(jì)模式在UI系統(tǒng)開發(fā)中的應(yīng)用(UIPAnimation實(shí)現(xiàn) 上)
- 現(xiàn)在的軟件真是太大了,就這兩個禮拜,我已經(jīng)用掉了50g 硬盤空間,僅僅是編譯一些庫而已,現(xiàn)在每個庫動不動就可以產(chǎn)生好幾個g的中間文件,太可怕了,咋就這么大呢,代碼量咋就這么多呢!
下午:
- 下載最新版的skia源碼,以及生成編譯工具等,一個漫長的過程
- 編譯最新版的skia源碼,生成vs2015.sln,花了很多時間編譯,還是有錯誤,再說吧
- 繼續(xù)撰寫設(shè)計(jì)模式在UI系統(tǒng)開發(fā)中的應(yīng)用(UIPAnimation實(shí)現(xiàn) 上)
2017/4/15(周六):
上午:
skia庫編譯成功,單單編譯,花了半個小時以上,生成的skia.lib靜態(tài)鏈接庫281兆,還真是夠大啊!
測試一下skia庫是否ok
從昨天下午到今天上午,終于編譯出最新版的skia引擎,測試效果還是滿不錯的,效率很高,畢竟可直接調(diào)用opengl等API,并且重要的是字體渲染和質(zhì)量很高,其實(shí)渲染里面最麻煩的是字體渲染!

一共1404個編譯單元,超過30分鐘的編譯時間!





最后發(fā)現(xiàn),google還是很強(qiáng)大的,技術(shù)棧還是選擇:
google v8 js engine/google skia render engine/C++
或許是目前質(zhì)量比較有保證的選擇!
這幾天再將這些庫在android/ios中編譯運(yùn)行。IOS應(yīng)該不會有很大問題,但是android ndk或許會碰到一些問題,但是應(yīng)該是可以解決的。
- 好了,skia可以使用了,也算是一個不小的成果。今天天氣好,下午一起出去玩玩,心情舒暢.
2017/4/16(周日):
上午:
- 京東購買的東西到貨,一個HDMI轉(zhuǎn)VGA接口,另外一個32G 閃存卡,這樣我的兩個樹莓派3就有用武之地,一個已經(jīng)裝了linux操作系統(tǒng),一個安裝了android things操作系統(tǒng)。完美!

- 今天是家庭運(yùn)動日,出去吃飯,下午乒乓,羽球運(yùn)動。