java

位置:IT落伍者 >> java >> 浏览文章

使用emacs-jde进行Java开发


发布日期:2023年01月19日
 
使用emacs-jde进行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等其他信息

上一篇:Java 接口的异常设计疑惑

下一篇:天才排序算法:睡眠排序