9 ms·
> Java is fun to write, productive What the hell? I don't think we have the same definition for any of these words. I know Java has changed quite a bit since
by thiht 6y ago
> Java is fun to write, productive
What the hell? I don't think we have the same definition for any of these words.
I know Java has changed quite a bit since Java 8 (Java 9 being the last version I used professionally before switching completely to Go), but I just can't write Java again, it's physical. When I want to try a new Java feature and think about writing the scaffolding code, my stomach actually hurts.
Not to mention the pain point that it still is to install and configure a JDK, and make it work properly with Intellij, why is it still so complicated?
Then there's Maven and Gradle that are just... bad, I have no other phrasing. I hear a lot of people saying Maven already solves all the problems we have with today's tools but that's just not true, even the entire Maven stupid lifecycle should be thrown away!
- scaladev 6y ago>Not to mention the pain point that it still is to install and configure a JDK, and make it work properly with Intellij, why is it still so complicated? IDEA can download and configure one of multiple JDK distributions in a single command: https://www.jetbrains.com/help/idea/sdk.html#jdk-from-ide https://www.jetbrains.com/help/idea/sdk.html#jdk-from-ide
- Twirrim 6y ago> Not to mention the pain point that it still is to install and configure a JDK, and make it work properly with Intellij, why is it still so complicated? I used to work for a company that had about 100 different Java web applications running, each with their own JDK. It was _trivial_ to set up and maintain. Was it wasteful? Sure. I shipped a JDK with each application. Was it hard to automate? No. Basic deployment automation made it trivial. The JDK was just an application artifact alongside the JAR file, and the application starting script set JAVA_HOME pointing to it for that process. IntelliJ makes it trivial to maintain a project specific JDK. You just add the location of your JDKs to it (IIRC it can even auto-populate the list), and then choose the JDK from a simple menu within the IDE.
- twic 6y agoInstalling a JDK is trivial. What do you mean by "configure" a JDK? You mean tell your IDE it exists? Wow.
- Nursie 6y agoOn my new air I installed IntelliJ and brew-installed Java. It all works. Where’s the pain?
- thiht 6y agoWait for updates or projects requiring a different JDK.
- pulse7 6y agoYou just install any JDK in any directory - nothing to configure there - and then point IntelliJ to this directory... If this is hard, then... hmmm....
- eurasiantiger 6y agoThat is a perfect demonstration of the toxic attitude I’ve come to expect from Java fanatics.
- pulse7 6y agoI've just written an argument which can be verified. If you call me a "fanatic" because of writing a provable argument I can at least say I have a freedom of speech...
- eurasiantiger 6y agoI did not mean to make a judgment on substance, rather I made an observation about tone that seems to reflect a disagreeable personality. Would you agree?
- pulse7 6y agoI submitted a >>single<< disagreement, so please don't generalize this into a "disagreeable personality". Please provide opposite arguments - for example some facts that show how complicated it is to setup new JDK in IntelliJ... such arguments will improve quality of discussion here...
- sto_hristo 6y agocurl -OL <jdk url> tar -xzvf <jdk archive> <set JAVA_HOME env var to point to dir> <add to PATH $JAVA_HOME/bin> So complicated.
- hurril 6y agoAll your projects are belong to that one version of the JDK. Great success.
- sto_hristo 6y agoNo success is greater than 100 different projects needing 100 different JDKs on the same machine. But somehow i don't have a problem building an android app in its own java, while the backing service is done in a completely different jdk. It's not ideal as i would want the latest language features in the android side, but that is an android problem.
- hurril 6y agoMy point is that you do not simply update PATH and JAVA_HOME these days. That was Java 1.02 or somesuch roughly a hundred years ago.
- McScroogy 6y agoI used to feel like you, but I have come back to Java. Other languages have other pains, for example I have physical revulsion against the version management hacks for python or ruby (rbenv and stuff like that - somehow hacking environment variables on the fly to manage multiple installations of the language). Two years ago I wrote a small web app in Python and I found hosting very complicated, compared to Java. PaaS exist but are very expensive.
- stunt 6y ago> Java simply feels good to write. A lot of this is due to the craftsmanship JetBrains puts into IntelliJ IDEA. You can put it another way and say it doesn't feel good to write Java without JetBrains.
- jiggawatts 6y agoYou just described how I feel about C++ I used to be a C++ wizard. I did things with that language that were just unspeakable. I used features so obscure that I don't even know if they have an official name. Then after I dunno... the five hundredth nonsensical linker error, something in me just snapped and I just can't ever go back there.
- omginternets 6y agoIt seems like grappling with these arcane features feels productive, at first. You enter a flow state and after a while, something works that didn’t work before. It’s only when you step back and ask what actually got accomplished that you realize it’s time wasted.
- hamilyon2 6y agoIdeas in the foundation of maven are old, but that is the only complaint I have with this tool. Problems it solve are not new either. As for amounts of scaffolding, IntelliJ product writes it for you. And modern Java forces you to write only a half of it anyway.
- offtop5 6y ago>When I want to try a new Java feature and think about writing the scaffolding code, my stomach actually hurts. Like, if you're out of work for a couple of months and the only way to feed your kids is to take a Java job, I don't think you'd pass it up. I wouldn't pass it up either even though I don't like Java. The whole language feels like it's designed to meet some minimum lines of code requirement. If you're working on a team, strongly typed languages like Java and C sharp are a must. Otherwise it can get extremely hard to figure out what exactly other people are doing.
- dunefox 6y agoIf starving is the only reason to take a Java job then it doesn't exactly speak for it. Python, for example, is also strongly typed. You most likely mean static typing, which is very useful but not exactly Javas or Cs strong suit either.
- offtop5 6y agoYeah, Static typing. In C# I swear this the only reason I can get anything done( Visual Studio's auto complete is nice). Most people basically work to eat, I've taken Java jobs just because I needed the work. It can always be worse.
- thiht 6y ago> Like, if you're out of work for a couple of months and the only way to feed your kids is to take a Java job, I don't think you'd pass it up. I would honestly consider the alternatives. I'd probably take it in the end because money is good, but I'd try to flirt with manual work instead, if Java was my only option.
- offtop5 6y ago>I would honestly consider the alternatives. I'd probably take it in the end because money is good, but I'd try to flirt with manual work instead, if Java was my only option. Eh. 150k working on Java enterprise systems vs working at Costco for 15$ an hour. Java isn't great, but it's still much easier than C or C++ imo. In a perfect world we could all work in Python all day, but that's not life
- dmingod666 6y ago"fun to write" give them IDE-driven-developers a text editor and see how much "fun" it is.
- detaro 6y ago"Don't let them use the appropriate/preferred tool for the job and see how much fun it is" is a fairly nonsensical proposal for pretty much every profession.
- dmingod666 6y agoI can't think of one other major programming language that relies so heavily on the IDE to do the development work, can you?
- eurasiantiger 6y agoOOPHP.
- dmingod666 6y agololz! had to google that one.
- detaro 6y agoLabVIEW ;) More seriously, IDEs exist and work, so if people are productive with them, what does "but you'd be less productive if you didn't have your IDE!" gain us? C++ is a bit less verbose, but still the wide majority of devs uses an IDE with it because it does useful things. Programmers of Lisp etc use editors that have tools to edit Lisp files better. etc. I get not liking the existing options as a matter of personal taste, but that's different.
- slver 6y agoLet's assume it is. So what?
- panzerboy 6y ago
- scottious 6y agoTotally agree, especially about Maven/Gradle. I'd also like to point out that the popular Spring Framework is just... annoying. It's full of magic. You have to know the right incantations to get anything done. Somehow there is too much documentation and not enough at the same time. I've never seen a Java program in my entire career that was actually fast and not a huge pain to work with. I'm working on a new one right now and the prototype/skeleton literally does just basic CRUD operations and the CI/CD pipeline takes 7 minutes. Golang was a breath of fresh air for me.
- V-2 6y agoI also don't understand where is the "fun to write" aspect exactly that the author insists about. "This cannot be understated: Java simply feels good to write" But why? The only explanation that follows is that "a lot of this is due to the craftsmanship JetBrains puts into IntelliJ IDEA. Everything is autocompleted, jump-to-definition is fast, find-usage works well, and refactoring is easy". I too think that IDEA is an excellent IDE, but why should Java take the credit for it. If anything, the more it needs an excellent IDE in order to feel pleasant, the worse it says about the language itself. It really looks to me like the "ignorant computer science undergrad" mainly worked with JavaScript (having only dabbled with C++ and a few other languages as part of his uni courses), and got excited by discovering a proper IDE and a statically typed language that happens to have a low entry threshold.
- watwut 6y ago> I too think that IDEA is an excellent IDE, but why should Java take the credit for it. If anything, the more it needs an excellent IDE in order to feel pleasant, the worse it says about the language itself. It actually does, the language itself makes those features possible. The reason javascript does not have as good IDE is that language itself stands in a way.
- dunefox 6y agoYou mean by having a (not very powerful) static type system and constructs that serve as name spaces for auto-completion lookup. Any language with modules and a static type system supports this, if the effort is put into creating the tools.
- blacktriangle 6y agoIt's a bit of a "stop hitting yourself" situation. Java features make awesome tooling possible, but awesome tooling is necessary due to some really bad features of Java. So I don't care if a different language has worse tooling when it also does not have the problems that Java has that the tooling solves.
- 6y ago
- ragnese 6y agoI agree that Java isn't fun or productive, but I'll qualify that statement with "for me". I really do believe that the reason we have programmer holy wars is because we approach problem solving in different ways. The way I approach solving a problem with a computer program is almost incompatible with the Java programming language. And, no- this is not a thinly veiled way to shit on object oriented programming. I can work in an object oriented paradigm just fine. It's just Java specifically that doesn't work for me. Here are some examples that constantly bother me when writing Java: * Null. Enough said. * Writing value types used to be very tedious and bug-prone before Records. I haven't written Java with Records yet, but I'm glad to know that they'll be there if/when I do Java again. Even for an object-oriented architecture, value types can be useful and I use plenty of them. * Type erased generics are painful. Especially with interfaces. * The number and arithmetic APIs are incredibly frustrating. No unsigned numbers, silent wrap-around on overflow, silent data truncation on casts, etc. I have zero confidence that my Java code that deals with numbers is robust at all. I'm sure that many programmers don't even notice these things, because they way they interact with program design is just different than my way. But when I write Java (or mostly any JVM language) one or more of these issues are on the forefront of my mind with almost every single line of code I type. It's almost unbearably frustrating.
- oftenwrong 6y ago>Not to mention the pain point that it still is to install and configure a JDK, and make it work properly with Intellij, why is it still so complicated? You just download the JDK, and set JAVA_HOME to point to it when you want to use it. For IntelliJ, you set the JDK in the project settings. It has a menu where you can point it to a JDK it knows about already, a JDK on your FS, or you can select a JDK for it to download for you. Couldn't be easier. Java build systems are mostly terrible - you're right about that. Maven has the best tooling support, and is actually very straightforward, but a bit limited. I have had a number of bad experiences with Gradle. The Blaze-family build systems (Bazel, Buck, Pants, Please, etc) are far more sane, but have low adoption.
- kaba0 6y agoYou actually went to Go and say that java is painful to write? Wth?