4 ms·
My view is that Java was a product of its time. Absolutely fabulous for the 90's and 00's, no question whatsoever about that. But today you would be nuts to us
by traceroute66 4y ago
My view is that Java was a product of its time. Absolutely fabulous for the 90's and 00's, no question whatsoever about that. But today you would be nuts to use Java instead of Go (or Rust if you need the low-level).
Go has a solid stdlib. Go can cross-compile and provide single-binary distribution.
Go doesn't have and client-side JVM dependency nonsense. Literally just ship the compiled Go binary for your app, everything is "batteries included" for the user. Doesn't matter if you're writing a simple CLI tool or a server.
I even don't write shell scripts any more, I write in Go and ship the binaries. It's cleaner and more robust to code and it's easier to deploy because of zero dependencies.
- wernerb 4y agoAs long as there are no cheap go programmers to find you will see java being very relevant.
- AndyPa32 4y agoJava is a bit late to the party, but native binaries are possible for a few years now.
- pulse7 4y agoWith Excelsior JET [1] you could do that since 2000. They closed the company when GraalVM/Native Image started coming out... [1]: https://en.wikipedia.org/wiki/Excelsior_JET https://en.wikipedia.org/wiki/Excelsior_JET
- pasza 4y agoThey were far ahead of the GraalVM - especially with the Swing based GUI applications. The license costed a fortune though...
- Nursie 4y agoIt wasn't exactly fabulous back then - 'Enterprise' java was a quagmire of mediocrity in the 00s. I quite like it now in some ways, its packaging system allows for comparatively rapid development, you can find libraries for a lot of stuff, and it is quite an expressive language. In other ways it's in a sad state - the reflexive use by most projects of quite heavy frameworks that purport to do a lot of work for you and then fail at various edge cases while adding multiple layers of opaque magic and tons of transitive dependencies... it's less than brilliant. And startup times are an issue. Go is nice too. It has some shortcomings in the breadth of its ecosystem, but I'm sure that will grow with time.
- traceroute66 4y ago> 'Enterprise' java was a quagmire of mediocrity in the 00s. Yes, I agree. But at the time, fighting with Tomcat stack traces was often still preferable to a number of other options at the time. Its obviously been a while, but IIRC for web stuff if you were not a JAR shop, then you were (probably) using ColdFusion or PHP, because the Microsoft badge couldn't be trusted at the time to be put on the web. And back then PHP was v4/v5 where it deservedly gathered community hate unlike today's pretty decent v7/v8. ColdFusion was generally ok though, but I think its largely going the way of Java these days, overtaken by better tech.
- Vt71fcAqt7 4y agoWhat about being cross platform? There is something to be said about having a bytecode that makes switching to a new architecture easier.
- philliphaydon 4y ago> Literally just ship the compiled Go binary for your app, everything is "batteries included" for the user. Doesn't matter if you're writing a simple CLI tool or a server. > It's cleaner and more robust to code and it's easier to deploy because of zero dependencies. If you want clean and simple then C# does all this and is clean and simpler.
- spicyusername 4y agoThe biggest thing about C# (and it's .NET peers) that turns me off is the link to Windows and Microsoft. I don't like using Windows or Visual Studio for development.
- philliphaydon 4y agoI do most my .NET development on Linux… you don’t need windows or visual studio for like 6 years now. Edit: changed all to most as I still need windows for some c++ specific stuff at the moment.
- arcturus17 4y ago> Edit: changed all to most as I still need windows for some c++ specific stuff at the moment. What kind of stuff? I am going to invest heavily in learning C# and .NET in 2023. Anything that takes me out of Unix development and hosting would be a huge no for me. I get the impression you might be doing things at the edges that I might not ever encounter so you are not going to dissuade me, but I'm curious nonetheless.
- philliphaydon 4y agoHaven't found a way to build a C++ DLL on Linux that can be registered in Windows. So I keep my laptop dual boot to do Windows specific stuff. In terms of C# that's entirelly on Fedora right now.
- GiorgioG 4y agoYou can use Linux or Mac to develop C#/.NET apps with VSCode, JetBrains Rider, or even vim: https://github.com/OmniSharp/omnisharp-vim https://github.com/OmniSharp/omnisharp-vim
- matsemann 4y agoThere is no client side jvm dependency anymore. You bundle the jvm as part of your executable, using jlink to only include what's needed. It's invisible to a consumer that it's a java program. No need to install JRE. Seems like your knowledge about Java is ~10 versions old.
- traceroute66 4y ago> There is no client side jvm dependency anymore. You bundle the jvm as part of your executable So there is still a JVM dependency then, you're just hiding it. How does that JVM bundling work out for bloat ? I'm guessing it increases the size of the package, and the JVM still has a tendency to eat RAM for breakfast like it always did ? Does JVM still need "tuning" for production via obscure flags and XML file params ?
- fulafel 4y agoGo also embeds a copy of the runtime in the executable and has a reputation for big executable size.
- matsemann 4y agoYour argument was that go was "batteries included for the user", and I pointed out that's now true for java as well. Now you're moving the goal post. I don't really care about a few mb extra size of bundling. Maybe some use cases do. I haven't tweaked jvm params in years. For a dockerized cloud deploy it's fire and forget. If we're talking about bloat, the current python app I'm working on needs ~20x as many nodes as a similar jvm project I worked on earlier..
- erik_seaberg 4y agoTuning the JVM is no fun, but tuning by repeatedly rewriting your own code is a lot more effort and risk. As for package size, there are people who bundle a stripped down JVM with a single app, but I don’t think that’s a good use of time—I’d much rather declare a dependency on the complete OpenJDK, and rely on the system package manager to install exactly one copy of it for all apps to use.
- 4y ago
- lp4vn 4y ago>But today you would be nuts to use Java instead of Go (or Rust if you need the low-level). I really hope you're trolling to come up with this kind of statement.