3 ms·
Jet.com was the original purchase by walmart to my understanding. They contributed quite a bit of useful things to the ecosystem, and were one of the "F# compa
by banashark 3y ago
Jet.com was the original purchase by walmart to my understanding.
They contributed quite a bit of useful things to the ecosystem, and were one of the "F# companies that made-it".
Some of their projects live here: https://github.com/jet?language=f%23 https://github.com/jet?language=f%23
An old HN thread on why they chose F# exists here: https://news.ycombinator.com/item?id=9971412 https://news.ycombinator.com/item?id=9971412 (though the link is broken, comments still exist).
As an F# enjoyer, it's not surprising that this happened. I've seen quite a few companies migrate to Java from various languages. Casting aside syntactical or language-feature niceties, there's just no substitution for the production-maturity of the Java ecosystem.
Plenty of open-source tested-at-scale libraries being put through their paces at large organizations taking in tons of traffic. Best-practices out-of-the-box adapter libraries for most infrastructure. First-party (actual first-party highest tier of coverage) libraries for communicating with the most common infrastructure (All of AWS, elasticsearch, kafka, cassandra, etc). Even with all of the open-source mindshare, most can have an extreme amount of information availability and support with the common core pieces like JUnit, Spring, Hibernate, and the accompanying set of libraries that usually join those. JFR is to my understanding still the only one of its kind.
I'm grateful for what everyone in the F# and dotnet community has done and continues to do, but even in dotnet (which is probably the closest competitor for production cloud web-services), you're spending a lot more time on writing and wiring up supporting libraries for things that the Java stack does for you out of the box. I prefer many small things in the dotnet world to the jvm world, but at the same time I can't deny that I'm much more able to focus on core business logic and concerns when working on a spring project than when I am on a .net 8 web project.
- jhh 3y agoDoes anyone have examples of people migrating from Go to Java? I suspect this has more to do with moving away from functional and/or reactive programming.
- 0cf8612b2e1e 3y agoGo is a relatively young language. Building a product in Go, only to port it to Java has to be a rare phenomenon.
- nindalf 3y agoGo is 12 years old (1.0 in March 2012). Young compared to Java, but old enough for codebases to have gone through a few write-rewrite phases. Case in point - this thread is about code that Walmart got when it acquired a company founded in 2014.
- 0cf8612b2e1e 3y agoSure, but Walmart is moving from a niche language to a mainstream one. Significantly easier to make that business justification. Go to Java should require a lot more political capital to champion such a change. For what it’s worth, the 2023 stack overflow survey said 14% of professional programmers used Go vs 1% for F#. (Java at 30%)
- WorldMaker 3y agoGiven the description also describes moving from a custom event sourcing engine to Kafka it doesn't seem to be moving away from reactive programming. As much as anything it seems like something of an "Apache Effect" that some Enterprise Highly Paid Consultants came in, told them they were doing "everything wrong" and that everything would be better with off the shelf open source components and that the "best" language for working with off the shelf open source components is Java. Most of that isn't true in various ways, but the number of Enterprise HPCs that love Java despite that language's deficiencies is surprisingly high. (Though maybe not that surprising given Oracle owns Java today and has always directly and indirectly owned a lot of HPCs in the Enterprise space.)
- bunderbunder 3y agoThere's a very strong "nobody ever got fired for choosing IBM" effect surrounding Java. I can list specific situations where I'd prefer another platform all day long. But there are only a few specific situations I can think of where I would say Java is not a defensible choice. And giving advice that's optimally defensible is the Highly Paid Consultant's actual job. You don't bring a consultant like that in when you're playing to win; you do it when you're playing to not lose.
- meowtastic 3y agoMy team wants to do that. Only because the rest of the org uses Java.
- rbjorklin 3y agoWorking link to the old Jet article: https://archive.is/lkDXg https://archive.is/lkDXg
- naasking 3y ago> Plenty of open-source tested-at-scale libraries being put through their paces at large organizations taking in tons of traffic. Best-practices out-of-the-box adapter libraries for most infrastructure. First-party (actual first-party highest tier of coverage) libraries for communicating with the most common infrastructure (All of AWS, elasticsearch, kafka, cassandra, etc). I doubt this is really it. It's probably more about the size of the labour pool, and unfamiliarity with the language and functional programming that extends onboarding.
- bunderbunder 3y agoThis definitely affects my decision. Personally, I love functional programming, and will use it as much as possible. Professionally, I typically go with OOP or even procedural whenever it's my call to make. The vast majority of people I've worked with are much more comfortable in one of those two paradigms, and that makes onboarding new people onto the project much easier. Even people who express a desire to work in a functional language don't necessarily have the experience or training to know how best to do it in a professional setting. It's to the point where I don't even like to advertise that I like to work in functional languages around the office. Too much risk of being called in to be the hero when the last person who understood the code for some pilot project to try out Scala or Clojure that grew to become mission critical decides to leave the company.
- naasking 3y agoThat's why I think C# is did the industry a great service by introducing LINQ. It really drove a movement to adopting some functional-style idioms in lots of languages, even Java in the end with it's stream API. It at least got functional programming's foot in the door among industry standard OOP languages. Still a long way to go though.
- bunderbunder 3y agoThough, Java's stream API is not suitable for use with typical functional programming idioms the way that LINQ is. In my opinion, no code that touches it should be considered functional. That's a big part of why Scala and Kotlin code tends to avoid it.
- kypro 3y agoReading this made me chuckle because there was Java developer in a "Ask HN" thread a few months back asking for advise after struggling to find work for several months. The advice HN gave? Java is dead and he needed to reskill. I don't have much familiarity with F# (although everything I've heard has been very positive), but your comment basically sums up why corporates use and will continue to use Java – the ecosystem is extremely mature and battle tested. While it might not be as fancy or fun to work with, you know you're in safe hands which is extremely important when you have billions of dollars resting on the stability and security of your software. I'd even argue it's got little to do with the fact you have to spend time building things that comes out of the box with Java, and far more to do with the fact you can simply trust code that's been used by hundreds of fortune 500 orgs in production.
- nunez 3y agothats horrible advice. java is thriving.