Readit News logoReadit News
tofflos · 8 months ago
> I’ll preface this by saying that if Neovim isn’t your primary editor, you should first try an IDE specifically for Java."

Seconded.

As someone who has spent a lot of time configuring editors, but doesn't enjoy it quite as much as he used to, I gave Java on Neovim a shot this summer.

There are two main routes to go - both of which are described in the article. Either install it yourself, "You read the friendly manual", or use someone else's installer, "You use a distro".

My problem with someone else's installer is that I don't understand what it's doing, which in turn gives me the feeling that it's pulling in the kitchen sink, which is exactly the feeling I hoped to avoid by not using my regular IDE.

My problem with installing it myself is that I have to learn the entire ecosystem including, but not limited to, learning how to use Neovim for more than editing a simple text file, learning the Lua scripting language, learning where Neovim keeps its' configuration files and what to put in them, curating a set of plugins for highlighting, launching code, debugging, etc., figuring out how to configure those plugins for Neovim and finally how to make those plugins play nice together.

In the end it just wasn't for me but if Neovim is your primary editor it might be for you.

> Java has one LSP option for Neovim, and that’s JDTLS (Java Development Tools Language Server) by Eclipse.

Just wanted to mention that there is another LSP for Java, https://github.com/apache/netbeans/tree/master/java/java.lsp..., but I don't know if anyone has gotten it to work with Neovim.

jitl · 8 months ago
I’ve tried out a few distros for vim and emacs over the years and usually drop them after a few hours of trying. But I gotta say I’m really enjoying LazyVim. It’s config layering system makes tweaking any specific plugin settings very easy, and it’s based on the “lazy.nvim” plugin manager that most plugins feature first in their README intros these days. That means there’s less a feeling of doing things “the normal way” vs “the weird distro specific way” that I experienced with DOOM EMacs and SpaceVim.

It’s definitely still a kitchen sink, lots of stuff that I wouldn’t configure on my own, but surprisingly discoverable via a popup that shows available keyboard shortcuts that appears after you type LEADER and wait a moment.

It’s also super fast to start up, putting most destros out there especially EMacs ones to shame.

The main downside is it encourages you to spread out your config in multiple Lua files, and overall learn and use more Lua stuff. But I think it’s worth the price.

bionsystem · 8 months ago
Last time I tried and iirc, lazyvim would print out all sorts of various errors within seconds of using it for very basic things, which is enough for me to give up on most tools unless they are forced onto me. That said I have yet to find a proper code editor for my needs which is not exactly dev ; so far I settle with plain vim.
lolinder · 8 months ago
Doesn't the idea of an "LSP for Neovim" mean the entire premise of LSP has failed? Wasn't the whole idea supposedly to put an end to editor-specific plugins in favor of one protocol spoken by all editors?
femiagbabiaka · 8 months ago
LSP exposes standard interfaces, but it still has to be bridged across the variety of languages editor plugins are written in. It’s much better than the previous state.

Deleted Comment

Sins_621 · 8 months ago
I was in the same place you were a month ago but I decided to just bite the bullet and build my own Neovim configuration from scratch. Fortunately I don't use auto-complete and an LSP was only a recent addition to my configuration. Telescope was one of the few plug-ins I configured off the bat and when you start small learning the eco-system isn't that much of a hurdle.

The Nvim Kickstart Project is a great starting point for your configuration and has it's config file heavily commented to teach you how to setup your own configuration, I highly recommend it.

itronitron · 8 months ago
Is there a Java code assist utility for neovim that isn't a language server?
SvenL · 8 months ago
Interesting. I always hear "you don't need a full blown IDE, vscode/neovim/other text editor should be enough". Then I read those articles about which plugins/bundles/addons I need to install and I wonder at which point do we call it IDE instead of text editor (with plugins).
serial_dev · 8 months ago
It heavily depends on the language, the frameworks and the actual project.

Languages that have great and standard tooling will work great. Frameworks that rely on basic language features work great. Projects that rely on standard tooling and features work great. Things just work.

Languages that have 3 decades of legacy warts, languages with no or poorly implemented LSPs, languages where the ecosystem relies heavily on runtime language features, frameworks that rely on behind the scenes magic and conventions, projects where for ten years the whole team only ever used one IDE… yeah, it’s not where vim/helix/vsc shines, and you will fight an uphill battle.

The_Colonel · 8 months ago
> Languages that have 3 decades of legacy warts

Only languages with negligible market share don't have 3 decades of legacy warts.

ghm2180 · 8 months ago
> the frameworks and the actual project.

This.

e.g. Android studio has a great preview feature for composable which makes it a joy to build them. It gives you an option to run just see the live effects of updating code for that composable in (a) IDE (b) Emulator (c) Device.

rafaelmn · 8 months ago
> Languages that have great and standard tooling will work great. Frameworks that rely on basic language features work great. Projects that rely on standard tooling and features work great. Things just work.

The only language that comes to mind fitting this description is Go ?

vbezhenar · 8 months ago
There's a spectrum. notepad.exe, vi, emacs/vim/notepad++, vscode, idea. Every new layer adds more features and adds more bloat. You can upgrade to the next layer by installing enough extensions (if editor allows it and those extensions exist). You can certainly turn your bare vim into vscode comparable editor with enough extensions. And you can certainly install enough extensions into vscode to make it comparable with idea.

An important thing is to find a personal sweet spot. For me, using Idea with hundred plugins is just not worth it. Spring plugin comes with thousands of features, but when I disable it, miss very few things, and the bloat is real: slow start, lots of new menu items and icons, new bugs.

I, personally, prefer to use editor on steroids like vscode, with full language-aware support. At the same time I'm using external terminal a lot, doing builds and stuff there. So IDE for me is an entire computer and vscode is part of this IDE.

tsimionescu · 8 months ago
> notepad.exe, vi, emacs/vim/notepad++, vscode, idea

You forgot the natural root of this hierarchy: ed, the standard text editor.

https://www.gnu.org/fun/jokes/ed-msg.en.html

The_Colonel · 8 months ago
> And you can certainly install enough extensions into vscode to make it comparable with idea.

No, you can't. Comparable plugins don't exist.

ramon156 · 8 months ago
There are people out there who don't even use an LSP with autocompletion or type handling, just syntax highlights. There's a theory that actively thinking about this will prevent u from making mistakes like forgetting a semicolon.

I do agree that some nvim setups are just IDE's in your shell, but it's also nice to have everything in one place. I don't like vsc's and Jetbrains's terminals at all, as it gets clunky too quick. To each their own though!

tolciho · 8 months ago
Syntax highlights were probably the first thing I disabled in vim, though they kept adding features—"that's nice, but how does one turn it off?"—so I'm on vi now. Hella distracting to have bloatware spam you like a pachinko parlor, but some folks will want that whole three ring circus cruise ship with the bearded lady tour, I guess. Color support got itself compiled out of the terminal, to avoid the results of git randomly squeezing the backside of a unicorn. Unix here is the IDE, which is fine, as I'm mostly not a programmer (why programmers keep launching flaming turds into production despite all the increasingly fancy tools is a somewhat entertaining question) and 35,000 lines of code is about the largest thing I deal with (vi, or a custom branch thereof). Plus some tools that I wrote that do exactly what I want them to. Multiple cores pegged because some AI nonesense is busy shoving crayons up its nose? No, thank you!
soraminazuki · 8 months ago
LSPs visually warns you the instant you forget a semicolon, so that error will only happen when you don't use LSPs.
sureglymop · 8 months ago
The best programmer I know very often codes in a simple notepad like text editor with no syntax highlighting or any kind of other help. Purely plain text.

He does this mainly when trying to show/explain something to someone in code and when initially drafting something. Not for full blown projects.

I still find it interesting though, because I personally don't nearly have good enough memory to even do that. I have to look things up constantly and rely on auto completion.

Carrok · 8 months ago
> There's a theory that actively thinking about this will prevent u from making mistakes like forgetting a semicolon.

I never want to waste a single brain cycle on a missing semicolon. That is what the editor (or autocomplete or AI or whatever) should be doing for me.

Kwpolska · 8 months ago
You don't need a full-blown IDE to write HTML. Maybe for Python. But for languages like Java, you're leaving a lot of productivity and error prevention on the table.
gf000 · 8 months ago
Or different interpretation: languages that don't have IDEs with the feature set and productivity of Java IDEs are leaving a lot on the table.
Sins_621 · 8 months ago
I agree I think a lot of people do tend to go overboard with the plugins they add to Neovim. I only use a hand-full of plugins myself; Telescope for fuzzy finding, LSP for navigation and Rainbow-delimiters. I've found attempting to add anything "un-neovim-like" such as tabs or a debugger to be more of a hassle and jankier than just using something better suited to that task.

I actually think the best way to learn Neovim is to build your own configuration with as little plugins as necessary for you to get the job done because it'll force you to learn the Neovim way of doing things. For example instead of relying on tabs I learnt to use the Mark system and it was a great addition to my workflow.

rat87 · 8 months ago
The I stands for Integrated. Although technically I think the big 3 Java IDEs are written as a pile of plugins largely to support multiple languages. But they do tend to feel more "integrated"/look more cohesive. I guess the point is that if you feel like opening a text file in something it's a text editor. If you don't it might be an idea. I do try to open up individual text files outside of a project in pycharm sometimes but usually it feels weird. Maybe that's why they added scratch files. Somehow shift+shift new scratch file json and copy/pasting feels easier then making a new file outside your project with the IDE
lkramer · 8 months ago
I use Vim (recently switched to Neovim on my work laptop) as my daily driver with a minimum set of plugins. My primary language right now is Go, but used to be C++. It works just fine for my purpose. I have tried using IDEs in the past, most recently vscode when I was trying to learn Rust, I always end up going back to Vim, I find it more a more enjoyable and streamlined experience. For IDEs it's usually a struggle getting everything to work for me, and if there is a new version it just ends up breaking everything. I'm sure it's just a matter of what I'm used to. However I learned JAVA at university and it's the one language I have never managed to come to terms with using vim. At university I used Netbeans and I think that remains my one positive experience with IDEs. I really liked how that worked (or maybe I just hadn't been conditioned that much at that point). Java seems to be designed around the idea that you should user an IDE though. Sooo Verbose, and so many frameworks...
o11c · 8 months ago
The full statement is "You don't need a full-blown IDE, just use (vim or whatever), unless you are writing in Java". Among mainstream languages, Java is uniquely hostile to being written by humans.

The statement is usually shortened under the assumption that nobody is writing Java by choice, and if you're writing it for work you're forced to use (Employer-provided development tool).

There are other languages that are hard to use without an IDE, but they always are relatively obscure ones and/or blatantly integrate the language itself tightly into the IDE, like Smalltalk or Scratch.

Most languages, it's feasible to write with nothing more than a regex-based keyword detector and symbol tagger. LSPs are overrated, other than the fact that they're a narrow waist for supporting multiple languages in multiple editors.

singpolyma3 · 8 months ago
As someone who writes a lot of java (mostly for android) without any plugins I'm curious what about Java you think requires them?
imron · 8 months ago
My .exrc file is about 10 lines long and has no plugins.

Combined with ctags and a terminal it’s all I need for the languages I’m familiar with (c, c++, rust, python and several others)

SvenL · 8 months ago
I always wonder, how do you debug which such a setup?
theonething · 8 months ago
I like working in terminals. An IDE will never run in the terminal. Vim with the plugins I like run in my terminal.
pjmlp · 8 months ago
Showing the age, Borland IDEs for MS-DOS, as one data point among many other ones.

In fact, the whole TUI craziness of IT world fashion is getting back to what used to be daily business in the 1980's and early 1990's.

lolinder · 8 months ago
Sincere question from someone who doesn't understand this: why do you like working in terminals?
mardifoufs · 8 months ago
I also need to configure which "plugins" I want whenever I install regular Visual Studio. In fact you can't really even start using it before that initial setup window. The time it takes to install and configure a plugin on vscode, for example, is basically 0 for most languages and platforms.
singpolyma3 · 8 months ago
Thu people saying the former are different people than the ones installing all dhise plugins. I just run without plugins mostly
robenkleene · 8 months ago
Today I generally think of an IDE supporting one language (or a few complementary languages) without any configuration, whereas a text editor usually requires configuration to get the same features. Although it's true the features are almost identical now. Though IDEs typically still offer some special sauce features, usually things that still don't fit cleanly into LSP and DAP (language server and debugger protocols respectively) models. On the flip side, text editors typically (lightly) support more file formats out of the box, and scale better, e.g., equally comfortable editing a single file or an entire project. TLDR: the trade off is between flexibility (text editor) or specificity (IDE).
TacticalCoder · 8 months ago
> I wonder at which point do we call it IDE instead of text editor

The most hilarious to me is when people refer to Emacs as a "text editor". I'm not talking about the fact that Emacs shall happily display pictures (inlined in a file like in org-mode for example or in their own window), open binary files, open PDF files, manipulate files over SSH (Tramp), etc.

Heck, as a statement some made Emacs run as PID 1.

But many seem to honestly think Emacs is "notepad with bad shortcuts".

przmk · 8 months ago
Looks very nice. One thing that always prevents me from using anything other than a full-blown IDE for Java is the fact that most entreprise projects use Maven and structure packages with the default Java way by using the FQDN structure (e.g.: org/example/groupid/packageid/submodule/File.java).

Maybe I'm missing something but navigating and finding/adding files in a structure that's 10-20 directories deep or more seems like a nightmare in pure Vim.

wffurr · 8 months ago
A good fuzzy finder helps a lot with this. You can type something like `ccufFoo` to match `com.company.util.factories.FooWidgetFactory`. I use fzf.vim for this.

Thankfully my company has its own hosted LSP that supports Java (and every other language in our bazel monorepo) so I don’t have to mess around with Eclipse and JDTLS (what happened to eclim?). But at a prior company I just worked without an LSP and just did a lot of referencing Java docs in a browser and split screen files.

fernandotakai · 8 months ago
another solution for fuzzy finding is telescope.nvim https://github.com/nvim-telescope/telescope.nvim

the thing i like the most about it is the amount of plugins you can add (including things like looking at nvim's paste ring).

rat87 · 8 months ago
> what happened to eclim

I was also curious. The project has been shut down/archived this August recommending java LSP instead but it seems like there hasn't been a lot of work or a release since 2021

https://github.com/ervandew/eclim

> (Aug. 03, 2024)

> Eclim has reached its end of life. The Language Server Protocol (LSP) and the various implementations are mature enough that eclim has become unnecessary.

> It has been a great run (nearly 20yrs!) and I'm grateful for everyone that helped out, from bug reports to patches, it's been awesome

VHRanger · 8 months ago
I can recommend the yazi CLI tool for filesystem traversal:

https://yazi-rs.github.io

It has support for fzf and zoxide for these uses. As well as a panoply of other goodies (ripgrep, file previews, commands without exiting the file explorer, etc.)

If one is willing to learn helix instead of nvim, I know there's integrations out there between the two as well. I wouldn't be surprised if there were for nvim as well.

le-mark · 8 months ago
I started down that route and decided it was just a lot of work ie mental effort I didn’t want to do. My motivation was eclipse maven plug-in was buggy and sucked at the time. I found (like most) IntelliJ gave a much more pleasant experience. How long have you been doing it and how have you managed to stick with it?
fire_lake · 8 months ago
What’s the LSP tool that integrates with Bazel?

Is it open source?

mdaniel · 8 months ago
FWIW, that is not a Maven-ism that is actually inherent to Java (the language and the runtime)[1]. Including case-sensitivity for the filename, which was an especially bold choice for Sun to make back in 1990, although I guess they're all "we'll sell more Solaris workstations!!1" or something

For example:

    $ mkdir foo
    $ cd foo
    $ printf 'package jimbo;\npublic class Foo2 {}\n' > fred.java
    $ javac -g -d . fred.java
    fred.java:2: error: class Foo2 is public, should be declared in a file named Foo2.java
    public class Foo2 {}
           ^
    1 error

The only exception that I'm aware of is that inner classes don't have to live in their own filename (given that they're more or less property of the owning class)

The Maven-ism that I'm aware of is the by default structure of {src/main/java, src/main/resources, src/test/java, src/test/resources} but (of course) those are customizable via the pom.xml if it jams up your project that much

1: https://docs.oracle.com/javase/specs/jls/se6/html/packages.h... (it's the oldest spec version they still link)

gf000 · 8 months ago
Package hierarchies are used during class loading from a directory, but there is nothing in the spec that mandates that kind of directory structure for the source code. Your link only uses the word "might", not "must".
brabel · 8 months ago
> The only exception that I'm aware of is that inner classes don't have to live in their own filename

Not only inner classes, you can have many top-level classes on the same file but they cannot be public.

lsllc · 8 months ago
Not at all -- if you're something like LazyVim with the stock config, then in a large project it's just <leader>ff to search by filename or <leader>sg to grep across the project (using ripgrep!) or for a symbol search <leader>sS (using symbols provided by the LSP).

I haven't found anything better than Neovim+Lazyvim and switched from ST4 a couple of years ago and never looked back.

jitl · 8 months ago
<leader><leader> also opens the fuzzy finder in LazyVim. I don’t like it quite as much as <shift><shift> which is the shortcut in Jetbrains but it’s better than <Cmd>-P in VS Code
pjot · 8 months ago
Similarly, I found the kickstart.nvim immensely helpful as a jumping off point.

https://github.com/nvim-lua/kickstart.nvim

qup · 8 months ago
you want the ctrl+p plugin

It's a fuzzy file finder.

For your example of `org/example/groupid/packageid/submodule/File.java` I might write "[Ctrl+P] pamodFi[Enter]"

If `File.java` is unique enough, I can just type that and it finds it without issue.

There's also filetree plugins if you really want the visual clutter

vips7L · 8 months ago
This is even how I navigate files in IntelliJ.
mhd · 8 months ago
Wouldn't that mostly matter if you're really navigating in your source code via the tree panel? In the post-Textmate days, fuzzy file finders seem to be all the rage whether you're using vim or IDEs (or Sublime etc.). Or you go to definition/references immediately.

I mostly use the file navigation when exploring the structure, which I'm not doing that often.

And which I probably should do with a class browser anyways, which I used to do often in Eclipse, way back in time, but it seems that particular SmallTalk-ism isn't very popular in contemporary IDEs.

baq · 8 months ago
Doing any work in a project worked on by multiple teams without C-P-style fuzzy file name matching is a recipe for frustration in any editor or IDE, regardless of the language. I've relied on this feature a lot when working in nvim+Python and nowadays in my vscode+typescript job it is one of my most heavily used shortcuts, too.
konfekt · 8 months ago
Try filepicker.vim [0] to navigate these in one of the many popular millers like lf, yazi, ranger or nnn

[0] https://github.com/Konfekt/filepicker.vim

BeefWellington · 8 months ago
Honestly having one single dedicated F key for jumping anywhere to a class or method definition is, for me, a killer feature that most alternatives lack. I do a lot of kinds of development with Vim, but for certain languages I find it a far better experience to use a language specific IDE.
nelup20 · 8 months ago
I like the idea of LSPs and have tried switching to Vim/Neovim/Emacs a few times, but Jetbrains' refactoring/intellisense is just so much better imo
atomicnumber3 · 8 months ago
One thing that non-Java devs don't get is just how much better the tooling is for Java than literally any other language.

Most jetbrains IDEs I find are indeed comparable to vscode plug-ins and a huge glob of vim plug-ins for most languages, especially the dynamically typed ones where the amount of static analysis you can do is already quite limited.

But for IntelliJ, literally no other editor comes close. Extract method/variable, all the "hey you wrote java 6 but it's 2024 that those 6 lines you wrote are 1 lambda now, do you want to replace", and so many other things.

Did you know that if you paste a maven xml dependency coordinate into a .gradle file, it auto-translates it to gradle format before the paste?

freedomben · 8 months ago
This is absolutely true, but having spent a lot of time The Java ecosystem and then much time outside of it, I now think this is a bit of a curse. It has made the average Java developer actually structure their code and build practices around the IDE, rather than the other way around. If it wasn't for modern CI practices which force a headless build, I wouldn't be surprised if most Java projects wouldn't even build without the IDE to do the building for them. In several places I worked, Even That wasn't really usable outside of the CI environment because it was just taped together as an afterthought and bare minimum since all the developers just used IntelliJ to build locally anyway.

Even little things like variable naming, explicit types, and the like were commonly neglected because in the IDE you could just hover your mouse over the variable to see its type. Because that exists and is so commonly used, developers didn't even think about The impact it might have on someone not using the same IDE. This is just one of several practices that I continually ran into when trying to use vim. There are also plenty of readability issues, such as enormously long methods that the IDE collapses for most developers so they never see it and don't have to think about it, but once you aren't using that IDE anymore, you really see all the nastiness and warts.

So long story short, I agree with you about the tooling, but I think it is actually more of a curse than most people realize.

Kwpolska · 8 months ago
JetBrains Rider for C# is equally awesome. And you don't need to paste XML snippets for dependencies, it's in the GUI.
TiredOfLife · 8 months ago
There is nothing in lsp world that comes close to PhpStorm for PHP and RubyMine for Ruby.
mardifoufs · 8 months ago
Vscode provides extracting methods and variables too, at least it does for python and c++. I didn't know it was a rare feature.

What other platforms and languages have you used recently to compare with java?

Dead Comment

mardifoufs · 8 months ago
Vscode uses LSP, and for most mainstream languages it can provide refactoring, definition lookup, symbol renaming, etc.
Myrmornis · 8 months ago
Not specifically about Neovim, but I'm curious about the Java situation in general. To a first approximation IntelliJ is what everyone uses. I'm a VSCode user for everything but it seems basically the wrong decision to try to not use IntelliJ for Java. And mixed Kotlin/Java projects are impossible currently in VSCode with the RedHat extension.

So my question is, what are projects like Cursor going to do? Surely the solution isn't to assume that JetBrains will do enough innovation in AI IDE features in the next year or two to prevent is wanting to try out all the other AI IDE innovation?

Kwpolska · 8 months ago
JetBrains IDEs are highly extensible, and they have support for AI completions. Nevertheless, I think that the assistance and navigation features in IDEs are much more useful than auto-generating half-broken code.
brabel · 8 months ago
I've spent a few weeks trying the built-in AI in IntelliJ, and the Copilot plugin as well.

I have to say that even though sometimes both AIs offer amazing suggestions, it's really distracting to me to have constant multi-line completions being suggested non-stop! And sometimes it's a suggestion that would probably make sense in a widely different context, but you can see how the AI would believe it was appropriate for you anyway and you start wondering about nonsense. I had to disable that.

The line-completion that IntelliJ has by default now was quite a bit better IMO. It really helped and was not so distracting.

Anyway, I can't tell which AI was best, they both seemed similar in capabilities. The JB AI is a bit more well integrated, obviously, so it's a bit easier for me to accept completions for example (with Copilot, sometimes it competes with the normal IDE completions and I can't easily pick one). Anyone has an opinion on that?

Myrmornis · 8 months ago
Ah, I see. It sounds like you haven't tried something like Cursor, on tasks/languages that it performs well on. It'll be interesting for you when you discover what it's like. You don't accept large quantities of implementation ab initio; but they're very good nowadays at modifying and extending with non-broken code.
mr_tristan · 8 months ago
Right now, I’d say the “AI IDEs” like Cursor or Zed are ready to replace less Java-centric environments. I’d put VSCode in this “not really Java centric” bucket. I see VSCode as a “fancy text editor” for Java, i.e., better than an editor like Neovim, but, not by much. So, an AI IDE is more likely going to gain traction on people who have been using VSCode or Neovim than anyone using Eclipse or IntelliJ.

Recently, my company has tried to introduce a “cloud IDE” (the development environment runs in the cloud somewhere). Initially, it only supported VSCode. The only engineers that bothered using it were junior; once people had about 5+ years of experience, they just found it tedious. Once the company included IntelliJ for that cloud IDE, usage spiked massively. (To the point they are restricting usage due to cost.)

These “classic Java IDEs” just launch with features useful for understanding large systems, like, fast navigation and debugging capabilities. Things like “where is method used” or “what implements this interface method” is fast and accurate - i.e., not based on text search. Or the interactive debugger that lets you inspect stream state, track objects, etc.

JetBrains probably won’t be focusing on using AI simply for writing code, but for enhancing all of these other capabilities. This is where I’m not sold on Cursor or Zed replacing these truly language-specific IDEs… yet.

These new upstarts need to improve the ability to navigate and understand. Right now, they only seem to focus on writing, which I don’t think is what’s going to gain traction. I also don’t see any of them doing much other than just fancy autocomplete, which can be awful on a large legacy codebase. So… we’ll see.

This could be generational, I’ve definitely seen poorer DevEx win simply because they gained the attention of younger engineers and lasted long enough.

mardifoufs · 8 months ago
I mean, yeah if you are using Kotlin you are almost inherently locked in to IntelliJ... by design. But for java proper, it's far from the only viable IDE.
JavierFlores09 · 8 months ago
> Surely the solution isn't to assume that JetBrains will do enough innovation in AI IDE features in the next year or two to prevent is wanting to try out all the other AI IDE innovation?

They kind of have been doing just that, their jetbrains AI assistant has an integration comparable to cursor's, just the model itself isn't as good which is a shame

codr7 · 8 months ago
I write most of my code in Emacs, even C# because I find VS* to be a major pain in the ass. But I've always used IDEs to write Java, first Eclipse and lately IntelliJ. They are simply nicer to work in than anything else I've tried, except Smalltalk and Lisp machines. I have a feeling it came as part of the cultural heritage from Smalltalk.
pyrale · 8 months ago
There are more and more successful experiments with nvim and java recently. Considering the amount of black magic happens in idea, and seeing how it fails sometimes, it’s probably tome for me to try migrating again.
carlinm · 8 months ago
The hardest part for me in using nvim for java is the debugger tooling. I primarily use IntelliJ for any JVM related languages, and the debugger has always been invaluable. The debugging has always felt more polished and easy to configure in JetBrains IDEs. The nvim-dap and nvim-dap-ui had a bit too much friction to configure for it to my liking, and inevitably I reverted to IntelliJ. However, I love the keyboard-driven flow I can achieve in nvim where JetBrains IDEs fall short.
giancarlostoro · 8 months ago
What kills me with JetBrains is they work on a barely functional (according to vim coders I talk to) simulation plugin, instead of just investing resources into integrating Neovim as a backend via plugin. You can literally have all the niceness of JetBrains IDEs with the editing power of Neovim. That alone would flip so many die hard Vim users.
TiredOfLife · 8 months ago
> That alone would flip so many die hard Vim users.

It wouldn't. Diehard Vim and Emacs users might hate each other, but they hate IDEs more.

The_Colonel · 8 months ago
The problem there is that you'd be integrating two massive codebases, each with different expectations, assumptions etc. No matter how hard you try, they'd clash in places and some things would not work, leaving one side or another unhappy even with this massive effort. IdeaVim makes it work by having a massively simplified vim-like editor, specifically written for IntelliJ.