For a while now, I’ve been wanting to get into software development but it was a difficult task on choosing a language to learn and what the project was going to be. It wasn’t enough just to build your standard example projects like a Notepad or something. But recently, I’ve jumped into learning Java by building out a Proxmox Desktop Client.
I’ve done some coding previously, but nothing substantial. I use PowerShell for work a lot so I’ve got a fair understanding of flow, functions and logic, and if we go waaaayy back, I learnt software development in High School. So, the challenge was going to be learning a new language and understanding those concepts.
Why Java?
When choosing a language to learn, there was only two really criteria that I had:
- It had to be easy to make cross-platform
- It needed to be a desktop language, not some web-based language with Electron wrappers
I attempted to start off with Microsoft .NET MAUI on my first attempt, but found it really had to start with, learn and then when I had working code on my Mac, it wouldn’t really work on Windows (for whatever reason).
Looking into other cross-platform languages, most of them seemed to be either Web-based in some form and not really desktop focus. Either focusing on Web and Mobile like Flutter or React Native.
So reluctantly, I landed on Java.
I knew that Java was able to run on Windows, Mac and Linux because of its structure and runtime, but was hesitant at first since I’ve heard other discredit as being an older language, and that Oracle had put all those licensing requirements on the JRE in business environments. Which for me at work, meant that I had to spend time removing it or replacing it with a supported open-source version where we needed it.
Once starting my project though, it really made more sense that it was the ideal language for my app based on my criteria.
The Project
Now that I had the language, I just needed my own project to develop with. I wasn’t interest in just going through the tutorials and making someone else’s code, I wasn’t going to learn that way.
I thought a good challenge for myself would be to create a desktop app for the Proxmox VE virtualization. The Proxmox VE has a good Web interface and I know no one is wanting or needing a desktop application, but since I grew up in the Windows 9x era, I often prefer a Desktop App over a webapp. So why not?
Also, working with Proxmox I know that the system has a robust API which allows you read and write data to the system, making it easy to develop for.
So, I knew for my project, I would just need to learn:
- GUI Interfaces
- Storing User Settings
- API Interfacing and Reading Data
At least to start with.
Development Environment (IDE)
When starting out, I was unsure what the best IDE was going to be for developing Java and there was a few options, like IntelliJ and NetBeans. And if I had my time again with the app, I would have preferred these options.
However, I started on Visual Basic Code. Since I already had this installed and was mostly familiar with it I thought this was a great place to start. And it was. Until I learn about setting up Java projects properly and using Maven for dependency management. At the moment I handle dependencies and libraries manually. In recent weeks, I’ve attempted to reconfigure the project files to use Maven but I couldn’t get it work properly so I’ve given up for now.
Where I’m Up To
I’m about four weeks into this now and it’s been going well. I’ve only got a few hours at night to work on this (when not playing Cyberpunk 2077) so its a little bit each night to progress.
In this video, it’s where I’m up to and what I’ve learnt so far. Keep in mind, I recorded this at about 11:00pm before going to bed and I’ve already been working on this for three hours.
Resources
These are the resources I’ve been using while developing this app:
- ChatGPT
I’ve using ALOT of ChatGPT to come up with the code of what I’m trying to accomplish in that moment. You could argue that ChatGPT has developed more of this app than myself, but understanding how that code goes into the app and diagnosing the issues/errors has been the real challenge - Java Swing Tutorial – javatpoint
This site has proved to be a great resource in understand what the different Swing features are and how to use them. - W3 School Java
Understanding the basics has been important and this site really helps and think it’s a great tool.
I plan to provide more updates on my journey on developing this app and plan to eventually open up the GitHub to the public when it’s more functional and user friendly (way less errors and better flow).
You can check out my other post from back in 2010 on Visual Basic here.