熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java核心技術 >> 正文

使用emacs-jde進行Java開發

2022-06-13   來源: Java核心技術 

  進行Java開發的朋友們一般都使用某種IDE進行開發比較常用的有JBuilder Visual CafeVisual Age等使用IDE開發對於初學者是一種很好的手段但對於熟悉了linux/unix開發習慣的朋友們使用這樣的IDE進行開發的缺點和限制是顯而易見的首先你不得不了解各個IDE不同的用法同時不得不接受各種Wizard強加給你的代碼這些代碼(尤其是經過改動之後)經常是丑陋且令人費解的(本人就經常對著JBuilder產生的丑陋代碼惡心)其次這些IDE一般都或多或少地使用了私有的工具或庫對軟件的可移植性埋下了隱患最後最令我無法接受的是在我的機器(PIIIMNT)上JBuilder的速度實在無法令人滿意(可能其他IDE在這方面好一些)
  使用emacs(本文使用emacs來代表GNU emacs或XEmacs)來開發程序顯然是個很好的選擇其效率高度的可配置性和極其強大的功能足以讓任何人愛不釋手本人更是標准的hardcorexemacsfan由於Java的特性一些特性使用emacs這樣的純編輯器來進行Java開發也有其不方便之處對於較大的項目源文件經常分布在繁多的目錄中(/com/foo/bar/如果使用emacs進行開發需要頻繁的敲入冗長的目錄名這是一大不方便之處其次在Java編譯和運行調試我們需要向編譯器虛擬機傳遞一些參數當然可以使用Makefile來實現但這些參數大多並不復雜使用make 這樣功能強大的工具有些破費了還有對於一些經常使用的功能或語句如(Systemout printlnimplements)每次使用都自己敲顯然太煩瑣最後對於一個OO語言來說有一個類浏覽器也是很方便的
  
  現在使用jde可以基本克服所有這些缺點將IDE的功能和emacs的優點完美地結合起來jde是一個使用emacslisp編寫的ide軟件包主要部分有Paul Kinnucan開發在emacs中安裝jde後可以基本實現大多數商業IDE系統所提供的功能由其主要特性有:
  
  針對Java的語法高亮顯示和縮進
  關鍵字及類方法等的自動補全(SourceInsight?目前還不很成熟)
  編譯錯誤定位
  框架代碼自動產生(Listenerprintln等)
  工程文件(記錄編譯運行調試參數)
  樹狀類和文件浏覽器顯示
  集成幫助(javadoc)及調試功能(jdb+gud)
  除了這些特征外jde當然具有emacs的一切優秀特征如可移植性(幾乎一切 OS)可配置性(幾乎是無限的黑客的生命:))下面將具體介紹jde的安裝及使用
  
  I安裝
  由於jde是一個emacslisp語言包它的安裝是非常方便的當然需要具有 emacs配置的基本知識首先需要滿足其安裝要求
  
  emacsGNU Emacs 或XEmacs 版以上軟硬件平台不限
  確認安裝了jde需要的一些emacslisp包(package)有speedbar(類浏覽器)semantic(語法分析)eieio(OO lisp)elib(Emacs lisp Utilities)另外有些功能需要beanshell(什麼是beanshell?) 在XEmacs下運行需要安裝FSFcompat包
  將jde包解開到某目錄修改你的emacs配置文件增加以下一些內容 ; Set the debug option to enable a backtrace when a
  ;; problem occurs
  ;; 當有問題出現顯示錯誤信息便於調試
  (setq debugonerror t)
  ;; Update the Emacs loadpath to include the path to
  ;; the JDE and its require packages This code assumes
  ;; that you have installed the packages in the emacs/site
  ;; subdirectory of your home directory
  ;; 加載所需的package
  (addtolist ´loadpath (expandfilename ~/emacs/semantic))
  (addtolist ´loadpath (expandfilename ~/emacs/speedbar))
  (addtolist ´loadpath (expandfilename ~/emacs/eieio))
  (addtolist ´loadpath (expandfilename ~/emacs/jde/lisp))
  (addtolist ´loadpath (expandfilename ~/emacs/elib))
  ;; If you want Emacs to defer loading the JDE until you open a
  ;; Java file edit the following line
  ;; 不自動加載jdemode
  (setq deferloadingjde t)
  ;; to read:
  ;;
  ;; (setq deferloadingjde t)
  ;;
  ;; 編輯java文件時加載jde
  (if deferloadingjde
  (progn
  (autoload ´jdemode jde JDE mode t)
  (setq automodealist
  (append
  ´((\\java\\´ jdemode))
  automodealist)))
  (require ´jde))
  
  如果安裝無誤的話使用emacs打開java文件時將自動進入jdemode過程可能需要幾秒鐘因為jde將調用semantic對整個文件進行語法分析
  
  II使用jde
  進入jdemode後我們自然可以發現與普通JavaMode有一些不同首先是語法的高亮顯示更加Java一目了然xemacs頂部的菜單也有了一些變化多了三個菜單項JDEClassesSenatorJDE菜單裡包括了JDE提供的所有功能下面將詳細介紹 Classes是JDE對Java文件進行語法分析後生成的包括了當前文件中的所有類變量方法可以通過選擇菜單的方式訪問相應的代碼而Senator菜單是由semantic包生成的可以通過token的方式對源文件進行搜索定位下面我們來看看emacslisp為我們提供了什麼樣的功能
  
  JavaDoc支持:JavaDoc是JDK提供的文檔生成工具通過遵循一定的規范對源代碼進行注釋JavaDoc可以生成整個程序的Java風格文檔在jde中我們只需要將光標定位在某 method的開始按Cc Cv jjde將自動生成Javadoc框架注釋在相應的部分寫好說明後可以使用javadoc工具生成Java風格的文檔
  
  自動補全:將變量jdeenableabbrevmode變量設置為tjde可以實現自動補全的功能避免我們手工輸入的煩瑣和易錯補全主要有三種類型首先關鍵字補全即可以自動補全Java語言的關鍵字如我們敲入impljde就會自動補全成為implements(一個本人經常拼錯的關鍵字)其他的如abstract可以用ab來補全當然這只是emacslisp雕蟲小技罷了但重要的是你可以通過對變量jdemodeabbrevations變量的修改來自己定義那些關鍵字應補全應怎樣補全(這樣太方便了!)
  
  下面介紹對控制流結構的補全即ifelse等結構的補全可以避免控制結構寫大了以後結構發生錯誤不過本人體會只要你有良好的編程習慣這個東西用處不是太大比較有用的還有變量名的補全如我們在某Java文件中定義了名字較長的變量名為 variablenametoolong在後面需要引用時我們不必記住變量的名字在輸入頭幾個字母後按M/鍵jde將自動補全為相應的變量名如果有多個選擇多次按M/可以找到你需要的SourceInsight式的全局method補全功能目前jde通過beanshell實現還不夠成熟
  
  代碼框架:jde可以自動生成特定類和代碼段的框架代碼不需要用戶多次重復輸入目前支持的有:
  
  import自動生成即不需要知道某class到底是在什麼package裡敲入其名字後按Cc Cv Czjde會自動調用beanshell找到相應的package並自動加入import;method重載自動生成即可以根據當前繼承的類來自動生成重載函數的框架;
  
  interface自動生成根據所implements的interface自動生成所需要的重載的函數(太方便了不需要自己對著文檔一個一個地實現了);根據模版生成某特定類型類的框架目前有WindowListenerActionListenerGet/Set等等以上這些模版都可以根據需要自己來修改great!
  
  項目文件:將所有編譯運行參數一次存儲起來設置好classpathsourcepath mainclass之後我們可以在任一文件的Buffer中按Cc Cv Cc對當前文件進行編譯 按Cc Cv Cr可以自動運行項目或按Cc Cv Cd進行調試
  
  集成幫助:設置好幫助文件的URL後可以使用Cc Cv Cn自動運行啟動Browser 來查看幫助最好安裝emacswm這樣看幫助非常方便更方便的是設置好Class的幫助文件後可以實現上下文敏感的幫助在某符號上調用jdehelpsymbol可以自動顯示該符號的幫助
  
  類和文件的浏覽:jde提供了三種方法第一種即我們已提過的Class菜單第二種是使用etags第三種最強大的是使用speedbar實現的樹狀浏覽器幾乎和商業IDE使用的沒有任何區別可以用圖形方式快速地訪問文件類的方法及變量及其所依賴的包等等
  
  調試:jde通過gud提供了對jdb的支持同時為了更好地發揮jde的功能jde的作者們還專門寫了一個自己的調試器JDEbug遺憾的是對此本人研究不夠
  
  III配置
  jde擁有幾乎無限的可配置性最基礎可以修改與jde相關的變量和keybinding等深入一些的可以修改模版等當然最深入的就是直接Hack其源碼了
  
  IV總結
  本文簡要介紹了emacs下的Java IDEjde的安裝使用和基本功能希望更多的朋友能喜歡上emacs和jde以上只是一最簡要的介紹具體功能和妙處還需要在使用中體會需要說明的一點是使用jde首先必須具有emacs的基本知識其次要有一點Hack精神如果需要一個上手快的傻瓜式的IDE那jde可能就不能滿足要求了關於jde有關的資料maillist等其他信息
From:http://tw.wingwit.com/Article/program/Java/hx/201311/25622.html
    推薦文章
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.