JEmacs 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
JEmacs uses the Swing
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. If it cannot be freed or
cloned, JEmacs may have to switch to alternative toolkits).
JEmacs - The Java/Scheme-based Emacs
appeared in the March 2002 issue of the
Magazine. It is a revision of a paper presented at Usenix 2000.