Running IntelliJ Idea with JDK 17 for Better Render Performance with Metal
mustafaakin.dev
mustafaakin.dev
Doesn't this just means that IntelliJ, being an independent implementation, flags problems that a compiler frontend doesn't, and vice-versa?
That's hardly a problem, isn't it? I mean, sometimes even compilers that serve as reference implementations fail to properly support some language constructs. Case in point, look at how GCC handled C++11, and how some features were only supported a couple of years after the standard was approved.
https://gcc.gnu.org/projects/cxx-status.html
> it still can't expand macros properly and autocomplete does not work at all with more advanced libraries.
Arguably, IntelliJ (or any IDE) shouldn't expand macros at all, and "more advanced" is codeword for "uses obscure features in non-trivial ways". Those are hardly problems.
No, it often flags perfectly correct (compiling and working) code. Search for "good code red" on their bugtracker - this is going on for years. Many of those problems are because Intellij type inference infers a wrong type, then it can't resolve a method or field because it's looking it up in the wrong place. Or it misses the stuff expanded from a procedural derive macro.
The fundamental problem is, in order to make it work correctly they have to reimplement the whole compiler frontend, which is a very ambitious goal, and they likely don't have resources to do that for the many languages that Idea wants to support.
> Arguably, IntelliJ (or any IDE) shouldn't expand macros at all, and "more advanced" is codeword for "uses obscure features in non-trivial ways". Those are hardly problems.
Macros and metaprogramming are not obscure features - those are the core features that often make basic stuff work like serialization, database access, command line argument parsing or data formatting. While the libraries might be sometimes internally complex, they are often way easier to use than the counterparts in languages with no such support.
"Compiling and working code" does not mean it's valid or acceptable code. Implementations can and often are buggy, or push implementation-defined behavior which is unacceptable. This code should be flagged appropriately. Case in point, C++11 support in GCC 4.8, and how "compiling and working code" in GCC4 broke horribly in subsequent releases.
> Search for "good code red" on their bugtracker - this is going on for years.
I fail to see how this is a good or reasonable test. A cursory search shows up only indexing problems, fixed by invalidating the cache, which bear no resemblance with language support.
Do you actually have any concrete example?
In safe Rust and Scala it means it is valid, modulo bugs in the compiler, which are rare. Also I'm really talking about code that is obviously ok - e.g. there exists a function on given type, yet idea fails to see it.
> do you actually have any concrete example?
In both of my Rust projects, which are pretty tiny (<5k loc) there are a few instances of good code red issues or fragments where the type inference gave up (no error flagged, but also no autocomplete). Will report those.
I reported plenty of such issues earlier to the Scala plugin, and got tired a bit.
Because IDEA doesn't support LSP. Because IDEAs analyzers are not external entities running in an external process and communicating in JSON over HTTP.
BTW: I'm not saying it is bad or doesn't get the job done for a selected set of languages. I'm only referring to the "polished more than the other IDEs" bit in the OP comment. It is kinda love-hate relationship to me. Not polished, but we can live together ;)
No, it doesn't read like that.
> sometimes hardly even works for a bunch of languages that other IDEs and editors work fine with.
LSP is as much a hit-and-miss. And it's definitely not polished, let's say, for Java.
And yeah, obviously Java story is definitely polished, but it has been under development for decades, and also Java is quite a limited language.
[1] https://visualstudiomagazine.com/articles/2021/11/05/vscode-...
[2] https://github.com/JetBrains/intellij-community/tree/master/...
If, and only if the official compiler is actually designed to support compiler-as-a-service etc. And this only begins to scratch the surface.
Let me introduce to a nearly unending and continuously expanding list of refactorings alone in IntelliJ: https://www.jetbrains.com/help/idea/refactoring-source-code....
What about other things external to the compiler like immediately recognising and mapping project configs and structures (for example, Spring, or Symfony, or...)?
Or things like "version X of the language introduces new things and we can automatically refactor your code to reflect the new ways of dealing with things"?
Or...
It’s so bad that I got a refund and now use Xcode. IMO Xcode is one of the worst IDEs. But at least, outside of Xcode’s garbage update processes (which impact AppCode), it doesn’t randomly halt my workflow for 10 minutes at a time.
I don’t think this is a problem that a new machine should solve. The software shouldn’t degrade in quality this much over time.
Did you ask in their developer slack group?
They are VERY responsive.
The one problem is that the UI is a bit out of date because of Swing. Fleet is solving that problem.
I use IntelliJ and Clion daily and I have never noticed any sort of instability.
I used to experience long indexing times until I learned that I chronically misconfigured projects and included build and autogenerated dirs in the index, which is trivially solved by excluding them and invalidating the cache. We're talking about something you do once right after you import the project.
The only foobared filesystem issue I ever stumbled upon was when I toyed with junctions pointing to a RAM drive on Windows, and Clion left the junctions out of the project view.
And that was it.
Could you please elaborate and point out real world examples that showcase any instability you implied?
There can be some errors if I try an EAP version, but that's expected of course.
Haven't done any c# in a while now so unsure if that's still the case but make heavy use of all the other tools and happily pay my yearly subscription.
There's occasional glitches, recently datagrip (the database ide) has sometimes got itself into odd states where it's loading the data sources infinitely, but overall I find them stable and performant products
I use IntelliJ, Clion, Datagrip and sometimes Rubymine if I need to touch Ruby code and it's pretty good.
It's hard translate anecdotes into evidence for things like this without dedicating a bunch of time to it -- either to tracking down bugs or other users, or carefully making sure that you have eliminated any project-specific problems or misconfigurations.
So I agree with the parent that Intellij products seem to be quite glitchy and to have chronically bad performance, but I haven't put the time in to fully understand why so I doubt I could convince you.
This is how any credibility breaks down. Posting a bug report takes as much time as posting a message on HN.
Moreover, if these problems were so eggregious and so frequent as claimed, wouldn't you be more motivated to post something about them in order to get them fixed? I mean, most of jetbrains' product line is only available to paying customers.
But alas no example is given. Not even a faint description of what the problem felt like. Just a blanket accusation that the world-leading IDE company is unable to ship a stable IDE.
I still prefer JetBrains' IDEs, but they are extremely glitchy. It's just a fact of life if you've spent any significant amount of time in them. They seem to just not care about performance and bugs the same way they care about churning out new features.
Anyway, maybe the number of posters who are complaining about Jetbrains products on here is evidence to you that our issues are not, in fact, imagined.
Also, as the other commenter said, there are always open issues when I go look for the things that I'm experiencing. That doesn't chain the experience on my side.
When working with typescript, it’ll still index your packages even if you’ve excluded it because it needs it for autocompletion (I assume).
I guess the MacBook Pro's days are numbered, then?
I guess stability, tooling ecosystem, and ages of user/customer support info means nothing then, and being new is reason enough to scrap all your tooling and workflow?
Developers are paid to deliver features, and test-driving the latest and greatest fad gets in the way.
The big thing about VSCode that I really like is that it just seems to be easier to look at... There's less visual cruft by default than in IntelliJ.
Edit: Not to say that I'm right or that you're wrong. Just pointing out differing opinions exist. To each their own.
VSCode shines in comparison only when all you need is a text editor to quickly open a couple of files, you don't need to do anything beyond reading code without navigating files or doing the occasional typo fix, and you don't actually need an integrated development environment.
Other than that, I struggle to come up with a scenario where, if anyone already had both installed, vscode would be the preferred solution.
My IJ is set up in a way that it is very clean. Tabs, file explorer, editor, embedded terminal if needed. It doesn't get much cleaner.
I use VSCode on par with IntelliJ and Clion and I wouldn't put VSCode ahead in the performance department. In fact, until a few months ago VSCode suffered from a rather eggregious performance problem caused by the pathological way that intellisense scanned files that rendered it unusable with some projects. We're talking about full blown hangs which led to forced restarts. In fact, I find the jab quite funny because IntelliJ's main performance issues are also tied to file indexing, but here I see vscode being portrayed as behaving better?
Both IntelliJ and vscode are great at what they do, and their main usability issues stem from the same type of feature/problem. Why try to one-up either of them?
[1] https://docs.oracle.com/javase/8/docs/technotes/guides/swing...
[2] https://docs.oracle.com/javase/8/docs/api/javax/swing/Repain...
It renders a ton faster and you won't see the difference, because you need anti-aliasing when 1px=1px, you don't when it's subpixel anyway.
However, past a certain point, the benefits are less noticeable, whereas the overheads of AA increase to absurd levels. Trying to super-sample an 8K game will still bring the best GPUs in the world to their knees.
Or maybe Jetbrains Runtime releases run a bit ahead of what gets bundled in with the various Jetbrains IDEs?
I've used Intellij for quite some time and there has always been quite a bit of magical thinking surrounding the performance topic that stems from a poor understanding of how things work, broken assumptions about how things should work, and so on.
Intellij has lots of performance baggage. And addressing this and overstating the effects of mitigations is a long standing tradition in release notes. Despite numerous supposed fixes and improvements to the IDE, compiler, etc. even in just the last year, I still find myself waiting for it to do whatever for minutes on end every day. A half minute recompile after a 1 character code change.
Rendering, garbage collection, and other things people like to point at are not even close to being a root cause for this. The real cause is that it simply does a lot of work and moves around a lot of data. The edge cases where that just requires noticeably slow re-computation happen a lot and when they do, things get slow.
Try running their products on a more recent JVM. They are actually usable and don't leave you feeling like you've been thinking in molasses. Ironic for a company called "jet" brains.
They (JetBrains) have been actively fucking a portion of their (one would think, technically savvy) customers by not giving them the most responsive system they can to run, then acting all paternalistic and gaslighty by saying "oh we don't recommend you use anything other than the one we ship." [1] when people complain.
Listen, JetBrains: I have wasted enough time (while my thoughts race ahead trying to work on my projects) sat on my phatass 64Gb NVMe-equipped Xeon, nvidia (native driver) Debian workstation waiting for pycharm et al to mooch along like at a stately pace redrawing the screen like it's a 1994 486 with an HDD. In the end my thoughts stopped racing and I began to think, yeah, well, I just gotta endure it... and then asking myself if I'm alone in this particular slow-motion hell-hole or is the world really like this?!
Once I had got to the bottom of it (notes here https://iam.georgecox.com/2021/11/24/making-jetbrains-ides-r...) I _instantly_ began to regain the feeling of fluidity of thought in my work. It was the biggest single productivity gain I've made in the past year, and I have had zero stability problems. Some debugging features are not available, but I haven't missed them.
At this point JetBrains would do well to take a leaf out of Apple's playbook from 2009 when they shipped the Snow Leopard release (Yes I am one of those that thinks that Snow Leopard was the best release of Mac OS X...) which concentrated solely on quality and speed, and no new features. [2]
Thank you for your attention. Merry Christmas ;-)
[1] a fact which gets parroted around various fora without any understanding of the problem because "it works on their computer" It seems that much of the improvements are for the benefit of MacOS X users, while the policy of sticking with a version 11 JDK is to the detriment of users on other platforms.
[2] quality and speed are features, too!
JetBrains is simply trying to provide a stable development platform.
And since it took me about about a minute to switch to JDK17 it's not like they are going out of their way to make it difficult.
I explained it in full above.
And since it took me about about a minute to switch to JDK17 it's not like they are going out of their way to make it difficult.
When you restarted in JDK17 you didn't get any access errors? What app, OS, and JDK vendor is this?
I've heard good things about JetBrains Fleet. [3] Although it has not yet been released, it seems to have many of the same features as the full IDEs and is more responsive in the editor department. Anyhow, I hope your experience improves and you have a Merry Christmas as well!
[1] https://youtrack.jetbrains.com/issue/IDEA-278926#focus=Comme...
[2]: https://intellij-support.jetbrains.com/hc/en-us/articles/207...
I will update the post I made on my blog with the JVM options for JDK17. [1]
I have had mixed success reporting bugs to JB, as is to be expected for a company their size.
[1] it's Christmas, so why wait... it's this lot
--illegal-access=warn
--add-exports java.desktop/com.apple.eawt.event=ALL-UNNAMED
--add-exports java.desktop/com.apple.eawt=ALL-UNNAMED
--add-exports java.desktop/com.apple.laf=ALL-UNNAMED
--add-exports java.desktop/sun.font=ALL-UNNAMED
--add-opens java.base/java.lang=ALL-UNNAMED
--add-opens java.base/java.util=ALL-UNNAMED
--add-opens java.desktop/java.awt.event=ALL-UNNAMED
--add-opens java.desktop/java.awt.peer=ALL-UNNAMED
--add-opens java.desktop/java.awt=ALL-UNNAMED
--add-opens java.desktop/javax.swing.plaf.basic=ALL-UNNAMED
--add-opens java.desktop/javax.swing.text.html=ALL-UNNAMED
--add-opens java.desktop/javax.swing=ALL-UNNAMED
--add-opens java.desktop/sun.awt=ALL-UNNAMED
--add-opens java.desktop/sun.font=ALL-UNNAMED
--add-opens java.desktop/sun.swing=ALL-UNNAMED[1]: http://breandan.net/2014/08/18/shell-script/
[2]: https://github.com/haskell/haskell-language-server/issues/20...
So much this, the amount of people who refuse to believe this (even after a decent argument in favour) is infuriating.
> Try running their products on a more recent JVM.
Isn't JDK17 literally two or three months old?
JDK17 was released on sep 17 2021. Meanwhile, IntelliJ 2021.2 was released on July 27 2021, and IntelliJ 2021.3 on November 30 2021.
Who in their right mind would dump a stable LTS release in favour of the latest and greatest in the middle of a point release? Specially on a production project which is expected to be rock solid, and quite possibly wouldn't be able to recover from a reputation hit caused by regressions introduced by hasty ill-advised migrations?
JDK17 is the latest LTS release.
The previous LTS release was JDK11, which is already shipped with IntelliJ.
What, exactly, are you trying to argue?
Disingenuous HN snark never stops; (re-)read the whole thread to find out what you've missed.
> Try running their products on a more recent JVM.
> ...
> while the policy of sticking with a version 11 JDK is to the detriment of users on other platforms.
The answer is, quote: "JDK17 is the latest LTS release. The previous LTS release was JDK11, which is already shipped with IntelliJ."
What exactly do you want of JetBrains?
JDK 11 is an LTS release. JDK 17 only shipped a few months ago.
As a personal anecdote: I tried to upgrade a small microservice to Java 17 from Java 11. It took me a week hunting weird bugs and obscure undocumented things that suddenly just broke.
But sure. JetBrains should drop everything and move to JDK 17 the moment JDK 17 ships because?... Because what exactly?
Should every vendor ship their own version of the JVM?
The dependency management must be of exact versions of libraries that must be present to work with the installed software. Instead, people believe that it is possible to manage dependencies by stated compatibility: this will never work.
I’m not sure whether Intellij could be AOT compiled, would be interesting due to faster startup time but AOT compiled binaries can be somewhat slower than what the JIT compiler is capable of.
ZGC can be enabled on all platforms as of Java 17 and maybe even earlier. I won’t use any other Java GC for any reason I can think of.
If useful: ZGC has actually been available on different platforms in earlier Java releases. Linux, Windows, and macOS didn’t all get ZGC at the same time.
AFAIK it’s all still running on XWayland.
I’m quite certain I read this because I spent significant amounts of time trying to get IntelliJ to run on EA versions of JDK… but evidently I’m wrong as it even mentions as such in the link I pasted.
:/
[1] https://youtrack.jetbrains.com/issue/JBR-3206
[2] https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests...
There definitely was a time in my career (admittedly before VSCode and some of the other cool new kids on the editor block even existed) where I obsessed over vim plugins and macros and themes - but these days I love that consistent out of the box experience, too. Plus the IDEA has DataGrip embedded, and I love having a good database client right alongside the code I'm looking at.
As I've gotten older my whole philosophy with tech has shifted towards not letting the perfect be the enemy of the good, editors/IDEs included.
With JetBrains' products I get everything out of one hand and it just works. The IDE gets out of my way and I can focus on developing. If something doesn't work I can create an issue and it will be taken seriously.
I think the last time I fully revamped my Neovim setup I spent upwards of 40 hours learning, tweaking, and plugin shopping. And that was before Neovim shipped with it's own LSP so it was CoC. Now I'd probably spend however many hours converting my config over to the new setup.
The Jetbrains stuff just worked. I tweaked a small handful of settings and was good to go.
I'm generally allergic to anything Java, and desktop apps written in Java tend to scare me off. But I'm glad I got over that bias, because I've been pretty happy with CLion.
I've never experienced a comparable editing, inspections and refactoring experience with these LSP-based editors to what I get from JetBrains' tooling. It's absolutely not 99% :)
I use Sublime for other coding where it’s fewer files (and Vim for quick text editing in consoles) and I’m quite happy with it as long as I don’t have to do any refactoring. VSCode is too slow for me in comparison and I kept running into bugs with extensions when I tried it a year ago or so.
Java is better with an IDE because it’s so damn verbose, and common frameworks like Spring entail a lot of “magic”.
netbeans is my personal favorite - you can throw (at least, on low end hardware) 50ish large interconnected codebases at it (microservices, libraries, frameworks, etc) and it can find usages / change signatures / rename across all of them with almost perfect results (reflection, serialization and unsafe usages are the only places i've seen them miss). intellij isn't quite as seamless for that many projects, but the code understanding is similar
But I certainly don’t mind my developer tools taking more power since that’s what I’m using my computer for. When it comes to things like Slack/Teams, where that is not the primary function of my workstation (and, by it’s nature needs to be running on everyones computer) I get more annoyed at wasted resources.
Those are secondary functions of my computer.
Web browsing, instant messaging, email. These things should be as lean as possible to get out of the way of my real work, wether that’s after effects or photoshop or visual studio (the fat one).
If you are okay with being chained to a power outlet, sure. I often find myself needing to be on battery power, and applications gulping electricity is frustrating at best.
(I don't use the visual design tools you listed regularly, just writing / editing code and poking API endpoints, so maybe that has much to do as well).
Not trying to be flippant; but our jobs necessitate a lot of power consumption.
As with complexity, there is necessary and accidental (or lazy) power consumption. I stick to tools that are lighter on power when I am able to.
Running unit / integration tests is probably my biggest drain right now, and unfortunately (to collect coverage and ensure no unintended consequences) I end up running the entire suite probably more than is ideal.
And just for your information, the JVM is the most power efficient managed language out there. With a somewhat saner heap size than the default the GC is very seldom run.
And yeah I know there are countless plugins for vim, emacs, etc. but when you are at even half of what intellij can do, it will be instable and full of bugs. Also, resource consumption does go up considerably even then.
Maybe you need to get an M1 ;)
I can easily go a full day off power developing in Intellij.
(I probably use Emacs and JetBrains products 50/50. I prefer the keybindings of Doom Emacs, but prefer the JetBrains IDEs for actual development. E.g. refactoring is a lot easier.)
I started up Neovim with the new config, and promptly had my ssh session hang. It took me a little bit to figure out that I'd maxed out the 256MB of RAM on my little VPS and hard locked it. Had to get a bigger VPS to actually run my editor.
Not to mention that in this context it’s not even appropriate to use Vim an VSCode in the same sentence.
Fleet does the same thing as well.
Did you get in to the early access group? I'd be curious what your thoughts have been so far if so!
Regarding the much less functionality, the run button is not really configurable by much so more complicated projects can’t really be worked on yet. But I’ve just updated the package so I’m talking about a somewhat dated version.
It millions of man-hours of development to get VS Code even remotely near what JetBrains has been doing well for over a decade, and that's being very generous in judgement. How much money was wasted trying to get Electron to not perform super shitty?
Jetbrains software has its issues but it handles and has handled nearly every language I throw it save dotnet. And I grew up on big chunky IDEs and that is what I know and like. Vim is cool (I use it for more basic tasks) but lobbing molotovs like that only furthers pointless holy wars.
If I need a Java program I install IDEA. It has support for all the java frameworks, supports all the build tools, can connect to a database and show me the data inside of it.
If I code C/C++ i install CLion and do the same, with an amazing debugger etc.
When I install VSCode I got nothing. I got a glorified text editor and that's it. I first need to install what feels like thousands of plugins, only for half of those to not work, then install fifty more because I forgot I even needed those until I did.
Or to put it more simply: I don't want a text editor, I want an IDE.
If someday someone can give me a download link for a VSCode release that has all the necessary plugins for a certain language already preinstalled and does not require me to install anymore or care about how/why this stuff works then I will give it a try.
But for now I will switch with my IDE. It might not be as FOSS as other stuff, but it is more comfortable to use, enables me to be productive and it just works. That's what matters to me
Oh and as mentioned in another comment the git conflict resolution is stellar.
VSCode got into some loop where it demands Java 11 for highlighting code but then explodes on a Java 8 project and I’ll be arsed if I’m going to spend time debugging what’s wrong
I do use vscode for config files and other “quick load” things - it’s beating BBEdit there.
To me, IntelliJ is to Vscode as Vscode is to a plain editor without IDE features. The amount of additional value it brings is large, the level of polish compared to vscode is extreme.
It costs money and needs more resources. The licensing costs are recouped in a day or two thanks to increased productivity. The beefy workstation I use takes maybe ten days to be worth it (and Firefox likes all that extra RAM as well). And then you get an extra 20-30% more productivity for the other 350 days of the year. Feels like a no-brainer to me.
The Go support in VSCode relies on Gopls, which is a buggy mess. It frequently just stops working. It also lacks most refactorings (and no refactor preview). The Go debugger integration is okay, but Jetbrains' is miles better.
IDEA has tons of features that makes VSCode feels positively stone age:
* The "find/replace" across files has a result view with live editing.
* "Find implementations".
* Lightning fast search across many projects in one window.
* Symbol search, also lightning fast, across many projects.
* Extensive refactoring tools. Not just things like "extract method", but also linter-driven ones like removing an unused function argument, or fixing an identifier's spelling (updates all uses).
* Git support is tons better, including things like "Compare with..." allowing instant diffing against a branch or revision.
* Diff view is much nicer. It's also "live", like many things in IDEA; if you compare two files, the diff view updates when the files are change.
* GitHub integration where you can, for example, create, view, comment on, etc. pull requests within the IDE.
* Unlike VSCode, the experience out of the box is much more complete. I only had to install a few plugins (Prettier, my favourite colour theme, etc.).
I don't mind the extra gigs of RAM when the experience is so much better.
I don't like that it's not open source. But IDEA is a classic case of commercial software being vastly more mature than open source counterparts.
You need to install these extensions but that's the way it is designed, and a small JSON file is enough to have the extensions recommended in a given project.
The question is: which extensions are those? And do they work?
With IDEA all this is just bundled. And you reach for extra extensions for, well, extra stuff that's no core functionality. With VS Code I've found it's a glorified text editor that you have make work, maybe, and unreliably.
Feel free to suggest extensions that bring VSCode up to par with IDEA. The Go extension certainly isn't one of them.
For example, are there extensions to do file comparison the way describe? Or live, editable "find"? Refactoring with preview?
The latter is "Rename symbol", which VSCode supports for anything it has language support for, and which works across files where the language support includes that. The former is often suggested as a quick fix with VSCodes linter support. Neither is foreign to VSCode.
> Git support is tons better, including things like "Compare with..." allowing instant diffing against a branch or revision.
This is very much available for VSCode. Yes, it takes a plugin (GitLens and GitGraph are the two I use, the latter for history/branch visualizations and conducting operations from the visualization.)
> Diff view is much nicer. It's also "live", like many things in IDEA; if you compare two files, the diff view updates when the files are change.
Again, there's a plugin for that. (The one I use is just called "Diff", but the array of different Diff plugins for different preferences available for VSCode is...enormous.)
> GitHub integration where you can, for example, create, view, comment on, etc. pull requests within the IDE.
VSCode has this. I mean, sure, like almost everything else it is via plugins (the official GitHub Repositories plugin and the official GitHub Pull Requests and Issues plugin.)
> I don't like that it's not open source. But IDEA is a classic case of commercial software being vastly more mature than open source counterparts.
From your description, it seems mostly to be a classic case of an IDE having a better OOB experience for the set of functions it is intended to support than an extensible editor before considering plugins for the latter, rather than being "vastly more mature".
> The latter is "Rename symbol",
No, I'm talking about linter warnings providing smart fixes, which overall are not provided by the Go plugin, and is a mixed bag with other languages. GoLand has tons of fixes for things like unused arguments, inconsistent receiver names, incorrect spelling, and so on. And the fixes are previewed before they are applied.
But let's look at "Rename symbol". As an example of how primitive VSCode is, consider this in Go. If the rename doesn't work — for example, because it results in a conflict with an existing name in some file — it will just abort; it's all or nothing. GoLand, meanwhile, allows you to inspect the refactor preview and tweak the places where there are problems, before you apply the whole thing.
VSCode also has no awareness of implementations. If you try to rename, in IDEA, a method implemented from an interface, it will suggest altering all implementations, including the interface it came from. IDEA even goes further and will pick up strings that look related, such as in mocks, debug strings, comments, and so on.
> [Git support]
I have used GitLens, but the experience is vastly inferior to IDEA's. With GitLens, you have to compare the entire working tree (by selecting both versions to compare), which gets shown as a (not live!) snapshot in the left sidebar. You then have to click the file to compare. In IDEA, you simply select "Compare with Branch...", "Compare with Revision..." or any of the many other comparison methods, and you get the diff for the current file.
I also vastly prefer IDEA's diff UI, which can collapse unchanged portions (like classic UNIX diff). And while VSCode aligns the files strictly by inserting gaps, IDEA will cleverly align the code with visual markers, which I find much more readable. (IDEA has a toggle for the VSCode mode, of course. It also supports unified diffing as a toggle.)
I guess the GitHub PR extension has similar functionality as IDEA's, but the UI is primitive in comparison.
Maybe for dynamic languages, it might not be as powerful, I'm not a heavy user of IDEA for JS or Python (but WebCharm and PyCharm do seem very good), but I will say, the Typescript support in IDEA seems very good.
IntelliJ gives you a 20% boost if that's what you do all day ... it's priceless.
I used to use VSCode for everything, now I use a 'Good IDE' if one is available.
Basic IntelliJ is also free.
It's up to you to decide if Jetbrains' stack is right for you or not. For many simple projects, it's really not worth the hassle. Just because you don't use the extra features doesn't mean nobody else does.
The difference is night and day. VSCode is a light code editor. IntelliJ is a rich IDE.
The database tool in IntelliJ is better than all other specialized DB software i've tried last year when i did a market study to try and find a good DB tool. That tool is hardly even advertised and is like 1 button out of 100 buttons in the IDE. The diff tool is another example of top of the industry software rivaling stuff like Beyond Compare.
Bottomline is you seem to not have dug into it before sharing your judgment of it with people who have
I still use it, because it's by far, the best code editor in terms of introspection, refactoring, managing multi-file projects etc.
When I've been forced to use vscode I'm pretty shocked at how weak the experience is.
Technical question: What competitive advantage do you get from the story that we are crazy or stupid? Where does the assumption come from?