from Hacker News

Java's Cover (2001)

by mliezun on 6/26/22, 5:50 PM with 123 comments

  • by goto11 on 6/26/22, 7:34 PM

    Note 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.

  • by hintymad on 6/26/22, 7:11 PM

    What 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.

  • by spacemanmatt on 6/26/22, 6:25 PM

    I 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.
  • by metadat on 6/26/22, 6:41 PM

    What 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.

  • by marcodiego on 6/26/22, 6:58 PM

    > 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.

  • by rfiat on 6/26/22, 6:32 PM

    > 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.

  • by rootlocus on 6/26/22, 6:28 PM

    Reverse 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"
  • by dang on 6/27/22, 4:32 AM

    Related:

    Java's Cover - https://news.ycombinator.com/item?id=21558053 - Nov 2019 (21 comments)

    Java's Cover (2001) - https://news.ycombinator.com/item?id=10761400 - Dec 2015 (40 comments)

    Java's Cover (April 2001) - https://news.ycombinator.com/item?id=4504375 - Sept 2012 (180 comments)

    JAVA's Cover - https://news.ycombinator.com/item?id=3837711 - April 2012 (2 comments)

    Java's cover (2001) - https://news.ycombinator.com/item?id=1182743 - March 2010 (2 comments)

  • by MrBuddyCasino on 6/27/22, 6:22 AM

    PG 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.

  • by mattgreenrocks on 6/26/22, 6:26 PM

    Most 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.
  • by mgl on 6/26/22, 6:16 PM

    This 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.

  • by abetusk on 6/26/22, 7:43 PM

    Looking 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

  • by cpurdy on 6/27/22, 3:31 AM

    Wow, that piece didn't age well, did it?

    Paul Graham is a great writer, and a horrible technologist.

  • by millerm on 6/27/22, 12:07 PM

    In 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. :-)
  • by PaulHoule on 6/26/22, 5:56 PM

    I love Java.
  • by znpy on 6/27/22, 9:39 AM

    > 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.

  • by zcw100 on 6/27/22, 11:03 AM

    I 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.
  • by EdwardDiego on 6/27/22, 1:57 PM

    I love how he mentions Perl's superior market share...
  • by FpUser on 6/26/22, 7:10 PM

    While 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.

  • by rr808 on 6/26/22, 6:32 PM

    My view is Java is good. Spring ruined it.