成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

.NET逆襲 用Mono這只猴子玩轉Dalvik

開發 后端
.NET程序員想用C#寫成的程序,能運行在帶有Java的操作系統上,然后與iOS和Windows Phone共享同一代碼。這樣似乎.NET程序員錢景一片光明。

甲骨文和谷歌正就谷歌在Android中使用Java一案展開一場10億美元的大較量。但是Java并非在Android中建立本地應用的唯一方法。事實上,它甚至不是***的文法:Xamarin 開發組已經將C#提供給Android開發者作為一個高性能、低功耗的Java的替代語言。Xamarin 的平臺,Mono,是.Net框架的一個開源的實現。它使得開發者用C#寫成的程序,能運行在帶有Java的操作系統上,然后與iOS和Windows Phone共享同一代碼。

不同于Sun對Java的做法,微軟向ECMA(歐洲電腦制造商協會)提交了C#和.NET VM標準化申請,并一路保證這些標準完全符合ISO牢固專利承諾。.NET框架同樣也為微軟受法律約束的社區承諾所覆蓋。

去年七月,Xamarin 開發組在波士頓小聚,討論Mono在iOS和Android中的成長。查爾斯河一天的蕩舟過后的晚宴席間,開發組將注意力轉向了如何提升Android上應用的性能并降低能耗,使他們的Mono更加適合于Android。

[[69472]] 

Xamarin 開發組(當時還只是家小公司)

一次次地,開發組回到最根本的話題:Dalvik是個年輕的虛擬機,它不如Mono那么高效與協調,并受制于Java的許多性能極限,而且享受不到來自甲骨文的熱點(HotSpot)的高端優化。那次晚宴開發組冒出的一個瘋狂的想法,是將Android的源碼翻譯成C#。Android將能從C#的性能特性如結構體、P/調用、真實泛型以及他們更加成熟的運行時中受益。

雖然七月什么也沒有發生,但這一想法深深扎根在了開發組的心里。

快進幾個月:專用于Android的Mono做得非常好,開發組開始再次考慮提升自己產品在Android上的性能。如果掃除Java,使用更快的 C#并同時去除Dalvik的極限,結果將會怎么樣?Xamarin 能否創造出一個完全不含Java,并且突破Dalvik VM極限的Android電話?

它如此瘋狂,Xamarin 開發組決定嘗試。于是他們開始了一個小型的專案工作組項目,致力于做一個從Android到C#的機器翻譯工作。他們稱這一項目為XobotOS。

XobotOS研究項目

努力的結果是,今天,他們已經將Android大多數布局和控件完全移入了C#。下圖是運行在一個Linux 工作站的XobotOS 的截圖,不涉及一點Java

運行在一個Linux 工作站的XobotOS 

到達這一個節點,需要將Android Java源碼的主要部分翻譯成C#。因此你可以想見上圖代表的里程多么有意義。那他們是如何做到的呢?

基于Sharpen的Java翻譯

Android的代碼庫包含一百萬多行Java代碼,而且他們知道必須得與Android的新發行操持同步——事實上,2011年的時候他們是從 Android 2.x 的源碼起步的;隨后當谷歌在今年早期開放Ice Cream Sandwich 源碼的時候,他們已經將XobotOS 升級到了Android 4.0。因此對于他們,唯一可行的選擇是,做一個Java到C#的機器翻譯,在這一過程中構建并維護任何必要的工具。

開發組所使用的作為起點的工具是Sharpen。Sharpen因幫助Frank Krueger在兩個月內將Java小程序移植到一個贏獎了的iPad應用而著名了起來。

開發組對Sharpen做了改進,使之成為了一個高度改進的通用的Java2C#翻譯工具。他們將在發布XobotOS源碼的同時發布這一新版本的Sharpen,希望更多的人能夠從中受益,并參與貢獻。

性能

一旦你讓Android在Mono上運行,首先想到的一個問題一定是——Mono的性能同Dalvik相比如何?

當C#出來的時候,微軟以一些意義重大的方式修改了該語言,使之更加易于優化。值類型的引入,使小的對象占用更低的負載,并使虛函數opt-in而非opt-out,十分適合更加簡單的VM。之后,Java和C#在泛型的實現上出現的分歧。Java走了完全向后兼容的道路,而C#則將這一支持放到了運行時中。C#的做法形成了一個易用、易于理解的泛型機制,并且更加高效與完整。

自那時開始,兩大語言以及各自的運行環境都有了持續的發展與改進。C#從一個略微優秀的Java,長成了一個比Java多走了一光年遠的語言。擁抱動態編程,帶來異步機制,引入迭代器,功能性編程構建,擁抱并行并實現了一個偉大的泛型。許多這些特性都來自于Don Syme 的調查和他的持續給該語言注入新思想的F#開發組。

而且,Mono作為一個虛擬機,已經在過去的十年里充分地成長;如今,馬上要考慮其第八版的發布工作了。

所有這些加起來,你可以從開發組運行的一個簡單的二叉樹實現的基準測試(如下圖)中,看到Java和C#在結構體和泛型性能上巨大的差別。

一個簡單的二叉樹實現的基準測試 

下一步怎么走

目前,開發組已經在Github上發布了XobotOS。你可以親手試試。

作為一家公司,Xamarin 的目標是提供建立移動應用***的平臺,因此XobotOS 將不是他們今后工作的重心。但是使用它也是一個不錯的體驗。并且正如結果所顯示的,部分技術已經在它的幫助之下浮出水面,它們或將進入我們將來的產品中:

直通Skia的圖形訪問:當前用于Android的Mono仍是通過Java訪問底層圖形庫;使用Xamarin 建立XobotOS的代碼,開發組將可以跳過中間件,使用Mono的P/Invoke直接連接到Sika中的本地渲染代碼。

Java2C#工具:開發組新版本的Sharpen 已經作為其XobotOS發行的一部分發布。

用C#代碼取代Java代碼:開發組已經有了用C#代碼替換某些性能關鍵且C#能提供更優解決方案的的Java代碼塊所必要的工具。他們的計劃是從這一調查項目中取材,將它們集成到自己的產品當中。

一個因為認為它好玩而啟動的項目,最終竟為公司的產品提供了一些意義重大的益處。創業很有必要集中精力辦實事,但偶爾你應該嘗試某些瘋狂的想法,以取得進步。或許谷歌某天會感謝Xamarin,這也說不定。

Xamarin 的很多職位正在招人,有志者可與他們將攜手,***移動開發的先潮!

【編輯推薦】

  1. 給用戶和開發者***的.Net框架部署方案
  2. .NET三層架構應用之十層框架
  3. 如何解決京東商城的性能瓶頸?
  4. ASP.NET性能優化之反向代理緩存
  5. .NET程序員不要錯過如此強大的T4模板
責任編輯:彭凡 來源: cnbeta
相關推薦

2009-07-03 09:08:34

Mono微軟

2014-08-07 10:45:31

長尾市場華為

2014-09-03 16:04:17

傳統數據中心逆襲

2012-10-19 11:05:03

思科OpenStackCitrix

2017-04-19 17:16:14

黑產黑色產業鏈網絡黑產

2016-11-18 11:42:45

移動寬帶電信寬帶流量

2015-08-04 14:22:43

虛擬化OpenFlowSDN

2020-07-13 08:40:21

BAT模具設計

2013-11-13 14:42:05

手游海外市場

2013-07-23 09:42:21

IBMNetflix

2015-08-10 10:20:09

虛擬化OpenFlowSDN

2019-01-21 16:37:08

2014-09-22 17:24:34

CIDRNATIP

2022-02-17 11:24:21

KubernetesCNCF云原生

2018-03-09 09:53:37

國產內存紫光半導體

2020-05-27 14:07:56

HTTPServer編譯器

2017-04-18 14:25:54

Excel實戰數據

2017-10-27 15:48:06

JavaScript前端全端

2014-10-08 15:51:46

ICT技術華為

2014-09-04 10:58:56

國產操作系統
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久久精品网站 | 国产精品18久久久久久久 | 一区二区免费看 | 国产精品久久久久久久7电影 | 欧洲国产精品视频 | 欧美日韩在线成人 | 在线观看亚洲专区 | 精品国产91 | 在线欧美亚洲 | 中国xxxx性xxxx产国 | 欧美三级在线 | 国产精品视频一二三区 | 欧美a∨ | 日韩欧美中文在线 | 国产精品久久国产精品 | 中文字幕高清免费日韩视频在线 | 久久精品国产精品青草 | 欧美激情黄色 | 国产免费一区二区三区最新6 | 国产色 | 中文字幕亚洲欧美日韩在线不卡 | 四虎成人免费视频 | 中文字幕视频一区二区 | 国产精品18久久久 | 日韩中文一区二区三区 | 熟女毛片 | 亚洲免费人成在线视频观看 | 国产福利小视频 | 亚洲精久久久 | 亚洲一区在线免费观看 | 日韩成人在线免费视频 | 亚洲91精品 | 91精品久久久 | 91国自视频| 精品久久精品 | 91资源在线 | 国产成人综合在线 | 日韩av电影在线观看 | 亚洲精品自在在线观看 | 亚洲一区二区精品视频 | 久久久久久久久久一区二区 |