Java needs to die a fiery death.
Java needs to die a fiery death.
Yeah, all of this is no longer true for java. I've worked on many jvm projects not long ago, I've never had one that would work just out of the box. You might be able to download the repo and open it, but be prepared to get reamed for a week trying to get intellij, maven/gradle, and all the other dependencies to talk to one another.
The whole point of java was to make large, dependable, and easily refactorable projects that were also highly portable. Yet at least half of the time when working with these project it's wrestling with esoteric configurations. Java cares so little about the developer experience that I don't think they even take it into consideration, unlike Go or Rust. Should I even mention the God-awful debugging? Ugh.
As for intellij, the only real use it gave me was making me hate my mouse. It's practically a running joke at this point that the amount of mouse clicks in intellij is directly proportional to your devness, haha. It's fitting because java makes even the worst, laziest developers look employable because it takes 800 lines to make a REST api, so it looks like they're doing a ton of work when in reality they're just cutting and pasting.
With the rise of containerization and languages like Go and Rust, pretty much any benefit or edge that java had is now basically gone. Java is a maintenance only language at this point and any company doing green-field dev work in java is effectively a boomer company. As long as I live I won't touch another JDBC template or Maven xml. Fuck that whole ecosystem.
It definitely doesn't "require 800 lines to talk to a REST API" if you use this HTTP server/client lib, written in pure Clojure: https://http-kit.github.io
I'm primarily developing Clojure software, using IntelliJ and I mostly use the keyboard for it.
Cmd-E for recent file or Tool window (Clojure Deps) switching. This is what I use the most.
Cmd-Shift-A for the Action Menu, which I use for Window Split Down/Right or Run tests and a couple of REPL commands, like copy the last result to the clipboard or open it in a browser. Opt-Tab to switch between splits. I don't switch between tabs, because I limited the max number of tabs to 1.
Cmd-, - Preferences
Cmd-; - Project structure
Cmd-Shift-O - Open files
Cmd-Shift-F - Search Files recursively in the whole project
Cmd-1 to focus and turn the Project file structure on and off, Cmd-Shift-Left/Right to resize it, Shift-Esc to close it (or any other tool window).
Cmd-9 for version control. Cmd-Shift-]/[ for moving between tabs. Ctrl-V for VCS operations menu, like (1 or just Enter) commit, (7) branch, (8) push.
Reassigned F12 to Cmd-2 to focus/show/hide the Terminal. Esc to switch the focus back to the Editors (which is buggy for years now and registers the Esc key in the terminal, but it's just a slight annoyance)
Cmd-Opt-R to run Clojure REPLs. Ctrl-Enter to eval top-level form or Ctrl-Shift-Enter to eval sexp before caret in the REPL. Cmd-Shift-J/K to barf/slurp, Cmd-' to raise and Cmd-(/[/{ to wrap sexp. Cmd-Shift-Up/Down to move an expression backward/forward within its containing expression. Cmd-/ to comment. Alt-Up/Down for Expand/Shrink selection by syntactical units. Refactoring with Ctrl-T.
Everything else is just opt/shift/ctrl/cmd + cursor keys, space, tab, shift-tab, enter or fuzzy search by simply typing the name of something in a popup list, dialog box or tool window.
These shortcuts cover ~80% of my time using IntelliJ, but I use another 10-20 keybindings, like folding an file structure navigation, which cover 95% of the use-cases.
It's also important to add that my CapsLock acts as both Ctrl and Esc and I'm using the SpaceFn layout via Karabiner Elements (as implemented by the jeebak complex modification). This makes a tremendous difference in convenience when using anything really from the keyboard primarily.
Care to elaborate why?
So the Java ecosystem is kinda living its renaissance now :)
But overall I very much share your sentiment.
Also worth noting that if you really want to slim a JVM runtime down, from a typical ~300MB size to ~50MB, it's not very complicated using `jlink`: https://medium.com/de-bijenkorf-techblog/creating-the-smalle...
It's still 50 times more than what I consider sane, but still... ;)
i hope they won't use M1 as an excuse for new baseline when comparing performance
it still is super slow for what it does
I disagree - it's much faster than any IDE of equal strength that I've come across.