[HN Gopher] The long strange trip to Java (1996)
       ___________________________________________________________________
        
       The long strange trip to Java (1996)
        
       Author : graderjs
       Score  : 93 points
       Date   : 2022-03-09 12:06 UTC (10 hours ago)
        
 (HTM) web link (www.blinkenlights.com)
 (TXT) w3m dump (www.blinkenlights.com)
        
       | rhacker wrote:
       | I discontinued using Java about 5 years ago after using it for
       | what seems 20 years. Everyone was sold on Java for making
       | beautiful, very well organized code bases that are VERY easy to
       | understand, debug, and edit. And of course run-everywhere. I know
       | a lot of people dispute that, but it's pretty much true with some
       | various exceptions. Sun held it's promises. It's a damn beautiful
       | language.
       | 
       | I stopped using it because I stopped wanting to write 10000 lines
       | for doing simple things. I want to write less code now. I know
       | it's not as beautiful but it's definitely easy enough to read,
       | easy enough to debug and edit. I don't want to make a new file
       | for every, little, thing. I just want to process some data here
       | and make a script there and handle problems, not code.
       | 
       | This is just my perspective.
        
         | jaytaylor wrote:
         | > *I stopped using it because I stopped wanting to write 10000
         | lines for doing simple things. I want to write less code now.
         | 
         | Java 11, with the introduction of lambdas, makes it trivial to
         | express what used to require 10-15+ lines in 1-3 lines.
         | 
         | The syntax can be a little tricky at first, and without an
         | auto-complete IDE it's still damn near impossible to figure out
         | what the correct 1-3 lines should be unless you're really up to
         | date on the streaming collections APIs.
         | 
         | The bottom line is, things are still improving with every
         | release on the developer quality-of-life front. I've been
         | pleasantly surprised! Caveat emptor, all languages have their
         | ideal use-cases and tradeoffs. There is no holy grail (yet).
         | 
         | > _ftware engineers around the world to join our team, there 's
         | never been a better time to join than now! The most I can
         | reveal here is that our cloud service is very popular. AI / ML
         | / automatic speech recognition / NLP / chatbots are our bread
         | and butter._
        
           | vips7L wrote:
           | Lambdas were Java 8 in 2014
        
             | jaytaylor wrote:
             | Thanks for the correction vips7L. The main idea I wanted to
             | convey is that with every release, Java keeps evolving and
             | improving in the expressiveness and usability departments.
        
           | wwweston wrote:
           | > Java 11, with the introduction of lambdas, makes it trivial
           | to express what used to require 10-15+ lines in 1-3 lines.
           | 
           | Makes this bit from the OP shine:
           | 
           | "Bill Joy ... was often comparing [Oak/Java] to more
           | complicated and elegant languages like Python and Beta. He
           | would often go on at length about how great [Oak/Java] would
           | be if he could only add closures and continuations and
           | parameterized types."
           | 
           | I'm sure they faced tradeoffs and Java's industry story is
           | near unmatched so it's hard to argue they made categorically
           | _wrong_ tradeoffs, but imagine an alternate universe in which
           | lambdas /closures and a few other features tamed verbosity
           | and enabled python-comparable succinctness in Java back in
           | the 90s.
        
         | stickfigure wrote:
         | Five years ago (depending on your company) you might not have
         | even been using closures. Java has come a long ways since then,
         | and lombok has eliminated most of the boilerplate. Modern Java
         | can be pretty pleasant! Of course, there's a lot of crap code
         | out there, but there's a lot of crap code everywhere.
        
         | thesuperbigfrog wrote:
         | >> I want to write less code now.
         | 
         | Try Clojure: https://clojure.org/guides/learn/syntax
         | 
         | It runs on the JVM, but is far more concise, easy-to-use, and
         | even beautiful.
        
         | zelphirkalt wrote:
         | I wouldn't call Java especially beautiful. When I learned about
         | Java, I thought: "Hey, everything has its place! It is clear
         | what kind of concepts to use. Interfaces, abstract classes,
         | classes, enums ..." and I thought it was beautiful. This was
         | however my own limited view on programming languages at the
         | time. In hindsight, this system was quite stunted and held me
         | back, by forcing everything into that shape. Later I learned
         | other languages, which include language concepts for things,
         | which I needed to write extra files and classes for in Java.
         | One such example: Decorators.
         | 
         | Java has moved on nowadays, to include concepts, which other
         | languages have had for decades, finally coming around to it. It
         | did "modernize" a bit, one could say. Lambda expressions,
         | namespaces, not having to put everything in a class (how silly
         | that would be, to still have to do that). However, that doesn't
         | make it beautiful, because those concepts are bolted on, for
         | backwards compatibility reasons. It is not like there has been
         | a redesign of the language or anything. It is going a similar
         | way C++ is or has been going. Adding new syntax. It has to go
         | that way, because there is no good extensible concept of Java
         | syntax. Its syntax is always only a snapshot of the current
         | state, that says "this is what is valid syntax right now",
         | instead of offering a flexible way to extend the language.
         | 
         | I want to use languages, which have incorporated concepts,
         | which traditionally Java did not even have or use alternative
         | concepts, which make things possible and in this way shorten my
         | code significantly. Then I don't have to write 10000 lines for
         | simple things.
         | 
         | No language, however beautiful it may be, will solve a problem
         | of overlooked use-cases, which cannot be solved using the
         | concepts implemented in a library or program. For me beautiful
         | code is code, which implements the simplest concept one can
         | think of, in the simplest way, to make all intended use-cases
         | possible. This is what I call flexibility. It is about
         | implementing the least amount of limitations, not hard-coding
         | assumptions, which are not justified, but all invariants, which
         | are necessary. Not programming oneself into a corner.
        
         | pharmakom wrote:
         | > It's a damn beautiful language.
         | 
         | > I stopped using it because I stopped wanting to write 10000
         | lines for doing simple things.
         | 
         | My definition of beauty includes expressing simple things
         | concisely.
        
         | [deleted]
        
           | [deleted]
        
         | UncleOxidant wrote:
         | > It's a damn beautiful language.
         | 
         | Beauty is in the eye of the beholder. My list of beautiful
         | languages does not include Java. Yours does.
        
         | freedomben wrote:
         | What did you switch to instead of Java?
        
         | qqtt wrote:
         | I feel teased by this comment in the fact that you didn't
         | indicate which language (or languages) you moved to that give
         | you those benefits?
         | 
         | Personally I moved from Java to Go, and couldn't be happier
         | with it. Easy to use, easy to understand, similar advantages
         | for debugging, but had some of the same proliferation of files
         | at times.
         | 
         | I've injected a bit of python into my workflow too if I just
         | want to do a quick data-oriented task.
        
         | k__ wrote:
         | Interesting.
         | 
         | From an outside perspective, I had the impression Java devs
         | would migrate to Kotlin.
        
           | bcrosby95 wrote:
           | As a long time Java dev, if I could pick a language to
           | migrate to it would be Clojure, Erlang, Elixir, or Golang. In
           | roughly that order.
        
           | pjmlp wrote:
           | That is like saying UNIX would migrate away from C.
           | 
           | Kotlin got lucky with Android, Google should have all the fun
           | with their own version of .NET.
        
             | k__ wrote:
             | _" That is like saying UNIX would migrate away from C."_
             | 
             | Isn't exactly this happening now with Rust?
        
               | [deleted]
        
               | pjmlp wrote:
               | None of the tiny OSes written in Rust are UNIX.
               | 
               | https://www.opengroup.org/openbrand/register/
               | 
               | Note that ISO C is part of POSIX certification.
        
               | Koshkin wrote:
               | The userland at least seems to be moving more and more
               | towards C++.
        
           | dehrmann wrote:
           | Kotlin is nice, but setting up the build system can be a bit
           | clunky, stack traces aren't quite as clear, it's more of a
           | moving target, and important things like record classes are
           | making it into Java. I tried it, but realized the code ended
           | up being similar, just with less boilerplate, and switched
           | back to Java. I feel like Scala went through a similar
           | lifecycle. It looked amazing, supported lots of coding
           | paradigms, but had a lousy build system. Once Java added
           | lambdas, it was good enough, and Scala wasn't worth the
           | hassle. Also, remember Groovy?
        
             | k__ wrote:
             | I see.
             | 
             | I had the impression the Java build system was rather
             | convulted.
        
               | rhacker wrote:
               | It had a reputation for this in the days of ANT. However
               | Maven (and to some degree gradle) kinda made it a non-
               | issue.
        
               | pjmlp wrote:
               | Gradle is Ant for devs that never lived through Ant build
               | hell.
        
               | k__ wrote:
               | I heard that years ago, but I never worked with ANT.
               | 
               | My "convulted build system" experiences all came from
               | Maven and Gradle.
        
               | Alupis wrote:
               | Then I dare say you do not know the meaning of
               | "convoluted build system".
               | 
               | Thousands, or tens of thousands of lines of semi-
               | proprietary/non-standard XML is what made up ANT build
               | scripts... mostly or entirely hand written for each and
               | every project. Even small hobby projects had build
               | scripts in the thousands of lines... there was no such
               | thing as dependency management, and nothing came "for
               | free". Every single thing had to be hand written into the
               | script because ANT didn't have any inkling what you might
               | want to do... build targets layered upon each other until
               | rationalizing about what happens when during the build
               | becomes a full time job all in it's own.
               | 
               | Maven is amazing. With a few lines of XML you can
               | successfully build nearly every project, manage all
               | dependencies, etc. The trade-off? It's extremely
               | opinionated in how your project is managed and how it's
               | laid out. Worth while in most cases.
        
             | dangets wrote:
             | I'm sold on Kotlin and have been working professionally in
             | it for a few years (mixed Kotlin/Java projects server-
             | side), so take my opinion for what it's worth.
             | 
             | Integrating with Java's existing build systems (Gradle,
             | Maven) was one of JetBrains initial design goals to avoid
             | the separate ecosystem requirement that initially came with
             | Scala. I admit building Kotlin has some quirks, notably
             | around annotation processors - but overall it is very
             | seamless.
             | 
             | I am happy Java is adding new stuff (records, switch
             | expressions, sealed classes), but I worry it is increasing
             | overall language complexity vs. the fresh start that Kotlin
             | was able to take. Supporting the legacy patterns in the
             | language adds to the complexity any given Java developer is
             | supposed to know.
             | 
             | Overall I think the sane defaults and nudges towards the
             | right patterns Kotlin pushes are a much bigger deal than
             | just reducing boilerplate - though that is nice too.
        
           | vips7L wrote:
           | Personally I'm not sold on Kotlin. I don't think it offers
           | much for me over Java 17. Maybe nullable types? But I haven't
           | had problems with null in years.
        
             | adra wrote:
             | I'm a long term java dev and just recently moved to Kotlin
             | for some new core services. To be honest I just find them
             | complementary. Kotlin breaks anything it likes and it's
             | basically the pre-bleeding edge that java needs. Everything
             | that java adds to the language and the JVM are rolled into
             | Kotlin to make the runtimes faster/robust/stable.
        
             | deepsun wrote:
             | It's just a syntactic sugar. E.g. allowing last functional
             | parameter to be specified after the closing parentheses
             | makes possible to create interesting structures that look
             | more like config file than procedural code.
             | 
             | But in general it's just the same Java, e.g. you would
             | search for "how to do that in Java", not "in Kotlin".
        
               | zorr wrote:
               | It started out that way but in my eyes it has evolved to
               | much more than just syntactic sugar.
               | 
               | While Kotlin closures, receiver arguments, "it",
               | extension functions, nullability operator, var/val,
               | "when" pattern matching, sealed classes and smartcasts
               | are mostly implemented as syntactic sugar, combining all
               | of the above enables some interesting programming
               | patterns. Some examples are Compose for building
               | reactive/functional UI and TornadoFX for declarative UI
               | on top of JavaFX.
               | 
               | Coroutines and suspend functions provide structured
               | concurrency and an async paradigm that interopts well
               | with the "old" Java CompletableFuture apis and existing
               | libraries.
               | 
               | Kotlin Flow is the answer for observability and rx-like
               | reactive programming.
               | 
               | Kotlin multiplatform (while still in early development)
               | allows sharing code between JVM, web and native targets
               | (even iOS) with a decent-ish build system.
               | 
               | I'm very bullish on the future of Kotlin and have been
               | using it for years as my goto language for backend apis,
               | MPA's, Android and JVM desktop projects. I'm excited to
               | expand that into some combined web/iOS/android/desktop
               | projects in the very near future.
        
               | NoSorryCannot wrote:
               | Kotlin has more compilation targets than Java, so I don't
               | know that you can say that.
        
       | Naga wrote:
       | As an aside, the link at the top of the article
       | (http://www.starwave.com/people/naughton/book/) interestingly
       | enough redirects now to disney.com.
        
         | InfiniteRand wrote:
         | The Wikipedia article has the corporate history behind that
         | https://en.wikipedia.org/wiki/Starwave
        
           | thwawayway wrote:
           | It also has some account of the pedophile who wrote this
           | article's conviction:
           | https://en.m.wikipedia.org/wiki/Patrick_Naughton
        
             | belter wrote:
             | He was on a private Disney jet...is that were the Java
             | Handbook link comes from?
        
               | snowman-yelling wrote:
               | No, the Disney link comes from Disney acquiring the
               | Starwave company that Naughton was associated with.
               | 
               | Wow on him being a pedophile though. This story got
               | weirder and weirder.
        
       | throwaway4good wrote:
       | What's up with the title?
        
         | throwaway4good wrote:
         | The title of the article is:
         | 
         | The Long Strange Trip to Java
         | 
         | Not:
         | 
         | The Slow Boat to Java
        
           | mynameismon wrote:
           | Seems like a mistranslation?
        
             | throwaway4good wrote:
             | Maybe the poster can explain. Some kind of joke? HN is
             | usually square when it comes to titles ...
        
         | dang wrote:
         | Fixed now. Thanks.
        
       | ChuckMcM wrote:
       | Disclosure: I was working at First Person during this drama.
       | 
       | I had not seen Patrick's take on that fateful budget meeting
       | before and it was interesting to read it. My recollection of the
       | events are somewhat different.
       | 
       | As I recall, the business plan that was pitched suggested that
       | the OS that was being targeted for widespread Java adoption was
       | the Windows release code named "Chicago" (aka Windows 95). There
       | was a widespread belief that Sun was in the process of "ceding"
       | the workstation market to Microsoft as they couldn't afford to
       | put Solaris on x86 without cannibalizing their own hardware
       | business. At the time, Dave Rosenthal (a Sun Distinguished
       | Engineer at the time) had circulated a paper that basically said,
       | "Unless we change dramatically the desktop belongs to Windows
       | NT." At the budget meeting (in February) Wayne put his pitch out
       | there and Scott McNealy hit the roof (he really really disliked
       | Microsoft). He wanted to fire whomever came up with that plan,
       | and Wayne artfully stepped sideways and said it was all Patrick's
       | idea[1].
       | 
       | The end result was that Wayne came back from that meeting, told
       | the team that Sun was shutting down First Person at the end of
       | the 1994 Fiscal year (June 30th, 1995) and that we should reach
       | out to find other jobs within Sun or elsewhere because we
       | wouldn't have our current job come July 1st. James negotiated
       | with Sun Legal to release it "open source" so that when we were
       | out job hunting we could point at something that others could
       | look at to evaluate what we had been doing. They agreed and we
       | did a really low key announcement of that in March just before
       | the World Wide Web conference in Darmdstadt Germany. I had
       | managed to get included in the small number of people going to
       | that conference along with Mark Scott Johnson who was the manager
       | at the time.
       | 
       | The San Jose Mercury news put our "low key" release announcement
       | on the front page of the paper. That resulted in it being picked
       | up by a lot of press outlets who talked to local engineers who
       | gave it glowing reviews. When I showed up at the conference there
       | was a small vendor exhibit area where Sun was going to be showing
       | off the brand new SparcStation 20. The sales guys were in a PANIC
       | because everyone was asking to see "Java" and "HotJava" and they
       | didn't have any collateral to give them or demos. I spent a long
       | night before the exhibits opened helping them download and
       | install Java, and did probably four or five "training" sessions
       | where I gave the sales guys enough to talk about.
       | 
       | Of course with that level of customer "impact" the thoughts of
       | shutting down First Person became a memory and everyone back at
       | HQ was maneuvering to have Java be part of their organization. It
       | was hilarious when Bill Joy came out to congratulate us and tell
       | us that now we knew Java was going to be successful we could put
       | some world class people on it. I don't think he meant it the way
       | it came out, or maybe he did, but either way it didn't have the
       | impact he might have wanted.
       | 
       | Patrick had already left for Starwave at that point so he didn't
       | get to see the shift internally. It was a pretty amazing thing
       | though.
       | 
       | [1] Have I mentioned that the politics at Sun were pretty
       | ruthless?
        
       | vilaca wrote:
       | I learnt Java from this book back in the 90s. I'm surprised to
       | find that it is still on my bookshelf and not lost or damaged.
        
         | spullara wrote:
         | I also read this book and it was great. Too bad he turned out
         | to be a really bad person.
        
       | monksy wrote:
       | I don't understand why people still use Java these days. It feels
       | like Java has become Spring. (Mostly producing spring developers)
       | 
       | Alternative languages have branched off of the language and have
       | succeeded with great buy in. (Clojure, Groovy [I think it's past
       | it's heyday], Scala, Kotlin, etc]. However, java hasn't kept up.
       | Yes, they copied a few nice things. However they're just surface
       | level things. They're still encouraging people to write
       | procedural code and worry about weird things that other
       | frameworks take care of you. (Weird concurrency issues, DSLs,
       | etc)
       | 
       | What I'm talking about:
       | 
       | - Pattern matching (this comes from scala) - They're slowly
       | trying to give you something useful in a switch statement. It's
       | no where near as expressive and extendable as what Scala gives
       | you. (They went from int based, to string based, to some minor
       | features for matching )
       | 
       | - Optional - this really hasn't been workable for those who are
       | constructing functionality. It still feels like a procedural
       | thing that is preventing you from writing if null, it doesn't
       | avoid nesting in Java. In scala this is just apart of the flow of
       | your code.
       | 
       | - Records- My understanding of the introduction of this is that
       | it was a little different from POJOs and it broke external
       | libraries. However, this is been a need since the days before
       | Lombok. Additionally Groovy and Scala had this support.
       | 
       | - var.. ok nice you are now allowing for type inference.. but why
       | not do var and val
       | 
       | A lot of these enhancements have been bandaids on the situation..
       | not full lets rethink some things and make them better
        
         | jayd16 wrote:
         | >why not do var and val
         | 
         | "final var" is more consistent in Java.
         | 
         | Java in general is still a very versatile language with a lot
         | of great tooling.
        
         | Koshkin wrote:
         | > _why people still use Java these days_
         | 
         | Because of the Java ecosystem, e.g.
         | 
         | https://projects.apache.org/projects.html?language
         | 
         | https://marketplace.eclipse.org/
         | 
         | Looking at this I sometimes cannot help thinking, "One must be
         | insane _not_ to use Java. "
         | 
         | (I use C++.)
         | 
         | See also, e.g. https://jackson.sh/posts/2021-04-java-
         | underrated/
         | 
         | P.S. Perl's and Python's ecosystems are also great, but Java is
         | (much) faster.
        
           | [deleted]
        
         | ithrow wrote:
         | The only reason those alternate languages have buy in is
         | because of the Java ecosystem, if Java fades aways those
         | languages would likely fade away too.
         | 
         | You really think AWS is going to be offering Clojure SDKs?
         | 
         | Remains to be seem for Kotlin but the others haven't grow
         | enough to develop a big ecosystem of their own.
        
           | monksy wrote:
           | I'm referring to java the language not the JVM.
           | 
           | > AWS is going to be offering Clojure SDKs?
           | 
           | If enough people are using Clojure and it's nicer than using
           | the aws-java-sdk. yes.
           | 
           | Scala has a pretty big ecosystem. There are lots of new and
           | exciting things being built there. (This is what used to be
           | the experimental frameworks, libraries and creative projects
           | that used to exist in java)
        
             | dboreham wrote:
             | Scala codebases typically depend on reams of Java jar
             | files.
        
       | pjmlp wrote:
       | Also how Objective-C influenced Java,
       | 
       | https://cs.gmu.edu/~sean/stuff/java-objc.html
       | 
       | https://en.wikipedia.org/wiki/Distributed_Objects_Everywhere
        
       | possiblydrunk wrote:
       | Thank goodness for Safari's Reader View! Very much needed to
       | enjoy this post.
        
       | LAC-Tech wrote:
       | The article is well worth a read in its entirety. I'm a
       | millennial so it's all well before "my time" but wow.
       | 
       | Honestly - and this may sound weird - the biggest thing that
       | struck me about this was that there were so many established
       | respectable companies actually doing innovative stuff with
       | operating systems and graphical environments. It feels like the
       | gap back then between deep technical work and customers was so
       | much smaller. Must've been an amazing time to be in the industry.
        
       | uwagar wrote:
       | wtf. i was expecting a boat trip to java not bloatware called
       | java.
        
         | mushyhammer wrote:
         | I resent them for stealing the name of a beautiful island home
         | to 145 million people. It's so bad that even when you google
         | Java _while on Java island_ you get Oracle stuff first (in
         | incognito).
         | 
         | I was hoping to read about an actual boat trip to Java but I
         | knew that on HN I'm more likely to find programming stuff.
         | 
         | For people who are unaware of the place, I suggest googling
         | photos of "Java nature"
        
           | embedded wrote:
           | I'm sorry about that. I might have been the one who
           | originally suggested the name "Java" inspired by the cup of
           | Peets coffee I had in my hand at the time.
           | 
           | To be fair it would have been Kim Polese and Patrick Naughton
           | and James and Arthur Van Hoff who made the final decision on
           | the name from the suggestions thrown out in that meeting. And
           | furthermore Yahoo search was dominant then, maybe with
           | AltaVista, and the idea of polluting the search space hadn't
           | occurred to anyone.
        
       | datavirtue wrote:
       | None of this would have happened in a 100% remote work setting.
       | Don't get me wrong, I absolutely adore 100% remote work if you
       | aren't doing anything important and you can't stand your team,
       | and for those situations it is just plain human rights to enable
       | 100% remote, but I do miss being part of a team and being in
       | office with smart people.
        
         | khrbrt wrote:
         | What would take the place for something like this today?
         | Meetups?
        
       ___________________________________________________________________
       (page generated 2022-03-09 23:01 UTC)