Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

>robust, fast, complete

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.



Well, all I can say is that this does not map onto my experience at all. Indeed I was about to mention the debugger as one of the main feature advantages :) The claim that you need 800 lines to make a rest api is simply not true, unless you are talking about java6, raw servlet development, which noone does nowadays. With Spring, it's 4 lines counted (of course, not counting Spring itself and less than 10 lines of global configuration). Intellij covers a good 80% of the keybindings I need out of the box, and I customized a 10% on top of it. I need to reach the mouse for operation that I might need to do once a day or less. Otherwise, everything related to coding, refactoring, testing, coverage, configuration checks, running and debugging is completely covered. And I have not been touching xml or raw jdbc templates for literally years. I'm sorry you had a less than optimal experience, to develop experience in a platform sometimes is less about using it and more about dodging bullets :)


Java is indeed feels like Assembly, compared to other JVM languages, but in large part because of its typed and object oriented nature. I have a very different experience with the JVM ecosystem when using Clojure.

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.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: