(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
因为jde是一个emacs-lisp语言包,它的安装是很是方便的,固然,须要具备 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-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。