<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          知乎:fastjson這么快,為啥老外還是熱衷 jackson?

          共 1177字,需瀏覽 3分鐘

           ·

          2020-01-27 23:33

          作者:?甘明來源:https://dwz.cn/ztVmUvBI


          知乎上有人提問:fastjson這么快,為啥老外還是熱衷 jackson? 下面是甘明的回答,從各個方面分析了這個問題:


          哈哈哈,我來回答這個問題!


          因為我實在是對這兩個庫太熟悉了。


          1、你寫個bean,然后屬性里分別有包含_(下劃線開頭、#開頭)之類的屬性,序列化為json時,出現(xiàn)屬性丟失,那么自然你也無法反序列化回來。


          這個問題,1.2.14版本以后已經(jīng)改正。


          2、翻閱fastjson的源碼,你會發(fā)現(xiàn)有很多寫死的代碼,比如:針對spring之類的框架的各種處理,都是用classload判斷是否存在這種類名。


          這是什么意思呢?


          意思就是如果你用spring的那種思想,自己寫了個類似的功能,因為你這個項目里沒有spring的那個類,那么用起來就有一堆bug;當(dāng)然不僅限于這些,還有很多,比如ASM字節(jié)碼織入部分,看源碼的話,能發(fā)現(xiàn)的缺點數(shù)不勝數(shù)。


          3、其解析json主要是用的String類substring這個方法,所以解析起來非常“快”,因為申請內(nèi)存次數(shù)很少。


          但是因為jdk1.7之前substring的實現(xiàn)并沒有new一個新對象,在使用的時候,如果解析的json非常多,稍不注意就會出現(xiàn)內(nèi)存泄漏(比如一個40K的json,你在對象里引用了里邊的一個key,即使這個key只有2字節(jié),也會導(dǎo)致這40K的json無法被垃圾回收器回收),這也是“快”帶來的負面效果。


          而且這還不算,在jdk1.7以上版本對string的substring方法做了改寫,改成了重新new一個string的方式,于是這個“快”的優(yōu)勢也不存在了。


          405543aedb90a20f83f080e25c5e041c.webp


          最后,fastjson就是一個代碼質(zhì)量較差的國產(chǎn)類庫,用很多投機取巧的的做法去實現(xiàn)所謂的“快”,而失去了原本應(yīng)該兼容的java特性,對json標(biāo)準(zhǔn)遵循也不嚴(yán)格,自然很難在國際上流行。?


          json從發(fā)明到現(xiàn)在非常流行,并不是因為json快的原因(比json快且小巧的格式和類庫一大把),而是因為json和web結(jié)合的時候更易于使用,對開發(fā)人員易于理解。


          很多人拿fastjson和jackson比,就像拿非智能機和iphone比待機時間,其功能性不一樣,jackson的很多功能fastjson并沒有實現(xiàn),所以這種對比也不客觀。


          fastjson之所以沒在國際上流行起來,最主要的原因應(yīng)該是開發(fā)者的思路全放到“快”上去了,而偏離了“標(biāo)準(zhǔn)”及功能性,質(zhì)量也不夠好,有點“舍本逐末”的味道。


          當(dāng)然在目前的環(huán)境下,國產(chǎn)軟件能踏實的心態(tài)做好開源的不多,fastjson團隊能這么快的反饋并修正問題,這種精神還是值得稱贊的。希望國內(nèi)的技術(shù)從業(yè)者能更重視“技術(shù)的原始需求”。


          你覺得會是什么原因?歡迎在留言區(qū)討論。

          有道無術(shù),術(shù)可成;有術(shù)無道,止于術(shù)

          歡迎大家關(guān)注Java之道公眾號


          好文章,我在看??

          瀏覽 27
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  色欲影视淫香淫色 | 99这里只有精品国产 | 狠狠操狠狠操 | 亚洲乱码一区二区三区 | 黄色激情在线观看小视频 |