北(běi)京軟件(jiàn)開(kāi)發公司如(rú∏β→)何打破Java的(de)API
發表日(rì)期:2015-05-28 文(wén)章(zhāng)編輯:宜天信達 & 浏覽次數(shù):
北(běi)京軟件(jiàn)開(kāi)發公司如(rú)何打破Java的(de)APIδ≠,JAVA已成為(wèi)利用(yòng)圖書(shū)館建設方案共同≥≠ ★實踐。而重用(yòng)的(de)好(hǎo)處是(shì)↑≤ ₩衆所周知(zhī)的(de),一(yī)個(gè)經常被πα±忽視(shì)的(de)風(fēng)險是(shì)系統運行(xí₹ββng)時(shí)的(de)故障,由于在庫API獨立進化(huà)的 (de)變化(huà)。傳統上(shàng),一(yī)個(gè)程序,它使用(₩® yòng)的(de)圖書(shū)館之間(jiān)的(de)一(yī)緻性檢查在生(shēn&♦<g)成時(shí),當整個(gè)系統編譯和(hé)測試。然' 而,趨勢部分(fēn)升級系統重新部署隻進化(huà)庫版本的(de)結果的(de)情況©★≤下(xià),這(zhè)些(xiē)關鍵的(de)驗證步驟被省略。對(duì)于Java程₩σ∞序,部分(fēn)升級創造更多(duō)的(de)有(yǒu)趣的(de₹δπ)問(wèn)題,編譯器(qì)和(hé)虛拟機(jī)使用(yòng ♦ )不(bù)同的(de)規則集執行(xíng)的(de)提供者≤♣和(hé)消費(fèi)者之間(jiān)的(de)合同的(de)AP↑π↔'I。
目的(de)
北(běi)京軟件(jiàn)開(kāi)發公©₩ ε司研究了(le)真實世界中的(de)程序問(wèn)題的(d∑∑e)程度。我們在兩方面感興趣:API兼容性的(de)變化(huà)作(z∑≤Ω uò)為(wèi)圖書(shū)館發展的(de)影(yǐng)響,這¶>Ω(zhè)對(duì)使用(yòng)這(zhè)些(xiē)庫的(de)程序。
方法
北(běi)京軟件(jiàn)開(kāi)發♠< β公司研究的(de)是(shì)基于Qualitas語料庫20120401版÷§。一(yī)個(gè)數(shù)據集包括109個(gèφα)Java開(kāi)源項目和(hé)564計₽↓(jì)劃的(de)版本是(shì)從(cóng)語料。我們研究了(le)兩類依賴庫:嵌入式圖♠♣→₹書(shū)館的(de)顯式依賴,和(hé)依賴的(de)符号引用(yòng)定義在Maven構建±€'★文(wén)件(jiàn),解決在建立時(shí)間(jiā$↑♦n)。我們已經用(yòng)API分(fēn)析JACC,這(zhè)個(gδ™è)工(gōng)具是(shì)基于流行(xíng)的(de)ASM字節代碼±©≥分(fēn)析庫。
結果
北(běi)京軟件(jiàn)開(kāi)發公司發現(xiàn),對(duì)于大(dà)多(duō)數(shδ₩♠ù)的(de)程序進行(xíng),AP¶•∑I不(bù)穩定不(bù)兼容的(de)改 '變是(shì)常見(jiàn)的(de)。令人(rén)驚訝的(de)是ε☆ β(shì),在項目中使用(yòng)自(zì)動化(huà)的(de)↔≤σ依賴解析更多(duō)的(de)兼容性問(wèn)題。然而,我們發現('©↕λxiàn)隻有(yǒu)少(shǎo)數(shù)情況下(xià),這(zhè)一(yī)實際影↕¶♣∑(yǐng)響其他(tā)程序使用(yòng)的(de)σ₽API。
結論
宜天信達的(de)結論是(shì),API不(bù)穩定是(shì)普遍存在的(δ£de)問(wèn)題和(hé)原因使用(yòng)這(zhè)些(xiē≥£σλ)API的(de)程序。因此,更好(hǎo)的(de)工(gōng)具和(hé)方法來(l'✔↑ái)保障圖書(shū)館發展。
宜天信達的(de)結論是(shì),API不(bù)穩定是(shì)普遍存在的(δ£de)問(wèn)題和(hé)原因使用(yòng)這(zhè)些(xiē≥£σλ)API的(de)程序。因此,更好(hǎo)的(de)工(gōng)具和(hé)方法來(l'✔↑ái)保障圖書(shū)館發展。