[[!meta title="How Emacs became my awesome Java editing environment - Torstein Krause Johansen"]] [[!meta copyright="Copyright © 2019 Torstein Krause Johansen"]] [[!template id=vid src="https://mirror.csclub.uwaterloo.ca/emacsconf/2019/emacsconf-2019-19-how-emacs-became-my-awesome-java-environment--skybert.webm" type="video/webm"]] ### Download - [Video (Live)](https://mirror.csclub.uwaterloo.ca/emacsconf/2019/emacsconf-2019-19-how-emacs-became-my-awesome-java-environment--skybert.webm) (720p) - [Video (Prerecording)](https://mirror.csclub.uwaterloo.ca/emacsconf/2019/emacsconf-2019-19-how-emacs-became-my-awesome-java-environment--prerec--skybert.webm) (1080p) ### Notes #### Emacs: My awesome Java environment by torstein @ skybert dot net #### Hi, I'm Torstein 👋 - Been in ❤ with Emacs since 2000 #### I've used many Java plugins/packages - java-mode (2000 → 2001) - [JDEE](//github.com/jdee-emacs/jdee) (2001 → 2009) - [gtags](//www.gnu.org/software/global/manual/global.html) - jtags - [Malabar](//github.com/m0smith/malabar-mode) (2011 → 2012) - [JDIbug](//github.com/udalrich/jdibug) (2009 → 2011) - [eclim](//github.com/emacs-eclim/emacs-eclim) (2013 → 2017) - [Meghanada](//github.com/mopemope/meghanada-emacs) (2017 → 2018) - [lsp-java](//github.com/emacs-lsp/lsp-java) (2018 → present) #### My requirements - Zero conf: Easily setup a new Java project - Fast: must handle large projects - Large meaning ~7000 classes (Tomcat has 2200) - Easy to switch between projects #### Seeing is believing Will use a wee app, [cheese-shop](//gitlab.com/skybert/cheese-shop) to show the Java features in Emacs. - Auto completion - Code navigation - Jump to source of 3rd party libraries - Import classes - Static import methods and fields - Run JUnit tests from within Emacs - Linting - Unused variables - Wrong syntax - Missing generics - Implement missing class - Implement missing method - Debug application from within Emacs - Debugger with conditional break points - Refactoring: rename variable - Refactoring: extract to variable - Refactoring: extract to method