this post was submitted on 13 Nov 2024
836 points (96.1% liked)
Greentext
4452 readers
1407 users here now
This is a place to share greentexts and witness the confounding life of Anon. If you're new to the Greentext community, think of it as a sort of zoo with Anon as the main attraction.
Be warned:
- Anon is often crazy.
- Anon is often depressed.
- Anon frequently shares thoughts that are immature, offensive, or incomprehensible.
If you find yourself getting angry (or god forbid, agreeing) with something Anon has said, you might be doing it wrong.
founded 1 year ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
view the rest of the comments
Can anyone who's actually dealt with Java tell me how much Anon is exaggerating?
I've been programming in Java professionally for 11 years. It's not just embellishment, it's outright lying.
Threads giving you race conditions? All concurrent programming will do that if you're shit at it.
Java has come a long way. I will admit that UI in Java is terrible. I would never do that.
Been coding Java for about 15 years now. Pretty much agree - anon’s primary mistake was using javaFX. From a junior dev perspective I can see why they’d do that, but Java isn’t really meant for building desktop applications, it’s meant to power web apps.
What they should have done instead is create a backend restful web service and wire up a frontend rest client with something suited to web app ui dev such as angular or react. Java has some awesome frameworks built for it over the years, something like spring boot would make building that backend service trivial if you know how to use it. JAX-RS/Jersey or even servlets could be utilized for this instead, if you wanted to.
Spring boot has some nice tooling for thread management, but Java also has pretty good options for this built in as well. As chunky mentioned, if you aren’t already versed in concurrency patterns, don’t try to perform concurrent operations or you’re gonna have a bad time. But do learn how to do this, because exploiting concurrency is one of the golden rules of good computing.
If anon's program was designed to work as a client for some external server or if Java had absolutely no GUI frameworks, that would be fine. But if anon's goal was to create a simple desktop application, doing this would be the programming equivalent of a Rube Goldberg machine.
With that approach, you also need to be really careful about how you do it. Fuck that part up and you can end up with the locally-hosted REST server listening on the device's public network interface or vulnerable to CSRF from a web page opened in the user's browser.