Live data from Hacker News

IT Runs on Java 8

veekaybee.github.io

441–450 of 556 posts

Re: IT Runs on Java 8

#441
"And, if the tech is, in fact old and outdated, and the tradeoff from replacing it is lower than the tradeoff of keeping it, we shouldn’t be jumping to replace it with the latest and greatest. While we should evaluate new tools evenhandedly, most times, Postgres works just fine."

Bravo! Buzzword fanboy club here on "Hacker" "News" please take notice: outside of this massively biased webshit / GNU/Linux / GPL / Rust / JavaScript echo chamber, "Hacker" "News" is the butt of jokes. Try to guess why.

Re: IT Runs on Java 8

#442

Earlier quoted context omitted.

Isn't Minecraft written in Java. Many Fortune XX have their entire product lines written in it. Frankly, I don't understand the hate it gets on HN.

yes, and I had to pay for a lot of ram on servers because of it ;( The creator of notch chose java because when he started minecraft he thought that would let it run in web browsers. He wouldn't choose java if he could do it over again.

Do you have the link to back up the statement about running in browsers? Notch is super talented. MC was released in 2009. No way, he didn't know about browsers and Java

Re: IT Runs on Java 8

#443
post #370
post #85

The funny thing is that from a purely technological point of view, Java (even the 5-year-old Java 8 and certainly recent versions) is far ahead of most other stuff hyped on HN (as well as less hyped stuff). Virtually no other platform comes close to that combination of state-of-the-art optimizing compilers, state-of-the-art GCs, and low-overhead in-production profiling/monitoring/management. And much of the cutting-e…

Java itself is fine. It's very popular--and that's the biggest problem. Not the language as such but the developer ecosystem around it. I am dead tired of seeing 80-character camel-case function and variable names, annotations that hide critical functionality of the code, stack traces dozens or hundreds of lines long because of the amount of indirection and poorly conceived configuration "languages" used to support d…

The terrible programming paradigms are workarounds for the terrible language.

I read an old blog post about Spring's @Required annotation versus plain constructor injection and typed out a small example to get a feel for it – a simple class with one required and one optional dependency – which resulted in

23 lines of plain Java with constructor injection, or

16 lines of Java with Spring @Autowired magic, or

7 lines of Kotlin – no magic needed.

Re: IT Runs on Java 8

#444
HN is biased towards startups. Startups are mostly very short lived operations. The lucky ones end up re-implementing their core technology several times.

That stimulates a pattern of behavior where people emphasize engineering things that differentiate their business from what others are doing. You don't build a tech startup on doing basically what companies that already exist have been doing for years. If you copy those, you'll be exactly like those and not be able to differentiate. Also, startups don't have to worry about supporting still relevant software that they inherited from way back. I't s a clean slate by definition and that means picking current versions of whatever technology is relevant to you. So, this is simply a form of selection bias.

It's actually interesting to see what startups are doing because many normal businesses end up cherry picking what happens there some time later; particularly when those startups survive (most of course don't).

The title mentions Java 8, which is not that old yet. It was basically the current version until last year. 9 and 10 were non LTS releases with only 6 months support. v11 was only released summer last year.

If you use Scala or Kotlin or most other JVM languages, v11 brings very little new to the table that actually matters. It's a very minor release unless you actually use the Java language. GraalVM, which is a popular new related technology is still stuck on v8. Personally, I'm a big Kotlin fan. It looks exactly the same on JDK 11 as it did on JDK 8 and there's no big need to update. Actually because of Android, Kotlin is still biased towards Java 7.

I always look at technology platforms from a point of view of risk management. In a startup, you need to take risks but not across the board. If you go for some new funky storage layer (nosql, event stores, etc.), pair it with some new language nobody is using yet, and a bunch of frameworks that got released on github 3 weeks ago in a pre 1.0 state, then you are taking a lot of risk and the chance increases that some of it won't work out as you hope. It's fine if your startup is about that technology stack but otherwise, you may want to be more conservative and pick your risks more carefully.

If, for example, you need to have some microservice with a bog standard REST API running, pick something that you are comfortable with or plan to take a calculated risk by e.g. trying out a new framework but pairing it with a DB and language you already know.

If your startup is building what is a glorified web shop or something similarly mundane but necessary, there are a few good arguments for just sticking with proven technology. This is why e.g. Spring Boot is pretty popular with some startups. It's simple and new enough that you can get away with it without looking too old fashioned. And if you need to scale an engineering team around that in a hurry, it's kind of nice to have something reasonably widely used, understood, and mature.

People stick with Ruby on Rails for the same reason even though lots of people now pull their nose up for stuff like that. A lot of fintech startups tend to stick with stuff like this. They'll use current versions and might bring in e.g. Scala or Clojure. But overall they are definitely biased towards using more enterprisey stuff.

Funnily enough, node.js is now old enough that you see that creeping into the enterprise world as well. Personally for me that's still in the high risk category due to the high amount of changes and turnover with many npms. I have a few legacy node.js projects and updating their dependencies is an enormous PITA because basically everything breaks if you do that to a node.js project that is more than a few months old. It's like a snapshot of what was fashionable a while back. Most of my remaining Java projects on Github I update once every year or so (or whenever I need to touch them) and typically without any drama whatsoever. V7 or v8 to v11 is mostly a just bumping a few versions. Of course v11 can use them as is so there's no big need to do this. But I like to stay on top of this generally.

If you run a company that still needs to exist in two years, resilience over time is a good thing.

Re: IT Runs on Java 8

#445

Earlier quoted context omitted.

Good points here. Which is why HN is oriented toward startups with Tier 1 engineers. PG and his cofounders invented the web app, using a combination of old tech (lisp) and new (the internet). There are plenty of other forums and sites to read about conventional tech. HN is where I find the bleeding edge. 90% of it is just fascinating. But the other 10% offer tantalizing possibilities for making something novel, which…

Oh, for christ's sake. I don't want to get all "get off my lawn" but HN is full of early-20-somethings rediscovering things and calling them 'bleeding edge'. The highest paid people in our industry are working on drudgery full-time for FAANG. And that's fine, people have families, I'm not judging anyone. But let's not fool ourselves.

A good example of this is static typing - shat on for years by HN, and now, all of a sudden it's the greatest thing since sliced bread!

Re: IT Runs on Java 8

#446

In the majority of companies it's simply not possible to operate on the bleeding edge the way HN articles would have you believe you should. Besides the obvious issues around the value of rewriting stable legacy systems on new platforms, there are also man power issues. You need tier 1 developers to live on the bleeding edge because any problem that comes up (and they will come up) largely requires you to solve it yo…

Are we reading same HN? It seams majority of people advocate fairly sane proven choices for majority of projects e.g. start with the monolith default to PostgreSQL for dbms etc.

Re: IT Runs on Java 8

#447
post #185

I have seen some Excel files from end users which grows into a whole application. The users wanted more functionalty and didn't get through all the management levels to reach someone from corporate IT and just start doing it by themselve with the tools they know and develop from Excel to Macros to VBA to VBA with SQL Database (because they have a standard process in the company to request a new SQL Database and the d…

Agreed, 'shadow IT' is very real in the Enterprise. And I don't think it's the user's that are to blame - corporate IT departments just make everything so bureaucratic, expensive and difficult. Meeting after meeting, and all the time your department's budget is getting hammered for the hours, long before any development even starts.

Re: IT Runs on Java 8

#448
post #258

Earlier quoted context omitted.

> Technically there is nothing I don't like about JVM right now, everything that seems impossible 15 years ago is now solved. Value types are a major missing piece in the JVM stack right now. It's at least on the roadmap, but it keeps getting pushed back and back and back. I'd also argue runtime generics is another one, and perhaps more depressingly one that is unlikely to ever get fixed. .NET has both of them and al…

.NET is tied to Microsoft, so I'd avoid it 100% of the time. Yes, yes. I know that Microsoft theoretically open sourced and ported it. However the way that this always works is that there is a base that can be written in, but anything non-trivial will have pulled in something that, surprise surprise, is Windows only. Otherwise I agree that it is a better Java.

They didn't "theoretically" open source it - they actually open sourced it.

I get why people used to shit on Microsoft, but Microsoft has demonstrated over a number of years that its changed under Satya.

> However the way that this always works is that there is a base that can be written in, but anything non-trivial will have pulled in something that, surprise surprise, is Windows only.

Outside of desktop GUIs, this is simply not true. I'm writing complex, cross-platform systems that work just fine on Windows and Linux (and would on MacOS if I chose to target it).

Hell, even a lot of the tooling is now cross-platform: Visual Studio Code, Azure Data Studio, even Visual Studio and Xamarin run on MacOS!

Re: IT Runs on Java 8

#449

Earlier quoted context omitted.

Python's relevance got renewed by the ML frameworks (Tensorflow) and notebooks (Jupyter).

This. Jupyter notebooks, Matplotlib, Numpy, Spyder...all that made Python big again as ML and AI became the new hotness recently and the killer app for Python. Outside AI, Python is a really good scripting language for both Linux and Windows. My entire industry seems to run off of Python for process automation and analysis. It really is a lingua franca in this space.

I agree. During my Maths + CS studies I've been using mainly MatLab and R, Andrew Ng's famous Machine Learning intro was also taught in MatLab/ Octave. But using just one „proper” general purposing language like Python instead makes way more sense, especially when building software from scratch. Need a custom ERP? Build one with django. A Web Server? Go with flask. Integrating some ML pipelines? Easy.

Re: IT Runs on Java 8

#450
post #372

Earlier quoted context omitted.

> Why do reified generics make interop challenging? Suppose you have types A and B, such that A and List ? This question is called variance, and different languages have very different answers to this, but once generics are reified, the chosen variance strategy is baked into the runtime. > Couldn't the language implementations basically pass around ICollection in .NET somewhat similar to how they do in Java? They cou…

> This question is called variance, and different languages have very different answers to this, but once generics are reified, the chosen variance strategy is baked into the runtime. Which, realistically, is probably the only principled way to do things if you want to be doing much with variant generics in a cross-language way. The Java way, "I pick my variance strategy, you pick yours, and we'll both pass everythin…

Except, realistically, of all the polyglot runtimes, the ones that have good interop erase and the one that doesn't reifies.
Post reply on HN