summaryrefslogtreecommitdiffstats
path: root/2019/transcripts/19.md
blob: 1419e1ea1646c159ab047960d5a9cd2bb39ad6f5 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
[[!meta title="Emacs: My awesome Java environment - Torstein Krause Johansen (skybert)"]]

## 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 (20002001)
- [JDEE](//github.com/jdee-emacs/jdee)  (20012009)
- [gtags](//www.gnu.org/software/global/manual/global.html)
- jtags
- [Malabar](//github.com/m0smith/malabar-mode) (20112012)
- [JDIbug](//github.com/udalrich/jdibug)    (20092011)
- [eclim](//github.com/emacs-eclim/emacs-eclim)     (20132017)
- [Meghanada](//github.com/mopemope/meghanada-emacs) (20172018)
- [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