8 ms·
It’s rare these to read stories of software billionaires and think it’s well deserved. This is one of those rare cases. Also, IntelliJ runs on Java, for all th
by victor106 6y ago
It’s rare these to read stories of software billionaires and think it’s well deserved. This is one of those rare cases.
Also, IntelliJ runs on Java, for all the bashing that Java gets on HN, it’s an example of how “what technology you pick is less important than your focus on user experience”. It’s amazing that their products are so performant on Java
- globular-toast 6y agoBack in the 90s Java was slower and used a load more memory. But the competition was C/C++ apps with native GUIs. Nowadays with the likes of Electron as competition Java apps are fast with low memory usage.
- drKarl 6y agoThat is actually a misconception. You may have this mental classification of Java as a slow language if you looked at its performance 20 years ago. Now it's actually really fast, it goes neck to neck with C++. Sure, Rust or Go or C (or definitely assembler) might be faster in some workloads, but Java is definitely very very fast nowadays. It uses a lot of memory because of the way Garbage Collection works, but it is fast. It's definitely faster than Python, Ruby, PHP and many other kids on the block...
- xamolxix 6y ago> it goes neck to neck with C++. Sure, Rust or Go or C I hate to be that guy but 1) java does not go neck to neck with c++ unless you mean it can be in the same order of magnitude and 2) C++ is not slower than C or Go or Rust Note: by c++ I mean c++ compiled by a decent compiler e.g. gcc/clang/msvc
- sweeneyrod 6y agoYes, out of Rust, C, C++ and Go, the slow one is going to be the one with a GC.
- apocalyptic0n3 6y ago> It's definitely faster than Python, Ruby, PHP and many other kids on the block... I don't know why, but I got a good laugh from that statement. Those "kids" are all the same age or older than Java; PHP, Ruby, and Java were introduced within a few months of each other in 95 and Python dates back to 91.
- drKarl 6y agoI know, I didn't say "kids" implying these languages were new, it was just a manner of speaking.
- apocalyptic0n3 6y agoYeah, I assumed as much. I doubt anyone is calling those languages "kids" at this point, even with PHP's reputation. I just found it funny to word it like that.
- deleted 6y ago[deleted]
- devmor 6y ago>It's definitely faster than Python, Ruby, PHP and many other kids on the block... I would seriously contest the speed of Java compared to modern PHP. The JIT puts PHP at near-C performance levels with competently written code. Which shouldn't be surprising if you realize PHP is largely a "wrapper" around C.
- victor106 6y agohttps://www.techempower.com/benchmarks/#section=data-r19&hw=ph&test=query https://www.techempower.com/benchmarks/#section=data-r19&hw=... Vertx framework which is based on Java is at 8th position and PHP is 18th. But the larger point is performance is only one aspect while considering which programming lang. or framework to use
- RobAley 6y agoI think you've proved your second point by getting your first wrong. The benchmarks posted are for a stack including PHP, not PHP itself (and not the fastest stack with e.g. pgsql). Also, I don't think thosd benchmarks use php 8, which is the first version with the jit that the post above referred to.
- victor106 6y agohttps://www.google.com/amp/s/onilab.com/blog/php-7-vs-php-8/amp/ https://www.google.com/amp/s/onilab.com/blog/php-7-vs-php-8/... From the page above The bottomline: PHP 8 is still slower than PHP 7. This is a realistic comparison of running Magento on php7 vs php8.
- ta988 6y agoYou may not know that Java has a JIT and a AOT if you want even a bit more perf for cold start. And they are really good.
- tomjen3 6y agoJava is fast enough for most things, but try working with an array of a million objects in C++ vs Java and you will see the difference. In Java you will have to deal with an array with a million pointers to a million objects and in C++ you will deal with a sequential segment of memory that is a million times the size of your object - and mostly in your CPUs cache. That alone will be much, much faster. But you can't do that in Java at all.
- hucker 6y agoYou typically wouldn't use an array with a million objects in Java if you cared about performance though (for exactly that reason), you'd architect it some other way. Using SoA style when appropriate, for example.
- iamcreasy 6y agoDo you mean Structure of Arrays? Can you point to some resource to learn more about Java SoA? Quick google search didn't yield anything useful.
- nlitened 6y agoI think in this case you’re holding the tool wrong. When you want, for example, an array of (float x, float y) “objects” in Java, you just keep them as two arrays (float[] x, float[] y) — and I guarantee it will use the same amount of memory and will have nearly the same speed as C++ (depends on what cache locality you need for a specific task, it might even be faster to have two separate arrays for some tasks). So yeah, depending on the language, a slightly different implementation is more efficient, so one has to know its tools. Also, as far as I know, when project Valhalla extension goes live, you will have an option to do packed structs the same way as C++ or C# does. Edit: Oops, there was another reply about the same in the thread. I should remember to refresh the threads before answering in the morning.
- tomjen3 6y agoThat would be a workaround, but it annoys me when you have to make a workaround for something that is available in the language it set out to replace. And if you are doing something like nearest cluster mapping, or anything else where you process your data in linear order you are not going to get the optimized cache locality. Plus you can't read the file with mmap if your data is from there.
- jcelerier 6y ago> Now it's actually really fast, it goes neck to neck with C++. yet every time I try a Jetbrains IDE every action seems to take 10x the time to be processed than it takes in QtCreator
- drKarl 6y agoOnce it's finished indexing things it feels darn instant to me. What hardware do you use? Also which programming language? I've used IntelliJ with Java, Scala, Kotlin, Groovy, Markdown, and many file types and it's really snappy.
- jcelerier 6y agoI have an i7 6900k and 64 GB of ram. Indexing on the project I work on takes something like 3 hours. But I'm not even talking about that - just the basic user interaction, opening a menu, switching tabs... It's notslow but it drags its feet a bit.
- dkarp 6y agoAbsolutely agree. The amount of value that Jetbrains software provides far exceeds its price. Their existence is a net benefit to the whole software development field.
- flohofwoe 6y agoTBF, Jetbrains IDEs do feel sluggish at least on macOS compared to the alternatives (like Xcode or VSCode) on my mid-2014 13" MBP. I don't know if the JVM has performance problems specific to macOS which would explain why big UI applications feel so laggy, or whether other systems with more recent CPUs simply have more reserves to hide the lower UI performance though (the latter is probably more likely).
- gregkerzhner 6y agoAs a counterpoint, for a project of decently large size on my 2019 MBP, IntelliJ is snappy and a delight to work with, while Xcode takes up 30 GB of space, takes minutes to boot up, and gives me syntax highlighting and autocompletion about as reliably as a broken clock tells time.
- saagarjha 6y agoXcode opens in seconds for me, and my projects are massive. Sure, it can be slow to do certain things, but its startup time is generally ahead of every Java-based IDE I have every used.
- thu2111 6y agoAlmost always when a JB IDE is being reported as sluggish the problem is you're running out of heap space. Go to Help | Change Memory Settings and give it some more, see if that helps.
- justsomeuser 6y agoJetBrains IDEs always takes ages to start and index my code (especially compared to Sublime), but the jump to def, symbol and other search features are fast after the initial index.
- tomjen3 6y agoI have a MBP of about the same vintage, but I retired it from hard tasks a couple years ago. It is a 6 year old machine, we can't expect it to perform well.
- 6y ago
- gruez 6y ago>It’s amazing that their products are so performant on Java It's a total memory hog though.
- avl999 6y agoFolks who still think that Java is a bad language either from the perspective of developer ergonomics or performance probably haven't programmed in it since the Java 4 days and still think of the language as the language of Enterprise Java Beans, Java Applets and hundreds of lines of XML. It is not that language anymore. Modern Java is blisteringly fast(and has been for a while) and almost the same level as C# in terms of developers ergonomics
- sangnoir 6y agoI haven't programmed in Java since around 6 - when Spring was just about to cement its dominance. The ergonomics then were bad too. It seems lots of quality-of-life features borrowed from other languages went into subsequent versions
- ravi-delia 6y agoAdmittedly, Java suffers from the same issue as C#; those ergonomics come from a bad case of kitchen-sink-itis. In your own code it's fine, but it's a hassle going through 8 different paradigms in one legacy codebase.
- hn_throwaway_99 6y agoThese days, though, I feel like Java the language should die in favor of Kotlin (also invented by Jetbrains). I feel like with Kotlin you get all of the goodness of Java (and especially the JVM) without so much of the verbose "cruftiness" that is a result of Java the language being 25 years old (wow now I feel old!)
- pie_flavor 6y agoModern Java has nowhere near the developer ergonomics of C#, I can tell you that much. You are still manually writing tons of boilerplate, you still cannot express something as simple as List<int> (and the JSR for that is on its, what, 8th iteration? for a problem that existed since before C# existed?), there is no async/await in 2020 when even C++ has figured it out, the new module management system is a joke that solves zero problems and almost seems like it was only invented to modularize the JRE... It's got a few bells and whistles, although I can't think of a single one that wasn't stolen syntax and all from C# at least two years after the fact, except for the aforementioned modules. But 'var' is the only thing I can think of that's actually improved the Java experience since lambdas. They've committed to a six month rolling release cycle without actually having anything to put in the releases. That said, Java devs think C# is slow, C# devs think Java is slow, and people who are neither think both are slow. It is no longer 1995 where bytecode is interpreted; the slowdown relative to C++ is 2.5x-3x for both. Any leftover 'slow' opinions are bordering on superstition at this point.
- seanmcdirmid 6y agoAnd for those who weren't happy with Java, JetBrains also gave us Kotlin, which fixes many of Java's problems without overshooting into the FP space.
- Jakobeha 6y agoI used to share the "Java is bad" mindset, but now I realize Java (at least the JVM) is actually really good. The main issues people assume with Java are that it has slow runtime and it's verbose. But the JVM is actually rather fast. Especially compared to JavaScript and Python, which aren't even compiled (and which I still agree with the "it's crap" hivemind). Anything that needs real performance you should be outsourcing to C/C++ FFI calls, and as long as you do that your Java app's performance should be OK. And a key cause of Java's big slowdown are checks e.g. for null-pointers and casts, which are much better than C++/Rust's approach of being unsafe-by-default. Java is verbose, but JetBrain's awesome IDE single-handedly fixes this problem - writing POJOs and using long-named functions and classes is fast, and IntelliJ will hide excess boilerplate so that even reading code is easier. And if verbosity is still too much of an issue, there are JVM alternatives like Kotlin.
- creata 6y ago> which are much better than C++/Rust's approach of being unsafe-by-default. Nitpick: Rust is safer than Java by default. You can't ever dereference a null pointer (only raw pointers can be null, not references) or make a cast without dipping into unsafe code.
- atsuzaki 6y agoEven though the specs says nothing about it, modern JavaScript is almost always JITted, i.e. V8 that powers Node and Chrome, the rest of the browser js engines
- pie_flavor 6y agoRust's approach of being unsafe-by-default? That's kind of the exact opposite of Rust.
- Geminidog 6y agoGoing a bit off tangent here: A billion dollars is a ludicrous sum of money. No one on the face of the earth deserves that level wealth. If you ever seen an actual billion dollar product or even a product hundreds of millions of dollars (in cost, not revenue generation) it is always built by hundreds of people. Your physical two hands, strength and intelligence limits you to a lifetime gdp output of well less than 1 billion. Therefore whenever you see a billionaire, the billionaire achieved his wealth off the backs of others. A more fair distribution of wealth for jetbrains is one where the wealth is more evenly distributed among everyone who works at the company. There is a term for this... it's called communism/socialism and it has a set of downsides but I don't want to walk to far down that road. Suffice to say capitalism works, but it works because it's not fair. No billionaire ever deserves to be a billionaire because he simply does not have the physical or mental ability to produce that much wealth. It always must be taken from the hard work of others.
- Noumenon72 6y agoEver played a video game like X3 where you can set up robot space traders to haul for you? You can only make $x flying between ports, but now you can make $5x or $10x. It's not that you're stealing from the robots, you're just making use of a resource that can be put to profitable use. People are the same -- just another kind of resource, a black box that lets you make $5x. And the thing is, you deserve the $5x -- you took a system where nothing was being put to its best use, and now it is. What I'm trying to say is I've worked on many projects that sucked because no one had the vision and hiring skills the IntelliJ people do, and if society could give someone a billion dollars to make every project work that well, it would be a good deal.