This is a basic app for learning. I have developed apps in .NET MAUI so this is kinda similar to me. Though I have never actually used java for anything, seeing some job oppurtunities prefer Java over C# I wanted to diversify my knowledge. Knowing JavaFx isn't the standard for developing desktop apps I still wanted to learn, but from what I saw JavaFx is the best choice for developing apps in Java.
I decided a simple CRUD app was the best way to do this. Just using local memory (Aug 29, 2026) with plans to potentially connect a database as a learning experience.
The app allows users to fill out fields for Name, Author, Year of Publication, Genre, Url for a cover photo. It than displays the inputed books in a table, allowing users to delete and update books as they see fit.
I used Claude to help be scaffold the tech stack and get me familiar with Maven. It also did the FXML because before this I didn't even know what tags existed in the mark up language. In saying that I have since familiarized myself with it. I also had it do the odd thing here and there explaining its movements each step of the way. In saying that most of the coding done in this app is from me. Great learning experience especially coming from a C# background where variable == "word" is okay. Also I had it write the Tech stack info below.
| Layer | Technology | Version |
|---|---|---|
| Language | Java (Microsoft OpenJDK) | 17 |
| UI toolkit | JavaFX (javafx-controls, javafx-fxml) |
21.0.5 |
| UI markup | FXML | — |
| Build | Apache Maven | 3.9.16 |
| Compiler plugin | maven-compiler-plugin |
3.8.0 (<release>17</release>) |
| Run plugin | org.openjfx:javafx-maven-plugin |
0.0.8 |
| Packaging | JPMS named module learningappone |
— |
| Storage | In-memory ObservableList — nothing persisted |
— |
JavaFX 21 is the LTS line that still targets JDK 17; moving past it would require a newer JDK.
src/main/java/learningappone/
├── App.java Application entry point, loads the FXML
├── PrimaryController.java Form handlers, table cell factories
├── models/Book.java Model: title, author, genre, year, cover URL, UUID
└── module-info.java requires javafx.controls + javafx.fxml
src/main/resources/learningappone/
└── primary.fxml Form and table layout
mvn javafx:run