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

Java語言在線編譯器的設計與實現

2019-11-16 06:02:02謝偉增金振乾
電子技術與軟件工程 2019年20期
關鍵詞:頁面程序用戶

文/謝偉增 金振乾

各種程序設計課程是高校理工科類學生的必修課程。這些課程不僅使學生的邏輯分析能力、程序設計能力得到訓練,還為后續的各種與編程有關的專業課程奠定了學習基礎。目前學習程序設計最常用的方式是通過集成開發環境IDE。無論用戶使用何種操作系統,都有支持該平臺的集成開發環境平臺可供使用。諸如Windows平臺下有微軟公司開發的Visual Studio,MacOS平臺下有蘋果公司開發的Xcode,另外還有一些跨平臺開發環境如Eclipse、Apache NetBeans和IntelliJ IDEA等等。這些IDE集成了編輯、編譯和調試等實用且強大的功能,適用于各種桌面環境,但是通常配置也比較復雜,而且往往還有版權方面的限制,使用成本較高。而另一方面,隨著移動通信網絡的迅猛發展,各種移動通信設備大量普及,無線網絡全面覆蓋,使得幾乎人人都可以通過無線寬帶網絡隨時聯網,始終在線。如果把這個途徑用于程序設計的實踐學習,使學生能夠通過智能手機、平板電腦等各種聯網設備訪問在線編譯器平臺,就能突破時間、空間的限制,以及軟件、硬件方面的約束,充分利用“碎片”時間,通過瀏覽器訪問在線編譯器,完成程序的編輯、編譯等任務。

在線編譯器通常使用瀏覽器/服務器的工作模式,將程序編譯和運行的主要功能放在服務器端,客戶端無需安裝任何開發環境和編譯器軟件,直接通過瀏覽器打開Web頁面與服務器進行交互,實現程序編寫、編譯及執行的全部過程。這樣不僅避免了在客戶端設備上安裝和配置傳統編譯環境的麻煩,也擺脫了對客戶端設備類型和性能的限制。基于這些優點,在線編譯器的開發和應用得到不斷地擴展。目前已有的在線編譯器有多種不同的實現類型,各種類型也都存在一些不足,主要表現在:界面不簡潔,支持編程語言種類少;傳統的物理服務器在部署、資源分配、可靠性等的不足與限制;編寫時無感應顯示框,不能高亮顯示代碼等方面。

因此,我們設計了一個基于Browser/Server模式的在線編譯器,在前端頁面實現了設備適配,允許用戶通過各種網絡終端設備訪問,在服務器端實現了源程序文檔管理、后臺編譯和前后臺信息交互的功能,提供穩定的多用戶在線編譯服務。

1 開發和運行環境

1.1 開發環境

開發過程中所選擇的集成開發環境為JetBrains公司的產品IntelliJ IDEA。作為目前最主流的Java集成開發環境之一,IntelliJ IDEA具備強大的靜態代碼分析和人機工程學設計,能夠顯著提高開發人員的生產力,而且還有基于Apache 2.0開放式授權的社區版本可供使用。IntelliJ IDEA原生支持maven,可進行高級項目管理,實現快速開發。在開發環境中完成項目設計和調試以后,將其部署到服務器上就可以正常訪問了。

1.2 服務器運行環境

編譯服務器是確保在線編譯功能得以實現的核心環節,既要具備高度的穩定性和快速的反應能力,又要能夠支持大量的并發連接,因此選擇以高性能、高穩定性著稱的Linux系統,各個主流發行版均可正常運行,如Debian,Ubuntu和CentOS等。應用軟件方面,采用成熟的OpenJDK 8,Apache Tomcat 8.5,并使用Maria DB 10作為后臺數據庫,為提高并發能力,還提高了數據庫連接池技術。該配置穩定可靠,成本低廉,性能較好。得益于這些軟件的跨平臺能力,同樣的系統也可以運行在Windows平臺上,提高了部署的便捷性。

2 關鍵技術

在線編譯器的應用把編譯和運行放到服務器上進行,消除了在客戶端設備上安裝編譯環境的需求。但是要實現在線編譯,有兩個核心問題必須要解決:一是如何把用戶在網頁上輸入的源程序代碼交給服務器進行編譯執行;二是如何將程序的運行結果或編譯錯誤信息在網頁上輸出。針對這些關鍵問題,我們采用了以下方式來解決。

2.1 動態編譯的實現方式

目前常用的Java語言動態編譯的實現方案主要有:

(1)使用JavaCompiler接口來實現Java源程序的動態編譯。

(2)通過StandardJavaFileManager類實現Java源程序動態編譯。

(3)從內存中動態編譯Java程序。

這些方式或者缺乏靈活性并效率較低,或者不符合系統需求,或者依賴于某個具體的Java類的版本和方法。因此我們采用了直接生成Runtime對象,并通過Runtime對象生成調用complie命令或run命令的相關進程,實現在服務器端編譯和運行Java程序的核心功能。

在調用complie命令或run命令時,先判斷服務器端操作系統的類型,然后根據類型構建相應的編譯命令行和運行命令行(命令行中還需包含需要執行的Java程序的代碼路徑及主類名稱)。首先通過調用相關方法進行編譯操作,編譯過程如果發現錯誤則返回錯誤信息,如果編譯成功則繼續調用相關方法進行運行操作,并返回運行結果。核心代碼如下所示:

圖1:程序代碼編輯及運行界面

2.2 編譯錯誤信息和運行結果的輸出

在編譯和運行Java源程序代碼時,可能會產生兩種信息,一種是運行結果輸出,一種是錯誤信息輸出,需要對這兩種信息都進行捕捉。所以在相關的方法中,我們創建了兩個輸入流,一個用于連接運行結果輸出,另一個用于連接錯誤信息輸出。但一般情況下,這兩種信息不會同時出現,程序正確執行時會輸出運行結果,程序執行失敗時會輸出錯誤信息。為了方便處理,我們捕捉這兩種信息,但合并到一個字符串對象中一同處理。在運行編譯命令時,如果程序沒有語法問題,不會有任何信息輸出,輸入流不會捕捉到任何信息;如果程序有語法問題,會輸出編譯錯誤或警告信息,輸入流也會捕捉到錯誤或警告信息。因此,如果編譯沒有出錯,捕捉到的信息對象為空,則可以繼續執行運行代碼的命令。如果編譯出錯,則到此結束,將捕捉到的編譯錯誤信息返回頁面顯示。

3 系統實現

3.1 代碼編輯器的實現

為了方便用戶直接在Web頁面上編輯程序,直接在頁面代碼中集成了名為CodeMirror的代碼編輯器組件。CodeMirror是一個基于MIT授權的開源項目,是基于JavaScript實現的通用文本編輯器,專門用于源代碼編輯,并附帶了許多能實現高級編輯功能的語言模式和插件,如代碼自動補齊、代碼著色、代碼折疊、快捷鍵綁定等。為了簡化代碼并節約服務器資源,程序中僅設置了必要的幾項功能和有限的幾種主題配色方案。實際上CodeMirror支持超過100種編程語言和許多種主題配色方案,這也為項目將來的功能擴展提供了有力的支撐。

3.2 前端與后臺開發

前端開發過程中使用了完全開源的Bootstrap前端開發框架,實現了基本的響應式布局,使得用戶注冊、登錄,源代碼編輯等各個頁面都能夠有效適配手機、平板等各種移動終端設備和PC等桌面終端設備。響應式交互頁面具備一般的靜態頁面所沒有的許多優點,既能避免針對不同設備的重復開發,有效節約成本,又能確保顯示的內容適應不同的平臺和不同的設備,保障用戶體驗。在線編譯器平臺本身的功能要求決定了其前端的頁面結構設計無需過于復雜,但必須保證在各種終端設備上都能被良好地呈現,因此在線編譯器的前端開發也更適合響應式頁面。

由于本項目在運行過程中面對的是大批量的學生,每名學生都有可能有多個源程序代碼需要管理,因此在后臺進行用戶認證、用戶信息提示以及用戶源代碼文檔處理的時候,我們引入了免費的、基于Apache許可證2.0版本發布的FreeMaker。FreeMaker是一種模版引擎,模版的編寫是通過專用的FreeMaker模版語言(FTL)實現的。通過這個引擎,可以在代碼中指定模版和需要變動的數據集,然后就可以通過引擎自動生成包含相應數據的文本內容。

圖2:移動設備端程序輸入界面

3.3 用戶界面設計

用戶界面是用戶與在線編譯器進行交互的接口,既要具備必要的功能,又要足夠簡潔,避免增加用戶的學習負擔。在線編譯器的重點功能是實現源代碼的提交和修改,并獲得程序的編譯錯誤信息和運行結果。對這些信息的交互和功能的實現做到集中展示和合理布局才能提供更好的用戶體驗,提高用戶使用在線編譯器的效率。因此,我們的設計思路是在用戶登錄到系統之后,所有的源程序選擇、源代碼編輯、執行編譯運行功能、查看運行結果、查看編譯錯誤信息等主要功能都呈現在一個頁面中,用戶無需在多個頁面中來回跳轉,也無需頻繁刷新頁面以顯示信息。

這個布局共有三個區域,覆蓋了用戶的源代碼的管理、提交、修改、運行、查看輸出結果的所有功能需求。當用戶登錄到在線編譯器系統后,在左側源代碼文件列表區域可顯示該用戶已經編制過的所有源代碼程序列表,通過點擊列表中某項,則該項對應的源代碼自動呈現到源代碼提交/編輯區域,用戶可對源代碼內容進行審核與編輯;編輯完成后,通過點擊“提交運行”按鈕,將編輯區域的源代碼提交到編譯服務器進行保存,然后由服務器端調用相關代碼進行編譯操作,如果編譯不成功,則獲取編譯錯誤信息并輸出到編譯錯誤信息顯示區域;如果編譯成功,則繼續調用相關代碼執行程序并獲取程序運行結果,然后將運行結果輸出到程序運行結果顯示區域。

4 測試實驗

4.1 Java程序測試

如圖1所示,當以合法用戶身份登錄以后,在左側的現有源代碼程序列表中選擇一個已經存在的源程序,其源代碼自動出現在右上側的源代碼編輯區域;圖1中所顯示的一段完整的Java源程序代碼,該程序代碼沒有任何語法錯誤,因此當用戶點擊“提交運行”按鈕之后,程序的運行結果將會自動顯示在右下側的程序運行結果顯示區域。

4.2 移動設備適應性測試

通過手機、平板電腦等移動設備訪問編譯服務器,并以合法用戶身份登錄后,也可以正常進行源代碼提交和編輯,并顯示程序運行結果或編譯錯誤提示信息等功能。需要注意的是,在移動設備上訪問在線編譯器的時候,受限于移動設備顯示屏幕的面積大小,這些元素無法同時顯示在屏幕上,但是可以通過上下滾動的方式進行查看。圖2所示的是在手機上進行源代碼輸入的界面,由于手機屏幕的面積有限,而虛擬鍵盤又遮擋了小部分屏幕,留給用戶的顯示面積并不算多,用戶能夠同時看到的源代碼也不多。雖然可以通過滾動的方式顯示位于編輯區域各個位置的代碼,但是用戶體驗始終不夠完美。因此在移動設備上訪問在線編譯器應主要以源代碼的提交、審閱和微量修改為主,同時輔以程序編譯和運行功能的實現,不適宜大量源代碼的持續輸入。不過由于智能手機等移動設備在學生的學習和生活當中占據了大量的時間,可以以智能手機訪問在線編譯器進行網絡在線編程,對分散的知識點及小規模的程序進行編程驗證,然后在實驗課上側重對綜合性及創新性的程序進行調試。該模式打破了傳統實驗室上機實踐在時間與空間上的限制,使編程實踐貫穿于課程教學的全過程,實現了信息技術與教學的有效融合。這種靈活多樣的編程實踐環境確實能使學生的編程能力得到提升。

5 結語

在線編譯器在計算機編程語言教學過程中有很大的應用需求,根據我們在2018級計算機應用技術專業兩個教學班級進行對照教學(一個班級按照常規的教學實踐環境進行編程訓練,對照班級將常規的教學實踐與在線編譯器的編程練習相結合)的結果表明,在線編譯器的使用能夠有效延長學生進行編程訓練的時間,在線編程作為常規的集成開發環境編程的有益補充,為學生提供了多樣化的編程實踐平臺,有力提高了學生自主學習的積極性和主動性。

在實踐當中我們也發現了這個在線編譯器目前存在的一些問題,例如對程序邏輯錯誤的檢測缺乏必要的手段;程序執行過程中缺乏必要的交互;編譯錯誤信息在源代碼編輯窗口的定位功能尚未實現。這些問題都會在后續的版本更新中逐步予以解決。將來該系統還可以擴展為在線學習平臺,不僅實現在線編譯的功能,還能夠實現編程作業的提交和審核、平臺使用情況數據的采集和統計、學習進度和學習問題反饋、代碼分享和編程協作等功能,以更低的成本和更高的靈活性,在編程語言教學領域發揮更大的作用。

猜你喜歡
頁面程序用戶
大狗熊在睡覺
刷新生活的頁面
保健醫苑(2022年1期)2022-08-30 08:39:14
試論我國未決羈押程序的立法完善
人大建設(2019年12期)2019-05-21 02:55:44
“程序猿”的生活什么樣
英國與歐盟正式啟動“離婚”程序程序
環球時報(2017-03-30)2017-03-30 06:44:45
關注用戶
商用汽車(2016年11期)2016-12-19 01:20:16
關注用戶
商用汽車(2016年6期)2016-06-29 09:18:54
關注用戶
商用汽車(2016年4期)2016-05-09 01:23:12
創衛暗訪程序有待改進
中國衛生(2015年3期)2015-11-19 02:53:32
如何獲取一億海外用戶
創業家(2015年5期)2015-02-27 07:53:25
主站蜘蛛池模板: 欧美日韩国产一级| 福利小视频在线播放| 久久青草免费91观看| 蜜桃臀无码内射一区二区三区| 午夜毛片免费观看视频 | 欧美午夜在线观看| 免费A∨中文乱码专区| 四虎国产永久在线观看| 免费毛片全部不收费的| 国产又色又爽又黄| 久久久久青草线综合超碰| 欧美日本在线观看| 青青草原国产免费av观看| 毛片网站在线看| 五月激激激综合网色播免费| 91精品伊人久久大香线蕉| 亚洲婷婷丁香| 国产乱论视频| 国产微拍一区二区三区四区| 制服无码网站| a级高清毛片| 成人午夜天| 国产丝袜第一页| 久久久久青草大香线综合精品| 全部毛片免费看| 91黄色在线观看| 久久精品国产国语对白| 一级片免费网站| 精品伊人久久久香线蕉| 亚洲最大情网站在线观看| 综合色在线| 尤物视频一区| 亚洲国产天堂久久九九九| 91伊人国产| 日韩精品一区二区三区大桥未久| 亚洲AⅤ综合在线欧美一区| av无码久久精品| 国产在线观看91精品| 国产在线高清一级毛片| 国产视频一区二区在线观看| 呦视频在线一区二区三区| 精品人妻无码中字系列| 国产成人盗摄精品| 久久中文电影| 第九色区aⅴ天堂久久香| 国产乱视频网站| 91精品久久久无码中文字幕vr| 婷婷开心中文字幕| 免费亚洲成人| 日本免费福利视频| 国产精品区视频中文字幕| 国产成人精品男人的天堂| 五月天丁香婷婷综合久久| 四虎影视无码永久免费观看| 国产浮力第一页永久地址| 欧美精品一二三区| 久久久久九九精品影院 | 99久久国产综合精品2020| 女人18毛片水真多国产| 色哟哟国产精品| 免费无码又爽又黄又刺激网站| 成人福利在线看| 极品性荡少妇一区二区色欲| 国产精品毛片一区| 亚欧乱色视频网站大全| 国产精品55夜色66夜色| 又爽又黄又无遮挡网站| 亚洲一区无码在线| 欧美黄网在线| 99精品伊人久久久大香线蕉| 亚洲日本www| 永久毛片在线播| 欧美黄网站免费观看| 中文字幕av一区二区三区欲色| 在线综合亚洲欧美网站| 亚洲日韩久久综合中文字幕| 97亚洲色综久久精品| 亚洲日韩每日更新| 美女免费精品高清毛片在线视| 丝袜美女被出水视频一区| 亚洲无码高清免费视频亚洲| 九色视频线上播放|