An implementation of Emacs in Java, Scheme, and ELisp
Author: Per Bothner Homepage: http://jemacs.sourceforge.net/ Family: EmacsFamily JavaBasedEditors Platform: Java Virtual Machine License: GPLJEmacs is a re-implementation of Emacs, written in a mix of Java, Scheme, and Emacs Lisp (ELisp).
JEmacs uses Kawa to compile Scheme and ELisp into Java bytecodes. Kawa is a widely-praised Scheme implementation that includes many Scheme extensions, powerful Java/Scheme? interoperability, and high performance though a sophisticated compiler.
Kawa is being extended to support ELisp. This is so JEmacs can run the many existing Emacs packages written in ELisp. These will be compiled into Java bytecodes, which means ELisp will run on any Java engine, and benefit from the engineering being put into JVMs, such as "Just-In-Time" compilers. This could be substantially faster than the existing Emacs bytecode interpreter.
It will also be possible to write Emacs packages using Scheme. This should provide higher performance and cleaner design through the use of static scoping. You also get all the extensions and optimizations of Kawa. (The FSF also plans to base a future Emacs on Scheme, using Guile; however, I believe Kawa will provide better performance and a better design.)
JEmacs uses either the Swing toolkit or Eclipse's SWT toolkit to provide GUI functionality. Swing is the latest standard Java GUI toolkit, provides lots of high-level functionality, and has many concepts inspired by Emacs. (Swing is freely available, but not free software.)