3 ms·
People have told me for the longest time that Java is a shitty language I shouldn't be using. Most of those people said C++ would be a far better idea without e
by sgift 9y ago
People have told me for the longest time that Java is a shitty language I shouldn't be using. Most of those people said C++ would be a far better idea without even bothering to show any reason why C++ would be more suited besides "Java is slow, huahuaha, it is shitty, huahahaha". So, I have to admit I take a bit of a pleasure of seeing those people getting challenged on their presumption that C++ is the greatest language on earth.
Language advocacy is far older than Rust. And many language advocates are far more obnoxious than what I read on HN with regard to Rust. I actually have the feeling that the C++ crowd is just a bit sad that the usual defense of "well, yeah, other languages do those things better, but the code they produce is far too slow for our problem, so they're useless!" doesn't cut it anymore.
- mschuster91 9y ago> People have told me for the longest time that Java is a shitty language I shouldn't be using. Java is a great language in theory, the problem with Java is that people have evolved to use layers upon layers upon even more layers of abstractions, the tooling is horrenduos (try configuring maven vs npm) and especially all complex Java applications end up being as slow as molasses (e.g. SAP GUI, Lotus Notes, Eclipse, jDownloader, Vuze on the GUI application side). This leads to people projecting their horrible experiences with the Java ecosystem and applications to the language itself, which is a pity.
- legosteen11 9y agoHow is Maven (or Gradle, but I prefer Maven) bad? I've never used npm, but I quite like Maven's use of XML for defining project dependencies etc. with clear structure.
- qznc 9y agoI have very little experience with Maven, but I find it hard to understand and restricting. Maybe I should take the time to learn the fundamentals properly and maybe I would be enlightened, but it seems to work very different to other build tools. Example "Lifecycles" [0]. The documentation says "Maven is based around the central concept of a build lifecycle. What this means is that the process for building and distributing a particular artifact (project) is clearly defined." The first sentence just says "this is important!". I have no idea what that second sentence is supposed to tell me. The documentation goes on without a clear definition what a lifecycle is. I figure it is a kind of command. Afterall, the basic lifecycles are "default" which is "make all", "clean" like "make clean", and "site" like "make docs". I'm not sure, there is no good definition of "lifecycle" in the documentation there. Hard to understand. Well, there is a predefined set of lifecycles and each lifecycle has a predefined list of phases, where stuff can hook into. For example, with java the compile phase will turn my java files into class files. The test phase will turn class files into test reports. Recently, I wanted to merge multiple coverage reports [1]. Turns out, this is done in a compile phase, which is reasonable. However, the reports are generated in the test phase, which is after the compile phase. At this point, I'm lost. This corset of phases is restricting me. [0] https://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html https://maven.apache.org/guides/introduction/introduction-to... [1] http://www.eclemma.org/jacoco/trunk/doc/merge-mojo.html http://www.eclemma.org/jacoco/trunk/doc/merge-mojo.html
- twic 9y agoSpot on. As a Java developer, i've bounced around between Maven, Gradle, and ad-hoc shell scripts (and Ant back in the day!), and just cannot understand how so many people still think Maven is any good. It's not the XML - that's a superficial annoyance. It's the elaborate but extremely rigid model of what a project is and what a build is, that makes even the smallest deviation from a completely vanilla project excruciatingly painful. Gradle has all sorts of failings, and is overly complex in its own way, but at least it gets the meta-model right: provide fundamental tools for building a graph of tasks with dependencies between them, and ship a set of hopefully useful tasks built on top of that.
- pjmlp 9y agoBecause that rigidity excels when you have a Fortune 500 project, distributed across 4 development sites across the globe, with 100 developers of multiple consulting companies developing several modules.
- user5994461 9y agoThe java tooling is fantastic... when coming from the C++ world.
- cies 9y ago> try configuring maven vs npm vs Cargo (Rust) - http://doc.crates.io/build-script.html http://doc.crates.io/build-script.html (simplicity) vs elm-package (Elm) - https://github.com/elm-lang/elm-package https://github.com/elm-lang/elm-package (automatic semver compliance) vs Stack (Haskell) - https://docs.haskellstack.org/en/stable/GUIDE/ https://docs.haskellstack.org/en/stable/GUIDE/ with stackage-sets (packages tested to work well together) - https://www.stackage.org/ https://www.stackage.org/
- pjmlp 9y agoThis is typical of enterprise computing, where Java reigns, exactly because it makes easier to do the "layers upon layers upon even more layers of abstractions" that were being done in C, C++ and Smalltalk before Java came into existance. Also there are lots of similar architectures in the .NET world with WCF, Web Forms, EF, SharePoint, ... Anyone that thinks JEE is bad, should spend some weeks trying to do the same with CORBA, DCOM or SOM, in either C or C++. Same thing will happen to Go, JavaScript, Scala, or whatever language gets adopted into the enterprise cathedral.
- kelnos 9y ago> try configuring maven vs npm That's kind of a weird comparison since npm is a package manager and maven is a build tool, packager, dependency resolver, test runner, ... A better (but still lacking) comparison would be "try configuring maven vs. npm+webpack", and then I'd say... oh god, I'll take maven in a heartbeat.
- blub 9y agoThe Java community is a poor example to make your point, since it's always been vicious and obnoxious in relation to C++. It was partly built on tearing down C++. The reaction of some parts of the Java community to Hypertable choosing C++ instead of Java was nothing short of embarrassing for instance, but it's not just that, over the years I have seen too many examples to list :)
- twic 9y agoThe C++ world hasn't exactly been kind to Java either. The two languages have the kind of vitriolic contempt for each other that only siblings could have.