1.關(guān)于作者
大家好!我是來自深圳技術(shù)大學(xué)FSR(編者注:FidelityFX Super Resolution超分辨率技術(shù)的縮寫)實(shí)驗(yàn)室的同學(xué),標(biāo)題FFH就是FSRlab For Harmony!并且我也正在參加OpenHarmony成長(zhǎng)計(jì)劃從論文到開源提交研究,以后我們也會(huì)陸續(xù)在這個(gè)社區(qū)記錄學(xué)習(xí)心得和體會(huì)。
在OpenHarmony成長(zhǎng)計(jì)劃啃論文俱樂部里,F(xiàn)HH小組同學(xué)們與華為、軟通動(dòng)力、潤(rùn)和軟件、拓維信息、深開鴻等公司一起,學(xué)習(xí)和研究序列化相關(guān)技術(shù)…
2. 引言
相信大家不管是在鴻蒙應(yīng)用開發(fā),web開發(fā)或者小程序開發(fā),都會(huì)用JSON(編者注:JavaScript Object Notation)或者XML(編者注:Extensible Markup Language 可擴(kuò)展標(biāo)記語言)進(jìn)行數(shù)據(jù)的傳輸,大家對(duì)這兩個(gè)技術(shù)的使用并不陌生,但是我們往往只是局限在使用上,所以在闡述為什么XML會(huì)被JSON取代之前,我想先把這兩個(gè)東西的起源和由來都給大家簡(jiǎn)單的科普一遍。
3. XML
3.1標(biāo)記型語言
講XML之前,我們先來了解一下標(biāo)記型語言,我就用通俗地語言描述一下,比如我現(xiàn)在要寫一篇博客告訴你們?yōu)槭裁碭ML會(huì)被JSON取代,那這篇博客里面會(huì)有標(biāo)題,二級(jí)標(biāo)題,代碼段,高亮文本等等,這些最終都會(huì)顯示在網(wǎng)站上。
那么問題來了,瀏覽器怎么知道我顯示地文字是標(biāo)題還是高亮文本…
于是就有了Markdown這門標(biāo)記語言,它就是用各種標(biāo)記符號(hào)說明了哪里是標(biāo)題,哪里是高亮文本。說白了,標(biāo)記語言就是為了讓冗雜的數(shù)據(jù)結(jié)構(gòu)化,使用標(biāo)記語言后,能讓計(jì)算機(jī)和人能清晰辨別各類數(shù)據(jù),如下例子,用#來標(biāo)記一級(jí)標(biāo)題,``內(nèi)可以放高亮文本。比如網(wǎng)頁能按照標(biāo)題,段落,圖片呈現(xiàn),都得歸功于標(biāo)記型語言HTML。
# 標(biāo)題
`高亮文本`
3.2XML起源
最早在1969年,IBM開發(fā)了第一種文檔描述語言,用來解決不同系統(tǒng)中文檔格式不同的問題,把這種標(biāo)記語言稱為通用標(biāo)記語言GML(Generalized Markup Language),后面這門語言也被不斷改進(jìn):
GML(1969)—>SGML(1986 國(guó)際標(biāo)準(zhǔn)化組織采納)—>SGML(2018改進(jìn)并完善)
SGML(編者注:Standard Generalized Markup Language 標(biāo)準(zhǔn)通用標(biāo)記語言的縮寫)具有相當(dāng)高的規(guī)范性和可擴(kuò)展性,但是就是因?yàn)橐?guī)范多,導(dǎo)致開發(fā),學(xué)習(xí),維護(hù)的成本就很高。
到了1989年歐洲粒子物理實(shí)驗(yàn)室的研究員在SGML的基礎(chǔ)上,提出了HTML(編者注:HyperText Markup Language 超文本標(biāo)記語言的縮寫),一種超文本的標(biāo)記語言,簡(jiǎn)單,通用,語法要求寬松(可以嵌套使用)。
然后隨著Web得發(fā)展,傳輸過程中負(fù)載的數(shù)據(jù)量越來越大,如果沒有結(jié)構(gòu)化數(shù)據(jù)的話,處理傳輸?shù)臄?shù)據(jù)消耗會(huì)非常非常大,而且非常麻煩,而HTML重點(diǎn)是對(duì)于數(shù)據(jù)的顯示,不關(guān)心所描述的數(shù)據(jù)結(jié)構(gòu),缺乏對(duì)文檔數(shù)據(jù)含義的確切描述,不能滿足對(duì)各類信息的存儲(chǔ),傳遞和搜索的需求,基于以上需求,又一次在SGML的基礎(chǔ)之上,簡(jiǎn)化出一種規(guī)范,1996年,提出了另一種標(biāo)記型語言命名為XML(可擴(kuò)展標(biāo)記語言),就這樣,XML出現(xiàn)了。XHTML(編者注:Extensible HyperText Markup Language 可擴(kuò)展超文本標(biāo)記語言的縮寫)是基于XML的一種語法更加嚴(yán)格的標(biāo)記語言。
3.3XML示例
比如A公司要獲取到B公司名字叫Hagon的員工個(gè)人信息,這時(shí)B公司接受到A公司的請(qǐng)求后,就給A公司傳輸發(fā)送了如下XML格式數(shù)據(jù):
<title>員工信息title>
<person id="666">
<name>Hagonname>
<age>66<age>
<sex>男sex>
<job>頭鐵前端工程師job>
person>
因?yàn)榻Y(jié)構(gòu)清晰,A公司拿到數(shù)據(jù)后很方便地進(jìn)行了處理。
3.4XML的瓶頸
雖然XML標(biāo)準(zhǔn)本身簡(jiǎn)單,但與XML相關(guān)的標(biāo)準(zhǔn)卻種類繁多,W3C制定的相關(guān)標(biāo)準(zhǔn)就有二十多個(gè),采用XML制定的重要的電子商務(wù)標(biāo)準(zhǔn)就有十多個(gè)。
隨著AJax(之前叫XMLHTTP,2005年后才叫Ajax)技術(shù)的流行,XML的弊端也越來越顯現(xiàn):大家都知道XML實(shí)現(xiàn)是基于DOM(編者注:Document Object Model 文檔對(duì)象模型的縮寫)樹實(shí)現(xiàn)的,而DOM在各種瀏覽器中的實(shí)現(xiàn)細(xì)節(jié)不盡相同,所以XML的跨瀏覽器兼容性并不好,所以急需一種新的數(shù)據(jù)負(fù)載格式集成到HTML頁面中以滿足Ajax的要求。
這就到了我們要講的JSON。
4. JSON
4.1JSON的誕生
前面我們說了隨著Ajax的流行,而各種瀏覽器對(duì)DOM的實(shí)現(xiàn)細(xì)節(jié)不盡相同,所以會(huì)出現(xiàn)兼容性問題,這對(duì)前端開發(fā)同學(xué)來講真的是災(zāi)難。因?yàn)橐粋€(gè)功能可能需要用代碼去兼容各種不同的瀏覽器,還要調(diào)試,工作量巨大。
但是問題總有辦法能解決,那就利用所有主流瀏覽器中的一種通用組件——JavaScript引擎。這樣只要?jiǎng)?chuàng)造一種JavaScript引擎能識(shí)別的數(shù)據(jù)格式就可以啦!
然后就誕生了JavaScript Object Notation (JSON),它是一種輕量級(jí)的、基于文本的、獨(dú)立于語言的數(shù)據(jù)交換格式,它源于ECMAScript編程語言標(biāo)準(zhǔn)。
4.2JSON示例
也是上一個(gè)員工信息的例子,用JSON就可以表示為:
{
"title":"員工信息",
"id":666,
"name":"Hagon",
"age":"66",
"sex":"男",
"job":"頭鐵前端工程師"
}
第一點(diǎn)可以看到,可以看到?jīng)]有像XML一樣有太多嵌套的標(biāo)簽,都是以類似鍵值對(duì)的形式表示,結(jié)構(gòu)簡(jiǎn)單。
第二點(diǎn),在編寫XML時(shí),第一行需要定義XML的版本,而JSON不存在版本問題,格式永遠(yuǎn)不變。
5.XML與JSON的數(shù)據(jù)對(duì)比
說了那么多紙上的白話,接下來用數(shù)據(jù)說話。
5.1場(chǎng)景介紹
場(chǎng)景由一系列較小的試驗(yàn)組成,這些試驗(yàn)根據(jù)我們的每一項(xiàng)指標(biāo)來確定JSON和XML在統(tǒng)計(jì)上是否不同。采用均值比較消耗時(shí)間檢驗(yàn)。我們將20000、40000、60000、80000和100000個(gè)編碼對(duì)象發(fā)送到服務(wù)器,并收集每種情況的指標(biāo)。表3、4和5顯示了從這些試驗(yàn)中獲得的指標(biāo)。
5.2時(shí)間消耗
從下面這張表格上,不難看出XML處理相同數(shù)據(jù)的時(shí)間消耗大約是JSON的30倍。
5.3CPU及內(nèi)存利用率
下面兩表分別是JSON和XML的CPU和內(nèi)存利用率數(shù)據(jù)。
對(duì)應(yīng)的圖形化表達(dá)如下:從左到右依次是用戶CPU利用率的平均百分比,系統(tǒng)CPU利用率的平均百分比和內(nèi)存利用率的平均百分比。
可以看出,F(xiàn)igure3顯示了JSON每次試驗(yàn)的平均CPU和內(nèi)存利用率。圖4展示了XML每次試驗(yàn)的平均CPU和內(nèi)存利用率。Figure5通過在同一個(gè)圖上繪制Figure3和Figure4(方便對(duì)比),說明了JSON的資源利用率和XML的資源利用率之間的差異。上圖數(shù)據(jù)表明,XML使用的用戶CPU利用率整體上明顯低于JSON。JSON和XML編碼的傳輸在服務(wù)器上使用的內(nèi)存量幾乎相同(圖中表面XML內(nèi)存利用率的淺藍(lán)色折線被重疊遮住了)。
5.4總結(jié)
在上面的實(shí)驗(yàn)數(shù)據(jù)可以看到,JSON的性能明顯強(qiáng)于XML。
XML與JSON在web不斷發(fā)展且傳輸數(shù)據(jù)量日益增大的背景下, 在要求算力的時(shí)代下,JSON毫無疑問會(huì)是更加優(yōu)秀的一方。并且現(xiàn)在也又很多JSON的解析器,比如Gson,F(xiàn)astJson,Jackson等,這些解析器也在不斷助力JSON的發(fā)展。
6.參考文獻(xiàn)
<本文完>
寫在最后
OpenHarmony 成長(zhǎng)計(jì)劃—“啃論文俱樂部”(以下簡(jiǎn)稱“啃論文俱樂部”)是在 2022年 1 月 11 日的一次日常活動(dòng)中誕生的。截至 3 月 31 日,啃論文俱樂部已有 87 名師生和企業(yè)導(dǎo)師參與,目前共有十二個(gè)技術(shù)方向并行探索,每個(gè)方向都有專業(yè)的技術(shù)老師帶領(lǐng)同學(xué)們通過啃綜述論文制定技術(shù)地圖,按“降龍十八掌”的學(xué)習(xí)方法編排技術(shù)開發(fā)內(nèi)容,并通過專業(yè)推廣培養(yǎng)高校開發(fā)者成為軟件技術(shù)學(xué)術(shù)級(jí)人才。
啃論文俱樂部的宗旨是希望同學(xué)們?cè)陂_源活動(dòng)中得到軟件技術(shù)能力提升、得到技術(shù)寫作能力提升、得到講解技術(shù)能力提升。大學(xué)一年級(jí)新生〇門檻參與,已有俱樂部來自多所高校的大一同學(xué)寫出高居榜首的技術(shù)文章。
如今,搜索“啃論文”,人們不禁想到、而且看到的都是我們——OpenHarmony 成長(zhǎng)計(jì)劃—“啃論文俱樂部”的產(chǎn)出。
OpenHarmony開源與開發(fā)者成長(zhǎng)計(jì)劃—“啃論文俱樂部”學(xué)習(xí)資料合集
1)入門資料:啃論文可以有怎樣的體驗(yàn)
https://docs.qq.com/slide/DY0RXWElBTVlHaXhi?u=4e311e072cbf4f93968e09c44294987d
2)操作辦法:怎么從啃論文到開源提交以及深度技術(shù)文章輸出https://docs.qq.com/slide/DY05kbGtsYVFmcUhU
3)企業(yè)/學(xué)校/老師/學(xué)生為什么要參與 & 啃論文俱樂部的運(yùn)營(yíng)辦法https://docs.qq.com/slide/DY2JkS2ZEb2FWckhq
4)往期啃論文俱樂部同學(xué)分享會(huì)精彩回顧:
同學(xué)分享會(huì)No1.成長(zhǎng)計(jì)劃啃論文分享會(huì)紀(jì)要(2022/02/18)https://docs.qq.com/doc/DY2RZZmVNU2hTQlFY
同學(xué)分享會(huì)No.2 成長(zhǎng)計(jì)劃啃論文分享會(huì)紀(jì)要(2022/03/11)https://docs.qq.com/doc/DUkJ5c2NRd2FRZkhF
同學(xué)們分享會(huì)No.3 成長(zhǎng)計(jì)劃啃論文分享會(huì)紀(jì)要(2022/03/25)
https://docs.qq.com/doc/DUm5pUEF3ck1VcG92?u=4e311e072cbf4f93968e09c44294987d
現(xiàn)在,你是不是也熱血沸騰,摩拳擦掌地準(zhǔn)備加入這個(gè)俱樂部呢?當(dāng)然歡迎啦!啃論文俱樂部向任何對(duì)開源技術(shù)感興趣的大學(xué)生開發(fā)者敞開大門。
掃碼添加 OpenHarmony 高校小助手,加入“啃論文俱樂部”微信群
后續(xù),我們會(huì)在服務(wù)中心公眾號(hào)陸續(xù)分享一些 OpenHarmony 開源與開發(fā)者成長(zhǎng)計(jì)劃—“啃論文俱樂部”學(xué)習(xí)心得體會(huì)和總結(jié)資料。記得呼朋引伴來看哦。
原文標(biāo)題:為什么JSON將逐漸取代XML?
文章出處:【微信公眾號(hào):開源技術(shù)服務(wù)中心】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
-
開源技術(shù)
+關(guān)注
關(guān)注
0文章
389瀏覽量
7975 -
OpenHarmony
+關(guān)注
關(guān)注
25文章
3731瀏覽量
16434
原文標(biāo)題:為什么JSON將逐漸取代XML?
文章出處:【微信號(hào):開源技術(shù)服務(wù)中心,微信公眾號(hào):共熵服務(wù)中心】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論