23 ms·
Java's Cover (2001)
- PaulHoule 4y agoI love Java.
- tgflynn 4y agoWhy ?
- rootlocus 4y agoBecause it has a VM (portability, multiple languages interact seamlessly, bytecode manipulation at runtime, low compile times), insanely fast GC, best tools in the industry (IDEs, static code analysis, debugger, libraries), and it's still fast enough to write HFT software with it. It's even possible to compile it ahead of time, making projects like a Clojure CLI scripting runtime with almost instant startup time possible (babashka).
- melony 4y agoSlow startup and build times aside, the JVM is a very robust, production-ready environment. Excellent cross-platform support (if we ignore pretty GUIs) and runtime performance within a factor of 3 of C's. There are plenty of open source libraries and the Java ecosystem is massive. The language is safe and garbage collected by default, but you can achieve performance on par with C when you absolutely need to. You can use it for anything short of driver/kernel development. Even the slow start-up time is being fixed with GraalVM. If they can port over some of C#'s syntax improvements, then the language would be perfect. Compared to .Net for example, the JVM is much more well understood.
- rootlocus 4y agoGraalvm has support for ahead-of-time compilation of JVM languages. They promise "native executables [that] start nearly instantaneously, are smaller, and consume less resources of the same Java application". This is how things like Babashka (Clojure CLI scripting runtime) are possible [0] 0. https://babashka.org/ https://babashka.org/
- metadat 4y agoNative isn't quite there yet, but once it matures and the potential can be realized, it's going to be pretty cool indeed!
- PaulHoule 4y agoClean, orthogonal design. Support for metaprogramming in the form of introspection, reflection, compiling bytecode on the fly. Threads that work. Threads that work cross-platform. No GIL. Efficient memory allocation, garbage collection, JIT compiler. When problems are found with Java they get fixed https://www.cs.tufts.edu/~nr/cs257/archive/bill-pugh/jmm2.pdf https://www.cs.tufts.edu/~nr/cs257/archive/bill-pugh/jmm2.pd... most other programming languages make excuses. Build system with dependency resolution that works (unlike Python) IDEs take advantage of static nature of language. Static nature of language enables refactoring. Lambda syntax that's probably more concise than your favorite language. Implementation of Lambdas that meshes perfectly with existing practices in Java. All-virtual polymorphism is one of many ways that Java doesn't steal IQ points from you the way C#, C++ and languages like that do.
- agumonkey 4y agoWhat about the fact that Java didn't want lambda in the first places, only to hack anonymous inner classes that were never well promoted until 20 years down the road people realize it's quite useful to express logic as functions ? :)
- nextos 4y agoThis was a mistake. Actually, Gosling said he was planning to add lambdas but ran out of time. Some APIs were excessively verbose due to the lack of lambdas, which were emulated using anonymous inner classes.
- agumonkey 4y agoInteresting, not what I recall (but my readings on this were quick). AFAIK it was carefully not pursued because they wanted to make everything as classes so they went with AIC. If you have a link, please share.
- nextos 4y agoThere might be some better (primary) sources: Gosling say closures represent the realization of a dream that was postponed in Java's early days and resulted in the invention of inner classes - "an uncomfortable compromise" that failed to provide the desired level of simplification. He notes criticism that closures are too complex, but advises people to read "through all of what Neal has written". https://www.theregister.com/2008/02/01/java_closures/ https://www.theregister.com/2008/02/01/java_closures/
- mgl 4y agoThis essay is 21 years old today, so nice piece of history but hardly up to date to be relevant. Not sure choosing the “wrong” programming language can kill a startup just like the lack of traction and sales.
- spacemanmatt 4y agoI hope hindsight is 20/20 for everyone else. Java has delivered like crazy on a lot of promises that were widely considered hot air at the time.
- PaulHoule 4y agoI was coding in Java before it reached 1.0. I remember getting into an argument with two guys in the men's room in Center Ithaca circa 1995, they thought Java was overhyped, I thought it was going to to be big. I was right, with the caveat that the original "applet" use case where you wrote little GUI apps to run in a rectangle in a web browser turned out to be a complete wash.
- agumonkey 4y agonot a lot of java's original goal succeeded, applet died, desktop died .. for some reason it matched well with enterprise in a time where heavy would sell in big companies in a funny way, the jvm hitting android made it the networked desktop of the world, but in no way sun/oracle predicted it :)
- kaba0 4y agoWell, Sun did offer Java free of charge for everything except mobile (hence the infamous lawsuit), so it’s not like they didn’t think of that.
- PaulHoule 4y agoI find it kindof odd that the Blu-Ray disc adopted Java as a standard, that is, every Blu-Ray disk is really a big Java "applet" that runs on the player. Pretty frequently the "applet" is a stock player with a small amount of customization since Hollywood isn't any more interested in software development than TV station owners: that is, an interactive ATSC 3 TV channel is just a single page app that gets events from a websocket server embedded in the TV.
- deleted 4y ago[deleted]
- mattgreenrocks 4y agoMost of these points apply to a lot of languages en vogue today. I'm not quite sure what to make of that in light of these points, but thought I'd point that out.
- woodruffw 4y agoOne interpretation is that pg was hilariously wrong in 2001, and that similar arguments in 2022 are unlikely to hold water in and of themselves. The particulars might be true in any single instance, but pg’s qualities for success are obviously not necessary.
- mftb 4y agoYou're right. What this article fails to anticipate is that, "Hacker's Radar", won't be what matters. It takes great pains to make clear that it's not about Java, but hacker radar and how that leads him to reject things like Java. Well, in the era we live in now, hacker radar has taken a back seat, to bean counters, pitchmen, and CEO's blabbing endlessly on Twitter, and while all of them claim to be Tech-CEO's and pitchmen, etc... The truth is once those people take over, the tech will never be their priority, with bean counters it's always about the beans.
- ibains 4y agoThank god solving customer problems has taken over the tech-ceo job, starting with tech is usually a bad idea, even when it is innovative (crypto-ponzi as an example)
- mftb 4y agoWell that's interesting, because you and I see things exactly opposite. In the era I started, before this article was written, there were, in many cases, no customers. The users and the creators were frequently the same people. New technologies had much more time to be implemented before they were actually brought to market and productized. Nowadays new technology is saddled with unrealistic hype and expectation before anything is implemented at all. We're probably just going to be in disagreement about that point. As to your point about business people caring about the needs, and concerns of their customers, I have to be in agreement with you about that.
- rootlocus 4y agoReverse hype in a nutshell: "I don't know it, but I don't like it because it's overhyped by people I don't respect"
- rr808 4y agoMy view is Java is good. Spring ruined it.
- rfiat 4y ago> It has been so energetically hyped. Real standards don't have to be promoted I find this interesting because it's the first heuristic I use to judge anything new, technical or otherwise (e.g. TV shows or games). Did someone pay to put it in front of me? It turns out to be a mostly true assumption that you'll hear about good things organically.
- brundolf 4y agoThat's true when it comes to art, but I have almost the opposite feeling when it comes to things that require a network effect to be worth investing in I'll readily judge a new programming language or library based on the quality of its presentation, because if no thought is being given to presentation, I can tell already that it's not going to get much traction. And if a PL doesn't get much traction, its ecosystem and even its long-term development will likely suffer. Although- that's really just a minimum bar, and I agree with the author that Java went way way beyond that, and had more money tied up in that than felt warranted, so I probably would have had the same feelings
- rfiat 4y agoWhat you say about traction is a good point. I think "will it be successful?" is a very different question to "will I like it?". At one end of the scale for me is Rust. I discovered it through organic hype and I like the language but it's not successful enough for me to have found a job writing Rust. At the other end is TikTok. I saw many ads for it before anyone I know ever talked about it. It's massively successful but it doesn't appeal to me in the slightest.
- deepsun 4y agoWell, Go hype was such much. But it turned out not that bad actually.
- metadat 4y agoWhat if Paul had invested at least an hour or two trying out Java before spending that much time writing a scathing critique about why it must probably be "bad"? The approach he took in forming the opinion comes across as quite arrogant and error-prone.
- gjvc 4y agoYes. But this ""The good languages have been those that were designed for their own creators: C, Perl, Smalltalk, Lisp."" is a fair comment.
- rootlocus 4y agoIt also misplaces C++ in that list.
- deleted 4y ago[deleted]
- romwell 4y agoSome were. To say that these are the good languages is hubris.
- ksdnjweusdnkl21 4y agoExactly. Go and Rust comes to mind immidiately. Both excellent languages in my opinion crafted for the creators need. Although it's maybe not quite what Paul had in mind in 2001, but the world has changed a lot. A community project can't really outgrow these well funded big business language projects.
- goto11 4y agoGo was created by Google, a larger corp than Sun ever was.
- romwell 4y agoThat applies to more than one article on that website :)
- marcodiego 4y ago> Historically, languages designed for other people to use have been bad: Cobol, PL/I, Pascal, Ada, C++. The good languages have been those that were designed for their own creators: C, Perl, Smalltalk, Lisp. This comment didn't age well.
- ksdnjweusdnkl21 4y agoDoes a programming language have to live vibrantly for 3 decades to be "good"? I don't think so. Use it while it's good, then move on to or create the next good thing.
- bborud 4y agoThe longer it lives, the more your investment in learning thoroughly it pays off. But languages also have a tendency to accumulate features until taking on a cancer-ridden look. I probably stick to a given "main workhorse" language for about a decade on average. So I would agree that if a language gets a decade of being good, it is about as good as you can expect.
- karmakaze 4y agoWith the exceptions of Perl and perhaps Ada, I still tend to agree with this. C++ is only okay because of the libraries that make it suck less. What the statement doesn't do is support the opinion that Java will be unpopular for being a bad language. The thing that made Java succeed was the write-once-run-everywhere JVM and the huge effort spent by Sun, IBM, and others to make the JVM as good as it is.
- bborud 4y agoChoice of programming language is almost always a decision of whether you want to stand alone, or whether you want to stand on the shoulders of the multitudes. Some of which are indeed geniuses. Standing alone is always a poor choice. Not understanding that means not understanding that programming is a highly social activity.
- FpUser 4y agoWhile there are some grains of truth here and the overall post reads like utter BS. Myself I do not like Java at all. But I like this article even less.
- deleted 4y ago[deleted]
- Jtsummers 4y agoWhere's the BS? He presents an opinion piece and why he has a particular impression of Java, and even states in the conclusion that he could be wrong.
- kaba0 4y agoWell seeing how it aged, I think bullshit is a fair thing to say, especially how the author likes to be blinded by the lisp-ego so often.
- hintymad 4y agoWhat is amazing to me is that Java could attract such a huge community, so much so that top talents could produce an amazing array of libraries, frameworks, and systems. The ecosystem of Java simply makes lots of daily work really easy. And no, I've never used Spring or Hibernate or those "enterprise" frameworks. That said, many enterprise software engineers, or so I heard, do like the productivity brought forth by Spring. Frankly, I don't understand why people keep mentioning Spring as if it's the culprit of Java. Spring is just one of the huge number of choices in Java's ecosystems. To me, Java offered great productivity tools at the right time over the years. Let's not even talk about communities or successful systems. Just a few seemingly small things: 1. IDE. When Eclipse was released back in the early 2000's, it was an amazingly productive tool. Refactoring is a one or two keystrokes away. Java's simple yet mostly sufficient type system allows us to jump around definitions, references, usages, and declarations easily. The built-in compiler of Eclipse allows really accurate auto completions. I could easily learn a new code base by walking through the code with a debugger while jumping around the source code by semantics. 2. Standards. First its servlet, but soon web containers. Even in its early days, such standard made it much easier to write web applications. Engineers just needed to remember a few simple rules before producing concurrent web services. 3. JVM and all the toolchains. All the jconsole, jstack, jmap, gc logs, etc and etc. They may be norm now, but when they were productivity boosters when they first came out. 4. Java's standard libraries, especially the concurrency libraries. All those containers and high-level synchronizers are so much easier than the vanila mutex. This is something I don't quite understand about the Go community: why are people fine with using Mutex everywhere? 5. All kinds of JSRs, such as JAX-RS. You may hate them personally and passionately, but they do provide easy enough APIs and most importantly a standard for all kinds of frameworks to support. A Java programmer can easily switch from one framework to another without much learning curve.
- nextos 4y agoEven before Eclipse, there were some free (but not open) versions of commercial IDEs such as Borland JBuilder. JBuilder in particular was truly incredible in terms of features for the late 90s-early 00s, also considering it ran well on just 128 MB RAM.
- goto11 4y agoNote that this is not about if Java was good or bad, which is obviously a question of opinion. This is about if Java was going to be successful: > I've never written a Java program, never more than glanced over reference books about it, but I have a hunch that it won't be a very successful language. Given that Java became spectacularly successful and still is, the question is why the author turned out to be so wrong? My guess would be that the author thinks the people he know (apparently all extremely competent "hackers" with great taste) is the kind of people who decide what becomes popular in the industry at large. We all live in our own bubbles. I think the bubble of the author becomes apparent when he mentions Perl positively compared to Java. Sure, Perl is fun, edgy, powerful in weird ways, the opposite of Java in any way. But if I had to maintain complex code written by someone else, I would far prefer to maintain Java to Perl. I suspect the author is the kind of developer which never have to maintain code written by other programmers.
- deleted 4y ago[deleted]
- polotics 4y agoI have seen beautifully clear perl code with amazing performance and great decoupling & modularity. I have seen abysmal Java code full of leaky abstractions and bottlenecks. I guess by now we can blame selection bias and go contribute a PR to Enterprise FizzBuzz...
- spacemanmatt 4y agoI'll see your Enterprise FizzBuzz and raise you high-throughput FizzBuzz: https://codegolf.stackexchange.com/questions/215216/high-throughput-fizz-buzz/236630#236630 https://codegolf.stackexchange.com/questions/215216/high-thr...
- cpurdy 4y agoPaul only knows people who write Lisp. That's a pretty hard thing to accomplish, and harder to maintain.
- polemic 4y ago
- abetusk 4y agoLooking back, I think we can be a bit more circumspect. For me, the most relevant points are: """ ... 7. It's bureaucratic. ... ... 9. It's designed for large organizations. ... ... 10. The wrong people like it. ... ... """ These might all be shades of the same underlying cause but, for me, this is exactly why Java has "failed" in many domains and "succeeded" in others. Precisely because it was marketed as boring technology that large organizations could use is the roots of it's success in business domains and it's failure in "hacker" domains. Daniel Sockwell had a talk about the "Ideal Language for Writing Free Software" [0] and many of the points are mirrored about what makes a language well suited to an individual maintainer of a FOSS project that allow them to use its high skill ceiling and the programmers deep knowledge of the language are the things that business interests select against to allow for programmer fungibility. [0] https://www.youtube.com/watch?v=MCKozTfcWr4 https://www.youtube.com/watch?v=MCKozTfcWr4
- cpurdy 4y agoWow, that piece didn't age well, did it? Paul Graham is a great writer, and a horrible technologist.
- dang 4y agoRelated: Java's Cover - https://news.ycombinator.com/item?id=21558053 https://news.ycombinator.com/item?id=21558053 - Nov 2019 (21 comments) Java's Cover (2001) - https://news.ycombinator.com/item?id=10761400 https://news.ycombinator.com/item?id=10761400 - Dec 2015 (40 comments) Java's Cover (April 2001) - https://news.ycombinator.com/item?id=4504375 https://news.ycombinator.com/item?id=4504375 - Sept 2012 (180 comments) JAVA's Cover - https://news.ycombinator.com/item?id=3837711 https://news.ycombinator.com/item?id=3837711 - April 2012 (2 comments) Java's cover (2001) - https://news.ycombinator.com/item?id=1182743 https://news.ycombinator.com/item?id=1182743 - March 2010 (2 comments)
- MrBuddyCasino 4y agoPG makes the same mistake as most talented „hacker“ types I have encountered: underestimating the value of tools and standards that enable dev teams to work together. Every LISP codebase is different, the language is famous for making your own „DSL“s. Every Spring Boot codebase is similar. One of those approaches doesn’t scale in terms of collaborators.
- lispm 4y agoCategory error: LISP is a diverse family of programming languages from past to present. Spring Boot OTOH is an opinionated way how to use Spring, a widely used framework of the many Java frameworks.
- znpy 4y ago> No one loves it. huh, that's a big statement. I used to love java... I could write pretty much anything with it. Websites? sure, there's a ton of stuff for that. Command line programs? that's the basic. GUI programs? pick between awt, swing and swt... and there was qt-jambi too! server programs? no problem. mobile apps? J2ME is nice! That was ~15 years ago... to say no one loved it seems a bit dumb, frankly.
- zcw100 4y agoI think a lot of the criticisms of Java are motivated by developers trying to get paid for what they do. If you can jump to a new language while casting the old language as old, inefficient, etc you can, at least temporarily, command higher pay.
- millerm 4y agoIn the mid to late 90s I was spending the beginnings of my tech career writing code in VBScript, running on IIS (ASP). I wanted access to larger distributed systems, and I knew I could not do this with the Microsoft products. I learned Java on the side over a couple weeks by reading the Sun Java Tutorial, then landed myself a job at a large energy provider. That changed the course of my career forever. I will always be happy Java exists. I switched away from it over the past 5 years, but it still did me good. I do write a lot of Kotlin code now, so I haven’t abandoned the JVM. :-)
- EdwardDiego 4y agoI love how he mentions Perl's superior market share...