9 ms·
Linus: "I don't actually know the details. I mean Java I really don't care about. What a horrible language. What a horrible VM. So, I am like whatever, you are
by alexchamberlain 15y ago
Linus: "I don't actually know the details. I mean Java I really don't care about. What a horrible language. What a horrible VM. So, I am like whatever, you are barking about all this crap, go away. I don't care."
My respect for Linus just grew 10-fold!
- casenelson 15y agoIt's rare that I've seen the Java VM described as horrible. In fact, it seems to be quite highly respected and seems to be working out well for Scala and Clojure. Obviously, there's also Twitter who partially moved to the VM from Rails. Would you care to elaborate? Has Linus talked about the VM before?
- DanielRibeiro 15y agoIntellij, Eclipse and Netbeans, great software written in Java. Haddop, as well. Not to mention Minecraft, but this point I'll leave to Techcrunch[1] Java is not a great language by all means, the VM does have it issues (it is very old, and has to deal with its legacy), but it is not on a really important piece of software, its quality is quite good. At the very least, it is, ironically, responsible for LISP's renewed interest through Clojure. [1] http://techcrunch.com/2011/01/15/a-brief-explanation-of-why-minecraft-matters/ http://techcrunch.com/2011/01/15/a-brief-explanation-of-why-...
- vidarh 15y agoIt's highly respected by people who are willing to use JVM based software. Frankly, typical JVM startup times alone is enough of a pain that I avoid anything-JVM if I can.
- maximusprime 15y ago> " Frankly, typical JVM startup times alone is enough of a pain" The default JVM options are biased toward long running processes. That's kinda what most software running on a JVM is going to be though - start it running, leave it for weeks. If you want a JVM that is tailored for short lived processes, then quick startup time is just a few options away after you RTFM. Or use a language/runtime more tailored to short lived scripting. FWIW I've never seen a JVM take more than a second to startup though, which is more than adequate for server software.
- gizmo 15y agoThe Java VM is quite bad. There just isn't an alternative that meets these criteria: 1. cross platform (windows, mac, linux, mobile devices, embedded) 2. kinda fast 3. reasonably mature 4. bunch of libraries If you want to create a new programming language today Java is the only viable platform. .NET and Mono isn't quite mature enough (and it's very similar to Java anyway). If you bootstrap from C it'll be fast and portable but you'll have no libraries for the first 5 years or so. There just isn't a low level language layer, just above C that can be used for interopability between programming languages. What we need, what we really need, is some sort of Java--. A simple bytecode layer that other languages can target. So libraries written in one language can be used (and inspected) from another language. I know it's not going to happen anytime soon, but it'd be nice.
- arethuza 15y ago"A simple bytecode layer that other languages can target" What about the Parrot VM: http://parrot.org/ http://parrot.org/
- LeafStorm 15y agoParrot is basically just a VM for Perl. The opcodes are tied heavily to Perl 6 semantics (type coercion for everyone, the string "0" is false, etc etc).
- julsonl 15y agoCorrect me if I'm wrong, but aren't you confusing Java the language with the actual JVM? On your last paragraph, you pretty much described what the JVM is in my perspective.
- gizmo 15y agoThere is no proper separation of concerns in the JVM. The JVM instruction set has instructions like `invokevirtual` and `invokestatic`, `invokeinterface`, which are Java specific features. The JVM also knows the concept of classes and methods and fields, even though those abstractions should be defined at the language level, not at the VM level (a Lisp or Forth-like stack machine needs different abstractions). The datatypes in the JVM are pretty weird. You have chars, but not unsigned chars, some integer types (but not all). You have no support for unicode. There is a low-level struct for arrays and multidimensional arrays (of a specific type), but for nothing else. It supports exceptions, but only Java like exceptions. (You can't make an exception system where execution can be retried or resumed; it's just not supported). It also has a java-specific thread model (want to create lightweight threads with lockfree data structures? nope, not gonna work). What you want is a low-level platform with different modules that can be picked by the people who implement the programming language. Pick a parser module, a garbage collection module, a JIT compilation module, and so forth. This is really difficult, because you have to have a good understanding what kind of primitives different programming languages need. When all these things are fixed and non-interchangeable you end up with a virtual machine that is suitable only for a specific kind of language. It's turing complete, so of course you can make any language on the JVM, but it's just not a good fit.
- deleted 15y ago[deleted]
- praptak 15y ago"My respect for Linus just grew 10-fold!" Why? He just bashes Java using strong language and not providing any arguments. This could get my respect if Java were some kind of sacred cow that nobody dares criticize. This is not the case AFAIK.
- ffsdfsdfsda 15y agoYeah, first Java was criticized by the C (and C++) community saying it was too slow, bloated, write-once-run-anywhere was a joke, etc. Then that viewpoint spread to everyone else. Then Microsoft ditched on it because .Net was so awesome, then Ruby community ditched on it because it required too much code. I've been a Java developer since the late 90s. I think what Oracle has done should reserve them a place in hell. But Java is not a threat to anyone anymore. It will have no more share than what it already has, with the exception of its (Java subset) use in Android devices, and long-term I think Google probably wants to get rid of it, too, even though it will take them replacing much of their development team first. Linus made this off-the-cuff remark somewhat in jest, as far as I'm concerned. I take Java hate from seasoned programmers with a grain of salt. What used to bother me though was script kiddies and wannabes that developed simple web apps with languages and frameworks they barely understand ditching on Java with absolutely no fucking idea what they were talking about, just because they didn't like casting or whatever. Now I just take the whole Java hate thing with a grain of salt.
- godDLL 15y agoI wish I could just get away with it like that.
- alexchamberlain 15y agoI accept that this quote doesn't give his reasons. However, I have to agree with him. My reasons are that Java is slow and bloated.
- deleted 15y ago[deleted]
- spullara 15y ago
- freemarketteddy 15y agoMy respect for him remains the same because when you multiply infinity by any number what you get is still infinity!
- dubya 15y agoWell, if you multiply by zero it's undefined... (this is nothing to do with Linus or the quote)
- freemarketteddy 15y agohaha....yeah I didnt think of that when I made my profound statement.
- ryanbraganza 15y agoWhat if you multiply it by a negative number?
- freemarketteddy 15y agohaha yeah I should have said positive real numbers!