JVx 0.9 beta-4 is available
It is available from the project page.
What’s different?
We fixed a lot of problems and refactored the code where needed. But we have fantastic new features in this release:
- Server-side MetaData Caching
The MetaData detection is an expensive operation. It takes a lot of time to detect them and it slows down your UI. We already have a client meta-data cache which reduces remote calls between client and server. This feature was a first perfomance boost but to keep the meta data up-to-date we had to detect them on the server-side continuously. While you develop an application this loss of time is not a problem because you change a lot and need all up-to-date. But after you installed the app in the customers infrastructure, it is unusual that meta data will be changed without deployment. The app should be as fast as possible. Exactly for that use-case we have the new server option:
<globalmetadatacache>OFF</globalmetadatacache>Add this option to your config.xml in your server directory and set the value from OFF to ON (we recommend to set this option with your build system). The performance improvement is unbelievable - try it out
With this new option, you only loose performance if your Views or database access are slow.
- Automatic link editor visibility
We set all automatic link editors invisible if the same columns are used in a MasterReference. If you want them visible, use the following method of your RemoteDataBook instance:
setAutoLinkInvisibleForMasterReferences(boolean);The editors are useful if you want to move a detail row to another master row. Thats not the default case and we think they are not very important.
- Save an UIImage
We changed our IImage interface from:
saveAs(String pPath)to
saveAs(OutputStream pOut, ImageType pType)The old API tried to forward image data directly to files, but that was a bad design for Applets because unsigned applets have no access to files (not true for JNLP services). Now it is possible to save images of your whole application or single components by calling:
comp.capture(size).saveAs(stream, type); - Configuration changes
When you create a new MasterConnection, the server reads your config.xml and caches the settings for the whole session. The session does not update its cache, but it is still possible to change the file in your filesystem! When you close your connection and open it again, you will get the new configuration! You do not have to restart the whole application or the context of your application server.
- Advanced exceptions
Some client operations calls more than one server object e.g. if you call saveAllDataBooks() of a Data source. If one of your data books throws an exception, you don't know which one, because the exception does not know the name of your member. It is possible to throw specific exceptions which contains the configured remote-name or other information, but what if you forget to do this?
Now the remote server adds an extra line to your stack trace:
at com.sibvisions.util.Reflective.call(Reflective.java:277)
at com.sibvisions.app.Session.<dataSources>.insert(Unknown Source)
at com.sibvisions.rad.server.DefaultObjectProvider.invoke(DefaultObjectProvider...)After the Object Provider invokes the configured object, you find out which life-cycle object (com.sibvisions.app.Session), which object (dataSources) and which method (insert) throwed the exception.
Now your debug nightmares are gone!
Check the Changelog for a complete list, and use the forum to talk to us