轉載:emacs-jde開發環境設置

使用emacs-jde進行Java開發

(Hacking Java with emacs-jde)java

進行Java開發的朋友們通常都使用某種IDE進行開發,比較經常使用的有JBuilder ,Visual Cafe,Visual Age等。使用IDE開發對於初學者是一種很好的手段。但對於熟悉 了linux/unix開發習慣的朋友們,使用這樣的IDE進行開發的缺點和限制是顯而易見的, 首先,你不得不瞭解各個IDE不一樣的用法,同時不得不接受各類Wizard強加給 你的代碼,這些代碼(尤爲是通過改動以後)常常是醜陋且使人費解的。(本人就常常對 着JBuilder產生的醜陋代碼噁心)。其次,這些IDE通常都或多或少地使用了私有的工具 或庫,對軟件的可移植性埋下了隱患。最後,最令我沒法接受的是在個人機器 (PIII500,128M,NT4)上,JBuilder的速度實在沒法使人滿意(可能其餘IDE在這方面好 一些)。linux

使用emacs(本文使用emacs來表明GNU emacs或XEmacs)來開發程序顯然是個 很好的選擇,其效率、高度的可配置性和極其強大的功能足以讓任何人愛不釋手, 本人更是標準的hardcore-xemacs-fan。因爲Java的特性一些特性,使用emacs這樣的純 編輯器來進行Java開發也有其不方便之處,對於較大的項目,源文件常常分佈在繁多的 目錄中(/com/foo/bar/.....),若是使用emacs進行開發,須要頻繁的敲入冗長的目錄 名,這是一大不方便之處。其次,在Java編譯和運行調試,咱們須要向編譯器,虛擬機 傳遞一些參數,固然,可使用Makefile來實現,但這些參數大多並不複雜,使用make 這樣功能強大的工具備些破費了。還有,對於一些常用的功能或語句如(System.out .println,implements)每次使用都本身敲顯然太煩瑣。最後,對於一個OO語言來講,有 一個類瀏覽器也是很方便的。

如今,使用jde能夠基本克服全部這些缺點,將IDE的功能和emacs的優勢完美地 結合起來。jde是一個使用emacs-lisp編寫的ide軟件包,主要部分有Paul Kinnucan開發,在emacs中安裝jde後能夠基本實現大多數商業IDE系統所提供的功能。由其主要特性有:shell

  • 針對Java的語法高亮顯示和縮進。
  • 關鍵字及類方法等的自動補全(SourceInsight?,目前還不很成熟).
  • 編譯錯誤定位。
  • 框架代碼自動產生(Listener,println等)
  • 工程文件(記錄編譯運行調試參數)
  • 樹狀類和文件瀏覽器顯示
  • 集成幫助(javadoc)及調試功能(jdb+gud)
  • 除了這些特徵外,jde固然具備emacs的一切優秀特徵,如可移植性(幾乎一切 OS),可配置性(幾乎是無限的,黑客的生命,:-))。下面將具體介紹jde的安裝及使用

安裝

因爲jde是一個emacs-lisp語言包,它的安裝是很是方便的,固然,須要具備 emacs配置的基本知識。首先,須要知足其安裝要求,編程

  1. emacs,GNU Emacs 或XEmacs 19 版以上,軟硬件平臺不限。
  2. 確認安裝了jde須要的一些emacs-lisp包(package),有speedbar(類瀏覽器),semantic(語法分析),eieio(OO lisp),elib(Emacs lisp Utilities),另外,有些功能須要beanshell(什麼是beanshell?www.beanshell.org) ,在XEmacs下運行須要安裝FSF-compat包
  3. 將jde包解開到某目錄,修改你的.emacs配置文件增長如下一些內容:
        ;; Set the debug option to enable a backtrace when a
         ;; problem occurs.
         ;; 當有問題出現顯示錯誤信息,便於調試
         (setq debug-on-error t)
         ;; Update the Emacs load-path 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
         (add-to-list 'load-path (expand-file-name "~/emacs/semantic-1.3.3"))
         (add-to-list 'load-path (expand-file-name "~/emacs/speedbar-0.13"))
         (add-to-list 'load-path (expand-file-name "~/emacs/eieio-0.16"))
         (add-to-list 'load-path (expand-file-name "~/emacs/jde/lisp"))
         (add-to-list 'load-path (expand-file-name "~/emacs/elib-1.0"))
         ;; If you want Emacs to defer loading the JDE until you open a
         ;; Java file, edit the following line
         ;; 不自動加載jde-mode
         (setq defer-loading-jde t)
         ;; to read:
         ;;
         ;;  (setq defer-loading-jde t)
         ;;
         ;; 編輯.java文件時加載jde
         (if defer-loading-jde
            (progn
              (autoload 'jde-mode "jde" "JDE mode." t)
              (setq auto-mode-alist
                    (append
                     '(("\\.java\\'" . jde-mode))
                     auto-mode-alist)))
          (require 'jde))

若是安裝無誤的話,使用emacs打開java文件時將自動進入jde-mode,過程可能 須要幾秒鐘,由於jde將調用semantic對整個文件進行語法分析。瀏覽器

使用jde

進入jde-mode後,咱們天然能夠發現與普通Java-Mode有一些不一樣,首先是語法 的高亮顯示更加"Java"化,一目瞭然。xemacs頂部的菜單也有了一些變化多了三個菜單項 ,"JDE","Classes","Senator",JDE菜單裏包括了JDE提供的全部功能,下面將詳細介紹, "Classes"是JDE對Java文件進行語法分析後生成的,包括了當前文件中的全部類,變量, 方法,能夠經過選擇菜單的方式訪問相應的代碼。而Senator菜單是由semantic包生成的, 能夠經過token的方式對源文件進行搜索定位。下面咱們來看看emacs-lisp爲咱們提供了什 麼樣的功能:app

JavaDoc支持:JavaDoc是JDK提供的文檔生成工具,經過遵循必定的規範對源代碼進行注 釋,JavaDoc能夠生成整個程序的Java風格文檔。在jde中,咱們只須要將光標定位在某 method的開始,按C-c C-v j,jde將自動生成Javadoc框架註釋,在相應的部分寫好說明後 ,可使用javadoc工具生成Java風格的文檔。框架

自動補全:將變量jde-enable-abbrev-mode變量設置爲t,jde能夠實現自動補全的功能, 避免咱們手工輸入的煩瑣和易錯,補全主要有三種類型,首先關鍵字補全,便可以自動 補全Java語言的關鍵字,如咱們敲入"impl",jde就會自動補全成爲implements(一個本人 常常拼錯的關鍵字).其餘的如abstract能夠用"ab"來補全,固然,這只是emacs-lisp雕蟲 小技罷了,但重要的是,你能夠經過對變量jde-mode-abbrevations變量的修改來本身定義 那些關鍵字應補全,應怎樣補全(這樣太方便了!)。編輯器

下面介紹對控制流結構的補全,即if-else等結構的補全,能夠避免控制結構寫大 了之後結構發生錯誤,不過本人體會只要你有良好的編程習慣,這個東西用處不是太大。 比較有用的還有變量名的補全,如咱們在某Java文件中定義了名字較長的變量,名爲 "variablenametoolong",在後面須要引用時,咱們沒必要記住變量的名字,在輸入頭幾個字 母后,按M-/鍵,jde將自動補全爲相應的變量名,若是有多個選擇,屢次按M-/能夠找到你 須要的。SourceInsight式的全局method補全功能目前jde經過beanshell實現,還不夠成熟 。ide

代碼框架:jde能夠自動生成特定類和代碼段的框架代碼,不須要用戶屢次重複輸入,目 前支持的有:函數

import自動生成,即不須要知道某class究竟是在什麼package裏,敲入其名字後 按C-c C-v C-z,jde會自動調用beanshell找到相應的package並自動加入import;method重 載自動生成,便可以根據當前繼承的類來自動生成重載函數的框架;

interface自動生成,根據所implements的interface,自動生成所須要的重載 的函數(太方便了,不須要本身對着文檔一個一個地實現了);根據模版生成某特定類型 類的框架,目前有WindowListener,ActionListener,Get/Set等等。以上這些模版均可以 根據須要本身來修改,great!

項目文件:將全部編譯,運行參數一次存儲起來,設置好classpath,sourcepath ,mainclass...以後咱們能夠在任一文件的Buffer中按C-c C-v C-c對當前文件進行編譯, 按C-c C-v C-r能夠自動運行項目,或按C-c C-v C-d進行調試。

集成幫助:設置好幫助文件的URL後,可使用C-c C-v C-n自動運行啓動Browser 來查看幫助,最好安裝emacs-w3m,這樣看幫助很是方便,更方便的是設置好Class的幫助文 件後能夠實現上下文敏感的幫助。在某符號上調用jde-help-symbol,能夠自動顯示該符號 的幫助。

類和文件的瀏覽:jde提供了三種方法,第一種即咱們已提過的Class菜單,第二 種是使用etags,第三種最強大的是使用speedbar實現的樹狀瀏覽器。幾乎和商業IDE使用的 沒有任何區別,能夠用圖形方式快速地訪問文件,類的方法及變量及其所依賴的包等等。

調試:jde經過gud提供了對jdb的支持,同時爲了更好地發揮jde的功能,jde的做者們還專門寫了一個本身的調試器JDEbug。遺憾的是對此本人研究不夠。

配置

jde擁有幾乎無限的可配置性,最基礎能夠修改與jde相關的變量和key-binding等,深 入一些的能夠修改模版等,固然最深刻的就是直接Hack其源碼了。

總結

本文簡要介紹了emacs下的Java IDE-jde的安裝使用和基本功能,但願更多的朋友能喜歡 上emacs和jde.以上只是一最簡要的介紹,具體功能和妙處還須要在使用中體會。 須要說明的一點是使用jde首先必須具備emacs的基本知識,其次要有一點Hack精神,如 果須要一個上手快的傻瓜式的IDE,那jde可能就不能知足要求了。 關於jde有關的資料,maillist等其餘信息,能夠訪問jde主頁http://jde.sunsite.dk。

相關文章
相關標籤/搜索