999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

國產平臺下Eclipse對JNI快速開發支撐的設計與實現

2019-10-08 05:07:46詹秋芳王巖
無線互聯科技 2019年14期

詹秋芳 王巖

摘? ?要:Eclipse作為一款Java IDE開發環境,受到越來越多程序員的喜愛。但是Eclipse對JNI開發的支持并不友好,很多操作都需要切換到控制臺上輸入命令來完成,并且不支持對Native函數的調試,這些不利因素無形中增加了JNI開發的成本與難度。文章基于國產平臺,系統研究了Eclipse插件開發技術,根據JNI開發的特點,結合用戶實際需求,在Eclipse中分別實現了JNI的可視化開發以及調試開發,從Java工程到C工程無縫銜接,界面友好、操作便利,實現了Eclipse環境下對JNI快速開發的支撐,增強了Eclipse IDE的功能,豐富了國產平臺的軟件生態環境,對于國產平臺的產業化發展具有重要的學術意義及應用價值。

關鍵詞:國產平臺;Java本地接口;集成開發環境;Java開發工具;C/C++開發工具

Eclipse作為一款Java IDE開發環境,受到越來越多程序員的喜愛。Java是一類解釋性語言,具有跨平臺執行的特性,但是該特性勢必會有部分性能損耗,因此,在開發過程中,如果有實時性的要求,那么通常會采用面向底層、速度更快的語言來實現,JNI技術就是可以實現Java調用另一種語言的函數[1]。但是使用過JNI開發的人都知道,目前,Eclipse IDE對JNI并沒有提供可視化開發手段,程序員需要啟動終端,手動敲入命令執行部分代碼,最后,仍需切回到Eclipse IDE調用驗證,而且Eclipse IDE對JNI的調試也沒有提供好的解決方案。

針對這一現狀,本文將研究“Eclipse JNI快速開發支撐技術”的設計與實現,通過Eclipse插件技術,實現JNI開發的可視化以及JNI Native函數調試的一體化,滿足JNI開發的便捷性、實用性的需求,優化Eclipse IDE環境。

1? ? 國產平臺

國產平臺主要是指國產硬件、國產基礎軟件以及其他國產應用軟件[2]。在基于增強國產平臺自主可控能力的共識下,大力推進國產平臺產業化發展,積極與產業上下游廠商密切合作,構建完善的國產軟硬件生態系統,包括芯片、硬件、軟件、整機系統各個環節,將其應用于通用服務器、大數據、網絡安全、安全存儲、工業控制等領域[3]。目前,無論是國產硬件還是國產軟件,部分關鍵技術尚未掌握,自主核心技術難以為繼,既需要耗費大量精力解決硬件適配問題,又需要持續滿足應用開發單位對最新軟件開發工具的需要,還需要為用戶提供最新、最易用的應用軟件。國產平臺生態環境僅解決有無問題,離可用、好用都有一定的距離。

2? ? Eclipse及JNI開發介紹

Eclipse是一個集成開發環境,為用戶提供可視化的開發手段,該開發環境初衷主要支持Java等各種應用的開發,可以采用插件的技術來增強Eclipse框架的支撐能力[4]。JNI是Java標準平臺中的一個重要功能,彌補了Java與平臺無關這一重大不足,在Java實現跨平臺的同時,也能與其他語言(如C,C++)的動態庫進行交互,給其他語言發揮優勢的機會[5]。使用JNI進行開發的優勢有以下幾點。

2.1? 運行效率提高

目前,國產平臺的CPU頻率明顯低于X86架構,當硬件性能暫時無法提升時,對于Java應用來說,實時性要求高的任務可以用C/C++語言來實現,Java和C/C++之間可以采用JNI來實現通信,這樣也能比較好地解決Java應用效率低下的問題。

2.2? 內存管理利用率高

Java的內存全部由虛擬機來管理,C/C++語言由程序員來管理,可以靈活地操作內存,內存利用率會高很多。

2.3? 防破解

由于Native函數采用C/C++語言來實現,會編譯成二進制機器代碼,所以對于產品的核心技術采用JNI來實現,這樣不易破解。

如果使用了JNI,那么Java程序就喪失了跨平臺的優點,對于JNI Native函數部分的代碼,不同平臺架構往往需要重新編譯,所以Java應用程序是否使用JNI技術需要考慮業務需求,是效率優先還是部署為重。

通常情況JNI開發的步驟如下:

(1)在Java文件中編寫Native調用接口,形如:

(2)定義對應的JNI Native函數的實現。

①通過命令javah,生成Native函數對應的頭文件(.h)。

②根據生成的頭文件(.h)創建一個對應的源文件(.cpp),文件中包含Native函數實現,用戶可以在函數內實現具體業務需求。

③編譯源文件(.cpp),生成與架構相關的動態庫。

④在Java程序中通過JNI直接調用Native函數以驗證功能是否正常。

在上面的步驟中,①和③均需要切換到命令行終端上運行,②需要用戶手動創建和編輯源文件。由此可見,目前在Eclipse IDE環境下進行JNI開發異常繁瑣。本文提出的JNI快速開發支撐技術,很好地解決了這個問題。

3? ? JNI快速開發支撐技術的實現方案

JNI快速開發支撐包括“可根據Native函數接口自動創建相應C/C++工程”“在Eclipse IDE環境中支持Java主程序對Native函數的調試”兩部分。這兩部分功能均可作為一個獨立的程序模塊,采用Eclipse插件技術來實現,能夠動態地添加和自由地刪除,比較方便集成到Eclipse IDE環境中。

3.1? JNI可視化開發

JNI可視化開發的功能可概括為:(1)由Native函數生成頭文件(.h)及源文件(.cpp)框架。(2)創建可生成動態庫的C/C++工程,且工程中需包含相應源文件。(3)C/C++工程編譯后得到的動態庫能夠被Java主程序自動加載。上述功能實現起來表現為一個連續且完整的過程,實現過程如圖1所示。

打開Eclipse工程瀏覽界面,用戶單擊Java文件時,通過菜單或按鈕,激活JNI可視化開發插件提供的Native函數的轉換功能,生成Native函數接口的頭文件(.h)。用戶可選擇生成的頭文件(.h),插件根據頭文件自動創建相應C/C++工程,且工程中包含相應源文件(.cpp)框架,該框架根據Native頭文件的函數聲明來實現,用戶僅需實現業務邏輯即可。C/C++工程編譯后產生的動態庫文件生成到指定路徑下,原Java工程可自動加載該路徑下的動態庫。

3.2? JNI調試開發

JNI調試開發是指在Eclipse IDE環境下,Java主程序調試運行到Native函數時,能夠自動啟動GDB進程調試Native C/C++函數主體,并且在IDE環境中提供堆棧、變量、寄存器等調試信息顯示窗口供用戶診斷。JNI調試開發包括調試環境設置模塊、調試通信模塊以及調試信息顯示模塊。調試環境設置模塊需要設置C/C++源文件位置、C/C++動態庫和調試信息路徑以及GDB Attach模式設置等。調試通信模塊實現Java調試器與GDB調試進程之間的通信。調試信息顯示模塊用來顯示變量、寄存器、加載模塊以及堆棧信息。

如果沒有安裝JNI調試開發插件,那么在調試Java主程序時,遇到Native函數的調用,通常情況下調試流程是沒有辦法進入到Native C/C++函數主體內部的。在JNI調試開發插件的支撐下,調試運行到Native函數調用處時,將會啟動GDB進程,并且附加到正在調試運行的Java主程序進程空間中[6]。GDB進程在啟動的同時,會加載已經配置好的Native C/C++函數的動態庫及調試信息,定位Native C/C++函數的源文件。加載完成后,GDB進程暫停在Native C/C++函數入口處,此時,可激活相應的調試堆棧,調試狀態將會從Java主程序空間切換到Native C/C++函數空間,此時,Java主程序處于等待狀態。接著,可以遵循GDB的調試命令調試Native C/C++函數主題。Native C/C++函數調試結束后,需要斷開GDB進程與Java主程序的連接,調試狀態會重新返回到Java主程序上,此時,Java主程序對Native C/C++函數的調試過程才結束。帶有Native函數的Java主程序調試流程如圖2所示。

4? ? 結語

本文重點論述了在國產平臺下Eclipse集成開發環境對JNI快速開發支撐技術的實現方案。首先,介紹了當前國產平臺下的軟件生態環境現狀。其次,指出了目前JNI開發的現狀,提出了JNI快速開發支撐方案,滿足JNI開發的便捷性、實用性的需求,對繁榮國產平臺的產業化發展具有重要的學術意義及應用價值。

[參考文獻]

[1]任俊偉,林東岱.JNI技術實現跨平臺開發的研究[J].計算機應用研究,2005(7):180-184.

[2]程健,吳蔚.國產計算平臺在指揮控制系統中的應用研究[J].自動化與信息工程,2011(3):41-44.

[3]倪光南.發展自主可控的信息技術和產業[J].電子產品世界,2015(10):25-26.

[4]張旻,麥先根,賈璐.Eclipse插件開發技術淺探[J].航空計算技術,2006(6):17-18.

[5]董偉巍.JNI技術在網絡交互中的應用[J].電子設計工程,2016(6):125-127.

[6]蘭利東,喬永強.GDB遠程調試環境的設計與實現[J].單片機與嵌入式系統應用,2005(10):22-25.

主站蜘蛛池模板: 亚洲免费毛片| 国内精品小视频在线| 国产精品第| 国产精品3p视频| 高清国产在线| 国产精品yjizz视频网一二区| 一本一道波多野结衣av黑人在线| 香蕉99国内自产自拍视频| 福利片91| 中文字幕色在线| 亚洲精品图区| 欧美一级夜夜爽| 精品国产美女福到在线不卡f| 国产凹凸一区在线观看视频| 亚洲国产成人无码AV在线影院L| 久久99久久无码毛片一区二区 | 米奇精品一区二区三区| 天天躁狠狠躁| jizz国产视频| 亚洲免费黄色网| 国产亚洲精品yxsp| 2022国产无码在线| 久久无码av三级| 国产一级妓女av网站| 91精品国产综合久久香蕉922 | 欧洲亚洲欧美国产日本高清| 综合天天色| V一区无码内射国产| 亚洲成人一区二区| 免费国产在线精品一区 | 人妻精品久久无码区| 亚洲色欲色欲www网| 狠狠v日韩v欧美v| 亚洲精品自拍区在线观看| 亚洲成a人片| 午夜精品久久久久久久99热下载| 一本大道香蕉久中文在线播放 | 亚洲精品国产乱码不卡| 99在线视频免费| 天天婬欲婬香婬色婬视频播放| 久久免费看片| 91精品啪在线观看国产60岁| 精品一区国产精品| 国产一区二区人大臿蕉香蕉| 久久6免费视频| 欧美视频二区| 国产极品嫩模在线观看91| 99热线精品大全在线观看| 中文字幕亚洲另类天堂| 91精品国产一区自在线拍| 亚洲天堂精品在线| 国产自在线拍| 精品国产污污免费网站| 亚洲色图欧美一区| 在线五月婷婷| 波多野结衣的av一区二区三区| 日本在线亚洲| 一本一本大道香蕉久在线播放| 亚洲天堂伊人| 久久免费精品琪琪| 亚洲AV免费一区二区三区| 欧美va亚洲va香蕉在线| 四虎精品免费久久| 97亚洲色综久久精品| 熟妇人妻无乱码中文字幕真矢织江| 久久semm亚洲国产| 久久久久国产精品免费免费不卡| 色综合成人| 久久精品无码中文字幕| 免费看久久精品99| 国产91特黄特色A级毛片| 亚洲综合极品香蕉久久网| 国产日韩丝袜一二三区| 热思思久久免费视频| 国产成人a毛片在线| 久久精品人妻中文系列| 无码精油按摩潮喷在线播放| 亚洲中文制服丝袜欧美精品| 亚洲一区二区三区麻豆| 97久久超碰极品视觉盛宴| 91偷拍一区| 无码在线激情片|