IntelliJ to Emacs - part 1 - The Plan
A bit of my history with editors and IDEs
I’ve been using Emacs and vim since the mid 90s. First for C/C++, then Java. Java has been my primary language since then.
At that time, I really used Emacs as an unmodified editor, not as a custom tool. Using Makefiles, and search/replace to do most of my work.
Eclipse
Around 2005, I made the switch to Eclipse IDE for my Java coding. Main advantages at the time was navigation, runners, debugger, refactoring and code actions. Eclipse was (and still is) a good IDE for Java coding, but a bad editor.
Some issues:
lots of modal behavior when doing many operations
freezes constantly on such modal operations. You think Emacs freezes, you havent seen Eclipse
Made for the mouse. It has many shortcuts to trigger actions, but any actions that needs user input will require the mouse.
Somewhat hard to extend. Requires to create a whole project, including a build script, generate an jar. All this to do simple things.
configuration hard to maintain
mostly prepackaged solution, that support plugins
IntelliJ
In the past 5-6 years, I’ve been using IntelliJ. Main advantages over Eclipse:
locks less. operations are not modal
a bit more reactive when editing code than Eclipse
better snippets
configuration can be synched on the cloud
Some issues I’ve seen:
2020-2021 was really bad. they made couple of releases that just made things really slow, hanging, or out of sync.
not easier to extend
mostly prepackaged solution, that support plugins
paid solution, while it’s not really a big deal, it makes it more difficult when changing clients, or for new coders on the team. Here it’s more about delays.
eclim, and other similar modes
I tried couple of modes that tried to bring Java to Emacs. Most of the time, basic features were missing, are not supporting new Java versions, or are unstable.
The Ultimate goal: Code Java in Emacs
With lsp-mode, my dream come true: doing all my coding in Emacs.
As mentionned earlier, Eclipse is a good IDE, but not a good editor. With the development made by lsp-mode, I can now hope to bring the IDE features of Eclipse within Emacs.
The Plan
Over the course of next year, I will:
document all the features I use daily in IntelliJ
categorize them
find how to do something similar in Emacs, lsp-mode, or other modes
post regularly my progress
Editing features I’m looking for
Here are the categories I have in mind at this point:
Basic editing features
import management
code formatting
Search/Replace
Refactoring
Linting
code actions
Navigation
Documentation
Builds
Managing dependencies
Open dependencies documentation and sources
Runners && Debugger
Integration with frameworks
Spring beans
spring integration
spring data
spring initializer
Hibernate / JPA
Other supporting tools
REST Client
Database client
JSON/XML editing