Publications and Presentations by Per Bothner

Some of these use these scripts.

Miscellaneous Programming-Language papers

Speedy Scripting: Productivity and Performance was presented September 21, 2010 at JavaOne. The slides are here. Dutin Marx wrote a write-up.

Kawa Papers

Writing a 3-D Multiplayer Game with Kawa and JMonkeyEngine was presented October 26, 2015 at JavaOne. Slides are as here as html or as pdf.

Kawa - fast scripting on the Java platform was published on on December 3, 2014. A related Slashdot article.

Kawa and gnu.bytecode update was presented July 2010 at the JVM Language Summit. Here is the video.

Scheme, XQuery, and JavaFX: Compiling using Kawa or Javac was presented September 26, 2008 at the JVM Language Summit. Slides are available here.

Mixing Lisps in Kawa was presented June 22, 2005, at the 2005 International Lisp Conference, in Stanford, California. Papers and slides available here.

XML challenges to programming language design was presented June 13, 2004 at the 1st European Lisp and Scheme Workshop in Oslo. Papers and slides available here.

Kawa: Compiling Programming Languages to the JavaTMVirtual Machine was presented at JavaOne on June 11, 2003.

Functional Scripting Languages for the JVM was presented on September 21, 1999 at "3rd Annual European Conference on JavaTM and Object Orientation", in Århus, Denmark. Here are the slides (best viewed on a browser with good css and png support).

Kawa: Compiling Scheme to Java provides a good overview of how Kawa is implementated. I presented it on November 17, 1998, at the Lisp Users Conference ("Lisp in the Mainstream" / "40th Anniversary of Lisp") in Berkeley, CA.
You can
browse it online, get the SGML/Docbook source, or get the gzip'd Postscript version. You can also get the slides, either the LaTeX source, or the gzip'd Postscript version.
This paper is a longer and updated version of the Usenix 98 paper.
It is the base for the (incompletely updated) Kawa internals paper.

Kawa - Compiling Dynamic Languages to the Java VM was presented on June 19 at the 1998 Usenix conference in New Orleans.
You can get the SGML/Docbook source, or the gzip'd Postscript version, or browse the HTML version. You can also get the slides, either the LaTeX source, or the gzip'd Postscript version.

XQuery papers

Compiling XQuery to Java bytecodes was presented June 18, 2004 at XIME-P in Paris. Papers and slides available here.

Writing and Debugging XQuery Web Apps with Qexo was published June 11, 2003 on

What is XQuery? is a short overview and introduction to XQuery. It was first published in the July 2002 issue of the XML Journal (volume 3, issue 7, pages 42-46), and a revision published October 16, 2002 by

Generating XML and HTML using XQuery is a longer article published December 23, 2003 by

XML Queries Compiled to Bytecodes was presented at JavaOne on March 29, 2002. You can get the slides.

JEmacs papers

JEmacs - The Java/Scheme-based Emacs was published March 2002 in issue 3 of the original incarnation of the Free Software Magazine. A copy (with all the pictures!) is here. It is a revision of the Usenix 2000 paper.

JEmacs: re-implementing Emacs using Java and Unicode was presented on March 27, 2000 in Tsukuba, Japan. The slides were generated from an xml file.

JEmacs - The Java/Scheme-based Emacs was presented June 23 at the 2000 Usenix conference in San Diego (Freenix Track, pages 271-278). You can get the XML/Docbook source, or the printable PDF version, or browse the HTML version.

Papers relating to Gcj, the Gcc-based Java compiler

Compiling Java with GCJ is in the January 2003 issue (page 74-78) of Linux Journal.

GCJ - A Multi-platform Optimizing Ahead-of-time Compiler for the JavaTM Platform was presented at the 1999 JavaOne.

A Gcc-based Java Implementation (IEEE Compcon'97) discusses Cygnus's plans to implement Java using an ahead-of-time compiler based on gcc. You can get the extended abstract (html); the complete paper (gzip'd Postscript); or the slides of my talk (TeX source) or (gzip'd Postscript).

Compiling Java for Embedded Systems is a more recent paper, also on Cygnus's Java implementation plans using gcc. It includes some discussion on implementing Java on embedded systems. The paper was presented at the Embedded System Conference West (San Jose, September 1997). The slides are available in gzip'd Postscript.

Writing native Java methods in natural C++ discusses interaction between Java and C++. Get the browsable HTML, or SGML/Docbook source.

You might also want to check the GCJ page.

Other Gcc-related Papers

A Compile Server for Gcc was presented May 26, 2003 at the Gcc Developer's Summit in Ottawa. You can read the paper (pdf version) or get the texinfo source. You can read the slides as one big web page, or as multiple web pages, or get the XML source.


XQuery Kick Start, by James McGovern, Per Bothner, Kurt Cagle, James Linn, and Vaidyanathan Nagarajan was published by Sams in 2003.


Efficiently Combining Logical Constraints with Functions, Ph.D. disseration, Computer Science Department, Stanford University, December 1988.

High-level Data Types in Programming Languages, Cand[idatus] Scient[arium] thesis, Institute of Informatics, University of Oslo, July 1980.


Translating Smalltalk to Java was a little note I wrote November 1996. I never never actually implemented any of these ideas, but it is gratifying that various people have cited my note.

I'm a co-author of CORAL - A Database Programming Language, from the University of Wisconsin, Madison, 1990. (Available from

Per Bothner