本文出自 “阿敏其人” 簡(jiǎn)書博客对供,轉(zhuǎn)載或引用請(qǐng)注明出處。
2015-2016年鹅髓,出現(xiàn)在一名Android開發(fā)者眼前的窿冯,下面這幾個(gè)詞肯定屬于高頻詞匯醋粟。
- OkHttp: OkHttp是Square的一個(gè)開源網(wǎng)絡(luò)庫(kù)/http客戶端
- Retrofit: Retrofit 是Square的一個(gè)封裝了OkHttp的便捷安全的網(wǎng)絡(luò)框架重归。
- RxJava: 主要利用觀察者模式的隨著程序邏輯變得越來(lái)越復(fù)雜鼻吮,它依然能夠保持簡(jiǎn)潔專注于異步編程與控制可觀察數(shù)據(jù)(或者事件)流的API。
- React Native: React Native是 Facebook 推出的開源項(xiàng)目违柏,基于 JavaScript 和 React 用于開發(fā)Android和ios的程序漱竖。
我們需要對(duì)他們有一個(gè)大概的認(rèn)知:
一畜伐、OkHttp 和 Retrofit
一.1玛界、簡(jiǎn)介
Okhttp簡(jiǎn)介
一句話總結(jié):OkHttp是Square的一個(gè)開源網(wǎng)絡(luò)庫(kù)/http客戶端
OKHttp是Square的一個(gè)開源網(wǎng)絡(luò)庫(kù)(也可以說(shuō)是一個(gè)http 客戶端)慎框,支持get請(qǐng)求和post請(qǐng)求等,支持基于Http的文件上傳和下載笨枯,支持加載圖片,支持下載文件透明的GZIP壓縮窥突,支持響應(yīng)緩存避免重復(fù)的網(wǎng)絡(luò)請(qǐng)求,支持使用連接池來(lái)降低響應(yīng)延遲問(wèn)題梧税。
OkHttp官網(wǎng)
OkHttp GitHub
.
.
Retrofit 簡(jiǎn)介
一句話總結(jié):Retrofit 是Square的一個(gè)封裝了OkHttp的便捷安全的網(wǎng)絡(luò)框架第队。
Retrofit 是 Square 公司開源項(xiàng)目刨秆,Retrofit 2.0 開始內(nèi)置 OkHttp。
Retrofit 官網(wǎng)
Retrofit GitHub
我們的應(yīng)用程序通過(guò) Retrofit 請(qǐng)求網(wǎng)絡(luò)尸执,實(shí)際上是使用 Retrofit 接口層封裝請(qǐng)求參數(shù)如失、Header送粱、Url 等信息,之后由 OkHttp 完成后續(xù)的請(qǐng)求操作脆丁,在服務(wù)端返回?cái)?shù)據(jù)之后槽卫,OkHttp 將原始的結(jié)果交給 Retrofit胰蝠,后者根據(jù)用戶的需求對(duì)結(jié)果進(jìn)行解析的過(guò)程姊氓。
.
.
一.2翔横、 retrofit和okhttp有什么區(qū)別?
沒(méi)有區(qū)別效览,不是同一類別事物。
明確兩點(diǎn):
第一點(diǎn):Okhttp與HttpClient, HttpUrlConnection一樣哆键,是對(duì)底層http協(xié)議做了封裝的一套客戶端籍嘹。弯院。
第二點(diǎn):像Volley听绳,Android-Async-Http和Retrofit都是對(duì) 協(xié)議客戶端 做了具體的請(qǐng)求椅挣,線程切換以及數(shù)據(jù)轉(zhuǎn)換網(wǎng)絡(luò)庫(kù)。但是Retrofit專門針對(duì)的是Okhttp峡竣。
.
.
二澎胡、RxJava
一句話總結(jié)(官方版本):在 Java VM 上使用可觀測(cè)的序列來(lái)組成異步的娩鹉、基于事件的程序的庫(kù)
一句話總結(jié)(大白話版本):主要利用觀察者模式的隨著程序邏輯變得越來(lái)越復(fù)雜弯予,它依然能夠保持簡(jiǎn)潔的 異步 庫(kù)个曙。
RxJava是 ReactiveX 在JVM上的一個(gè)實(shí)現(xiàn),ReactiveX使用Observable序列組合異步和基于事件的程序呼寸。更多關(guān)于ReactiveX的資料猴贰,可以查看 ReactiveX 介紹 頁(yè)面米绕。
Flipboard 的 Android 項(xiàng)目也在使用 RxJava
ReactiveX是Reactive Extensions的縮寫,一般簡(jiǎn)寫為Rx迈套,最初是LINQ的一個(gè)擴(kuò)展桑李,由微軟的架構(gòu)師Erik Meijer領(lǐng)導(dǎo)的團(tuán)隊(duì)開發(fā)贵白,在2012年11月開源戒洼,Rx是一個(gè)編程模型圈浇,目標(biāo)是提供一致的編程接口磷蜀,幫助開發(fā)者更方便的處理異步數(shù)據(jù)流褐隆,Rx庫(kù)支持.NET污它、JavaScript和C++,Rx近幾年越來(lái)越流行了庶弃,現(xiàn)在已經(jīng)支持幾乎全部的流行編程語(yǔ)言了衫贬,Rx的大部分語(yǔ)言庫(kù)由ReactiveX這個(gè)組織負(fù)責(zé)維護(hù),比較流行的有RxJava/RxJS/Rx.NET歇攻,社區(qū)網(wǎng)站是 reactivex.io固惯。
RxJava最核心的兩個(gè)東西是Observables(被觀察者,事件源)和Subscribers(觀察者)缴守。Observables發(fā)出一系列事件葬毫,Subscribers處理這些事件。這里的事件可以是任何你感興趣的東西(觸摸事件屡穗,web接口調(diào)用返回的數(shù)據(jù)贴捡。)一個(gè)Observable可以發(fā)出零個(gè)或者多個(gè)事件,知道結(jié)束或者出錯(cuò)村砂。每發(fā)出一個(gè)事件源祈,就會(huì)調(diào)用它的Subscriber的onNext方法,最后調(diào)用Subscriber.onNext()或者Subscriber.onError()結(jié)束锋拖。
Rxjava的看起來(lái)很想設(shè)計(jì)模式中的觀察者模式,但是有一點(diǎn)明顯不同,那就是如果一個(gè)Observerble沒(méi)有任何的的Subscriber,那么這個(gè)Observable是不會(huì)發(fā)出任何事件的颂跨。
Android 創(chuàng)造的AsyncTask和Handler尾序,其實(shí)都是為了讓異步代碼更加簡(jiǎn)潔弃揽。RxJava 的優(yōu)勢(shì)也是簡(jiǎn)潔痕慢,但它的簡(jiǎn)潔的與眾不同之處在于娜庇,隨著程序邏輯變得越來(lái)越復(fù)雜藕溅,它依然能夠保持簡(jiǎn)潔。
三、React Native
一句話總結(jié):React Native是 Facebook 推出的開源項(xiàng)目,基于 JavaScript 和 React 用于開發(fā)Android和ios的程序。
Facebook 在 React.js Conf 2015 大會(huì)上推出了 React Native。React Native 的語(yǔ)言是基于 JavaScript扼鞋,這必然會(huì)使得代碼可以從服務(wù)器端動(dòng)態(tài)更新成為可能。當(dāng)然,代碼的安全性將更一步受到挑戰(zhàn)。
React Native 結(jié)合了 Web 應(yīng)用和 Native 應(yīng)用的優(yōu)勢(shì)谣殊,可以使用 JavaScript 來(lái)開發(fā) iOS 和 Android 原生應(yīng)用蛇捌。在 JavaScript 中用 React 抽象操作系統(tǒng)原生的 UI 組件,代替 DOM 元素來(lái)渲染等。
React Native 使你能夠使用基于 JavaScript 和 React 一致的開發(fā)體驗(yàn)在本地平臺(tái)上構(gòu)建世界一流的應(yīng)用程序體驗(yàn)。React Native 把重點(diǎn)放在所有開發(fā)人員關(guān)心的平臺(tái)的開發(fā)效率上——開發(fā)者只需學(xué)習(xí)一種語(yǔ)言就能輕易為任何平臺(tái)高效地編寫代碼维哈。Facebook 在多個(gè)應(yīng)用程序產(chǎn)品中使用了 React Native飘庄,并將繼續(xù)為 React Native 投資碾盐。
本篇完。