“Simple” Network Connections with Java – a problem

I've been playing with NIO for network stuff to see if/how I want to update the code for Head First Java 3rd Edition. The original code used Sockets and Readers/Writers, and I thought there must be a more "modern" way to do this so I've tried updating it a few different ways. I got it working using SocketChannel and ByteBuffer (eventually!), but the ByteBuffer stuff is just too fiddly to use to teach people basic network IO in Java. After turning to Twitter for the answers (Twitter Driven Development) I had what looked like a promising hybrid approach.

However, I've run into a problem with using the Channels factory methods to provide this nice bridge between NIO (SocketChannels) and classic streaming IO.

I'm posting the code here because you can't post source code this long on Twitter! Maybe someone can help me.

Continue reading "“Simple” Network Connections with Java – a problem"

2020

Sad

OK so here we go, my almost-regular annual roundup. Of 2020. Deep breath.

Right so first things first, obviously 2020 SUCKED. For everyone. Anything I say that's negative is not meant to be "oh poor me I had it worse than anyone" and anything positive is all about focusing on the positives, I hope I don't make anyone feel weird about good shit happening in a horrible year.

So caveats and disclaimers up-front:

  • None of my close circle of friends or family died or was hospitalised with Covid. Yes, friends of friends, family of friends, and some people in my much wider circle of acquaintances and friends. I consider myself extremely lucky.
  • I also got very lucky with how old my kids currently are - old enough to be fairly independent (compared to a baby), young enough that school is not mandatory for them.
  • I'm also very fortunate in my working situation. I've been working remotely for 8 years already, and my company is a) extremely caring about its employees and b) in a financial situation to be able to support them.

How to start?

Continue reading "2020"

Upgrading a Maven, Spring Boot and JavaFX application

I've been migrating all my JavaFX applications to Java 15 / JavaFX 15.0.1 to see if there are any pain points or gotchas to be aware of. I particularly wanted to understand how Maven and Gradle handle JavaFX, and how to successfully build and run the applications in IntelliJ IDEA.

In this blog post I explore the steps taking to upgrade a Spring Boot/Maven/JavaFX application.

Continue reading "Upgrading a Maven, Spring Boot and JavaFX application"

Upgrading a Modular Gradle JavaFX Application

You might think, particularly given the order in which I have posted these blog posts, that I tackled the easiest application first when I decided to upgrade my JavaFX applications. But no. Because I like to live life on Hard Mode.

I spent two full days last week once again tackling the on-going tech debt I had with a Modular JavaFX application. And I won! Yay! So here's my experience report.

Continue reading "Upgrading a Modular Gradle JavaFX Application"

Upgrading a Gradle JavaFX Application

I'm helping out a bit with an IntelliJ IDEA Live Stream on JavaFX, and I used that as an excuse to refresh my JavaFX knowledge. One of the things I did was make sure I upgraded all my existing applications to the latest versions of everything and make sure they work as expected.

I have what is now quite an old demo application, originally designed to showcase Java 8 features (watch the live demo and find out more). Since JavaFX was moved into the JDK in Java 8, I decided to use JavaFX as the UI. In fact, it's this demo that was the basis for all my later JavaFX applications, including the Spring Boot one.

I haven't done much with this for a loooong time, but it turns out I have been periodically updating dependencies and trying to make sure it all compiles. I highly recommend taking the time to do this at least once a year! It turns out that because I've been updating dependencies for the last 3-4 years that it wasn't that painful to bring it right up to date. In fact, I did it in less than 30 minutes!

Continue reading "Upgrading a Gradle JavaFX Application"