北(běi)京軟件(jiàn)開(kāi)發公司如(rú)何打破∞<φ>Java的(de)API_北(běi)京軟件(jiàn)®≥πε開(kāi)發公司
發表日(rì)期:2015-05-28 14:54:16 ÷←↕ 文(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ēng)成時(shí),當整個∞♣(gè)系統編譯和(hé)測試。然而,趨勢部分(fēn)升級系統重新部署隻進化δ♥>(huà)庫版本的(de)結果的(de)情況下✘↔©(xià),這(zhè)些(xiē)關鍵的(de)驗證步驟$☆被省略。對(duì)于Java程序,部分(fēn)升級創造更多(duō)的(d♦ e)有(yǒu)趣的(de)問(wèn)題,∏"編譯器(qì)和(hé)虛拟機(jī)使用(yòng)不(bù)同的(de)規ε"∞則集執行(xíng)的(de)提供者和(hé)消費(fèi)者之間 ←¥(jiān)的(de)合同的(de)API。
目的(de)
北(běi)京軟件(jiàn)開(kāi)發公司研究了(le)真實世界δ>中的(de)程序問(wèn)題的(de)程度。我們在兩方面感興趣φ↕£:API兼容性的(de)變化(huà)作(zuò)為(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),§↕εAPI不(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)AP↑€ I。
結論
宜天信達的(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ū)館發展。