One thing that IntelliJ does not support is working on multiple branches of a product without having to reindex.
I work with a lot of Open Source tools (e.g. Hadoop, Kafka) with complex build setups. It often takes 10+ minutes for IntelliJ to load a project. If I now switch to a different branch it starts all over again.
I wish it'd keep a cache of multiple index versions around.
I assume he means he uses git worktree to create a directory structure like so:
src/my_project_master/
src/my_project_develop/
src/my_project_new_feature/
Each with it's own IntelliJ project. If he needs to switch branches it's relatively fast to open a different existing project rather than git checkout branch, which can cause IntelliJ to become unresponsive as it reindexes everything.
Not tried this, but I experience this quite often and will have to give this a shot.
The recent WebStorm 2016.3 is really great as well: Flow support, convert to ES6 quick actions, React Native, debug Node apps inside Docker containers, ESLint quick fixes, etc.
If your editor doesn't offer basic productivity accelerators like React property autocompletion, or a Go-to-Definition that works across ES6 modules, or refactoring support in JS, you should really look into a proper IDE like WebStorm. Yes, it costs actual money, but it's a no-brainer for professionals. I've tried VS Code, Atom and others but keep coming back to WS for the pure productivity aspects.
400% CPU on PyCharm for me... I am super impressed with the features of this IDE; for me personally the jetbrains ones are my favourite, but whatever the setup on this Mac they are too slow for me to use.
Since moving to VSCode my laptop battery lasts a couple of hours longer :-/
I use PyCharm and WebStorm regularly without having persistent high CPU usage, although I've seen other people run into it.
Maybe you've already tried this, but one thing that I've found is that the JVM heap size is sometimes set too low, especially when working in a large project. You enable the memory indicator in the bottom right ("Window: Show Memory Indicator" from the Cmd+Shift+A menu) to see the current and max memory usage, and you can click it to manually trigger a GC. If your heap is too low, you'll GC a lot, which can easily cause CPU spikes.
There are details on how to set the heap size here: https://www.jetbrains.com/help/pycharm/2016.2/tuning-pycharm... . But the short version is that (on Mac) I made a pycharm.vmoptions file at ~/Library/Preferences/PyCharm2016.3/pycharm.vmoptions and it includes the line "-Xmx3000m", which sets the heap size to 3GB.
I was at 600% CPU and 5GB of RAM with 3 project windows open, for IntelliJ Ultimate (we hop between a lot of languages so this is easiest). This was with most inspections turned off!
I've also moved to VSCode and haven't looked back. My whole team is currently evaluating VSCode. That is ~$600/mo in subscriptions to IntelliJ Ultimate if everyone decides to move to VSCode - which is looking likely.
Totally agreed on the value-add for those languages. We'll probably keep one license around for the times we drop into Java for Android which is fairly infrequent. Otherwise, we're a mix of JS (NodeJs/React/Appcelerator/etc), Ruby (via Puppet), HTML/CSS, PHP, Python, etc. IntelliJ was overkill in the first place but the one IDE to rule them all is just too compelling to not give it ago. Worked for 2 years, the product has just gotten too slow now.
My gut reaction is that IntelliJ's indexing isn't yet properly optimized for the small-file dependency-hell that JS dev has turned into.
The unfortunate thing was that we were willing to upgrade to the newest Macbooks if they had 32GB of RAM and hope that helped (in addition to some VM woes for working on infrastructure) - probably would have kept IntelliJ in play but the swapping and it using 33% of RAM on our machines made it an easy target to try to replace.
In comparison, VSCode is using 70MB RAM on my machine currently with 6 projects open.
We're a small shop so we have one team that does everything so one machine for all contexts is starting to be a pain. We did at least dust off some mac minis to do puppet (lots of virtual machines) work on those when possible to free up some RAM on our app dev machines.
> For most other languages, VSCode is easily almost on par with Intellij
That's a bold claim, considering the fact that most languages that have support from the Intellij platform benefit from refactor tools, quick fixes, linting, and code navigation. I'm not familiar with VS, but if it's anything like Sublime Text, Atom, etc. it probably only has syntax highlighting, some dumb auto complete and very basic navigation.
Also, don't forget Intellij has pretty decent support for Python, PHP, C#, C++, Rust, Clojure (all languages are personally tested) and even integrated git and db clients. Personally, I split my git activity between CLI and IDEA, but I have to confess, the IDEA client is the best I've used: integrated merge / diff tools, annotations, easy to browse logs etc.
> If using Java, Groovy, Kotlin, or Scala, Intellij will be much more valuable in terms of time-saving
Any IDE is more helpful for programming in statically-typed languages, which Java, Kotlin, or Scala are. Apache Groovy, also on your list, is dynamically-typed originally -- though static typing was added in Groovy 2, virtually no-one uses it -- so I question if any IDE, whether IntelliJ or VS, really gives time-savings there. Anyway, such dynamically typed languages like Groovy are good for glue code, build scripts, and testing, not for developing actual systems.
It's not only on Mac, on this Windows machine with i7 and 16GB of RAM music playback starts stuttering when IDEA does its thing. I still like it though
I find it surprising that some people complain about performance, here even with two large Java projects I only get that kind of CPU % when building indexes (only after importing a project or dependency adjustments) and its only for a few minutes.
As someone else mentioned, if you switch branches, IntelliJ will need reindex everything. I switch branches several times per day on some projects and it's annoying enough where I considered switching over to light weight editor.
As of now, it's so horrible I can't use the product. Font rendering in Atom or Sublime is so much better.From what I understand this is because of their usage of java swing. But looking at fonts is what we do all day and I can't have them to look like shit.
We made quite a lot of progress in this area recently. However, not all these changes have made it to the release. When you have a chance, please try to launch the IDE using the latest JDK downloaded from https://bintray.com/jetbrains/intellij-jdk (e.g. the build 555).
I used to feel the same way. However, after switching to Oracle JDK, and modifying a couple of settings in one of the dot files, it seemed to look as close to atom/sublime as possible (on font sizes 16+).
^ Tested on Webstorm and IntelliJ.
Will post configs when I get home. (I'm on Ubuntu 16.04 with Unity 7 and the latest updates)
It's hard to judge though, since the image has compression artifacts. Also hinted anti-aliasing may look well on one monitor, and bad on another (RGB horizontally vs vertically, or other arrangement). But ignoring this, the outlines look very nice in both.
And having said that, I actually prefer fixed non-anti-aliased, in fact very pixelish "Anonymous Pro 8" everywhere.
I've changed everything on my system to be "Anonymous Pro 8" without any anti-aliasing, then forced it IJ to be "10". I did simply because when Chromoting, it'll still look good.
Somehow I've got really used to fixed-width font for almost anywhere, and seeing each pixel actually makes it somehow more readable to me.
Looks flawlessly on my Linux Mint 17.3 Cinnamon machine using OpenJDK and 'Monospaced' (fontname).
I had to set 'antialiasing' to 'greyscale' under 'appearance'.
We do plan it in some future (https://youtrack.jetbrains.com/issue/CPP-4141). However, due to historical and some technical reasons, it's not that quick, so postponed for now until we find some resources for this task.
That's good to hear. And I concur with the other reply here that additional build systems are going to be needed. I use CLion every day at work, but I have to maintain my own CMakeLists.txt and keep it in sync with our actual (Makefile or Bazel/Blaze) builds.
That and also having integration with other build systems like Gradle native would be perfect - I could have a single build system for the entire project instead of that CMake junk.
I work with a lot of Open Source tools (e.g. Hadoop, Kafka) with complex build setups. It often takes 10+ minutes for IntelliJ to load a project. If I now switch to a different branch it starts all over again.
I wish it'd keep a cache of multiple index versions around.