It’s not a real-world application and ignores lot’s of topics that are important for a typical web application. But it gives you a basic idea of the core principles and approaches of each framework and the differences between the frameworks. Another nice aspect of TodoMVC is that you can see a basic project setup for the framework of your choice. The TodoMVC app is neither too trivial (like the typical “hello world”) nor is it too complex to understand the code anytime soon.
For this reason I’ve started a “TodoMVC JavaFX” Project. Let’s create the same app with different JavaFX frameworks! You can find the repository of the project on Github:
The first idea to start this kind of project came to me after a talk I gave at the Java User Group Görlitz on “UI Design Patterns”. In this talk I was comparing several MVC variants by implementing the same app with each pattern (here you can find the code).
Some time later I was creating a Todo example app for mvvmFX which I later used as starting point for the TodoMVC JavaFX project.
At the moment there are 3 implementations: First there is a “reference implementation” that only uses pure JavaFX without any framework. It’s meant be a reference of how the application should behave and look like. Developers can take FXML, CSS or Java files from it to start with their own implementation.
The second example is the mvvmFX implementation I’ve mentioned above. The third example uses FluxFX, an experimental library that I’ve created for a talk on how to implement the Flux architecture with JavaFX (there will be another blog post about this topic in the next days).
In the future I will add other examples and I hope that the community will contribute other examples too. At the moment I’m working on an example using the Haskell-like pure functional language Frege and FregeFX.
If you like to add another example with your framework of choice (No matter if you are the author of this framework or just a user) you are very welcome. Just add an issue in the github project so that me and others know you are working on it and so we can discuss your idea. Or simply send a PullRequest :-)
I hope that the gradle build configuration I’m using at the moment works for your framework/language too. If this is not the case please tell me - I’m open to suggestions of how to improve the build process and project setup. You can find more information on how to contribute in the readme file. And of cause I’m also happy to hear if you think there is some information missing or the description could be improved.
To make sure that all examples are fulfilling the requirements I’ve added a set of TestFX tests. These UI tests are simulating a user interacting with the app. If you’ve never seen a little more complex TestFX test this might be interesting for you too.
I hope this project will be useful for JavaFX developers out there. Please tell me what you think :-)