04 May 2017

java8 1 Version4 1

For a longer time there has not been a new release of myjaphoo. The reason is that I work on a version 4 of myjaphoo which has a lot of internal code changes and requires more time to finish. The goal is to rework the code based on the experience of the last years and make some architectural changes. Those changes mainly influence the code - not the general application behaviour or the database. However - there is no final decision if the new version will be fully backward compatible with the release 3.

The following describes the major changes, however - this is work in progress and not yet a complete list of changes that will be part of version 4. Some of those changes may be moved to future releases or even left out.

changes that will be definitively in version 4

  • the code will require java 8. No older versions will be supported any more. This will give us the possibility to produce nicer code using lambdas and the latest improvements of the JDK.

  • Plugin concept. There are code parts in version 3 which are not very well written and tested - often because they are rarely used features. The plan is to remove them from the core code and release them as plugins. Plugins are also a good possibility to publish experimental code.

  • clean up the core code and remove unnecessary or mature code parts. The core code needs more code coverage to ensure the overall quality.

  • the internal caching of entities will use immutable structures. It will use http://www.javaslang.io/ to implement immutable structures for all cached entities. The cached entities will be also completely immutable. This needs to rewrite/change a lot of the core code of the application to implement it that way. This is also the most time consuming change of version 4. It means also that we need complete regression testing of the application. The benefit of doing this will be some speed improvements - and code which is prepared to make more optimisations in future versions.

changes that need to be investigated, but might be part of version 4

  • remove of meta tags. The concept of meta tags has not been used much by users and is in many parts replaceable by attributes for tags. The users I know havenĀ“t used it at all and I have also stopped to use it, and continued with attributes. If we remove meta tags feature this will remove a lot of code (especially gui code) and therefore reduce the code complexity. Of course this would mean data loss for those who used meta tags in the past. It would be possible to write a groovy script to convert the metatags into attributes to retain the information. Please feel free to give feedback on this topic.

  • saving of thumbnails. This was done in the past in the database in form of blobs into one table. This is good as all data is bundled in the database - on the other hand it blows up the database for big projects and makes backups etc more difficult. As an alternative a new feature will be added to save the thumbnail data in the filesystem independant from the database for cases where this is more propriate. Of course it is still possible to save them in the database as before.

  • project concept. It would be helpful in some situations to support the feature to have "projects". A project would bundle application settings and a database. New projects could then be created or existing opened. This would give the user an easier experience to work with different sets of databases.

This is a working list which will be continued; alpha versions will be released soon.