When GoFleet was released free, one of the main targets we really though it needed was a modularized system around a stable core. This way, developers who want to adapt GoFleet to their systems wouldn’t have big problems developing for GoFleet.
We started studying different module systems and popular frameworks to understand which one would be the best (as in easy, fast and developer-friendly). We had one advantage: it was a zero-start module system on a fully developed and used application. A whole refactorization. No legacy, no backwards compatibility. And we knew exactly what a developer would need (jobs, tabs and gui-style).
But Java is not module-friendly at all. You cannot simply do as in Drupal, drop a folder on your classpath and magically use it. Of course that Java developers know this and have had a hard time adding new features that can help modularizing apps. But sill, you cannot simply drop a jar on a library folder and double-click GoFleet script. Classpath hurts!
One of the projects we looked more closely was gvSIG. I didn’t quite like the way they solved the module problem, although I am closely waiting for the 2.0 version, where they add Maven to their development.
Yes, of course, Maven can be handy, but useless if you want to avoid packaging the whole project over and over again, every time you want to add or remove a module. And we all know that sometimes compilation isn’t as enviromental-free as we think want.
Finally we reached a solution. Still under heavy development and unstable, but a solution, made with interfaces and properties files. Yes, probably you will still have to recompile with maven, we still couldn’t avoid that without risking the stability of the core. But we have designed the module system so in the future, when Java advances on this field (or the GoFleet core allow it), we will be able to avoid this re-compilation without changing the system.
How will it work? Will continue on further posts
But if you are really curious, you can take a look at my unstable branch. Exploded modules, I would say.
Latest Comments