As a developer I always revisit the following three problems:
- Find a proper IDE for each language (ok, sublime text rocks, but sometimes you need something more sophisticated)
- Find a cross-platform language to develop desktop application
- Find the best version control system for source files
- Find the best tool to automate software building and testing process
So far, I have a clear choice only for the #3, which is Git :). So that leaves me with #1, #2, #4. In this post we will discuss #2, since #1, #4 are really complex topics and cannot be easily covered.
For the last 18 years (time flies, oh yeah), I try to find a proper tool to create cross-platform desktop applications. Why I need that? Many of my clients need an administration tool (and yes I hate the web, so HTML-stuff is out of the picture) and they usually have a combination of Macs and PCs. It seems that the windows-dominance era passed for good.
For UI editing I used the following platforms, namely; Delphi -> Windows C API -> Java (AWT) -> Java (swing) -> C# -> XUL -> C# -> HTML/CSS/JS -> C#.
Do you notice a pattern? Yes, I revisited many times C#, which is by far the most sophisticated IDE to write UI applications. But it has one problem, it works only for the Microsoft universe, thus we are back in square one.
After lots of thought and experimentation, I tried several Java tool for RAD UI construction. Ok, officially the tools are bad. Yes real bad. Their developers should download visual studio 2003 -> 2013 and learn real IDEs are made, at least from that perspective.
I decided that I would be more productive if I wrote stuff by hand, than using any of those tools. So, layout managers is the answer to that. Of source, Java has plenty, and there are a few third party around, if you make the usual google-based-keyword round.
In addition to JGoodies, and MIG layout, I also found HTMLLayout and a set of various layout managers , which are open source and seem abandoned also.
So this is my decision (for the time being), Java but with manual UI construction using anything I can found as open source library on the web.
To that end I created a github repository name java-layout that will host all these resources. Recently, I added the htmllayout project, which I refactored, since it seems abandoned. In the future I plan to add some more stuff, regarding Java UI construction.
ps. Yes I know all about JavaFX. The concept is simple, I do not add ant library etc, if it does not have significant added value to the development process.