Saturday, January 7, 2012

This week in uDig - January Week 1

I may as well take a turn writing one of these posts - Happy New Year from the uDig Team!

This week has a bit of catch up; as several github "pull requests" have been submitted over the break.

1.3.1
We have issued a small uDig 1.3.1 patch release just prior to the holidays. The release notes are up; but it amounts to a couple fixes reported on the user list (zoom out and copying features into the feature table).

Thanks to those who took part in testing over December!

SDK
The bulk of my week was devoted to the construction of a SDK bundle. Panagiotis from udig-devel supplied a patch changing the manner in which "source features" are generated to  follow the Eclipse 3.2 standard.

Each feature is responsible for packaging a number of plugins for deployment; the generated source feature is now a single jar (with internal folder structure matching the listed plugins. 

The SDK is now available from the uDig download page. Maurcio and Panagiotis report success (although I am not sure if they have updated the SDK instructions).

Native Code Fragments
Frank Gasdorf has been a whirlwind of productive (and indeed hard to keep up with). Frank has been exploring the the use of fragments to package the native code we use in the uDig project. We have several categories of native code; extensions for Java (such as Java Advanced Imaging, ImageIO and ImageIO-Ext); GDAL (for ImageIO-EXT to use); and that native Eclipse code (such as Standard Widget Toolkit).

The native Eclipse code is packaged into platform specific 'fragments' which are wired up when the application launches - accounting for both the java class path and the corresponding native library path.

uDig has been dependent on a combination of a custom JRE (where we place the Java extensions into the ext/lib folder; and their native code into the bin folder) and the "udig.sh" or "udig.bat" script (so we can set the GDAL environmental variables correctly).

When Frank has successfully packaged the native code as fragments we will switch over to using JAI, ImageIO and ImageIO-EXT as jars and no longer be dependent on their presence as java extensions. We trust this will result in a smaller download; and better integration options with projects such as the OSGeo Live DVD.

Eclipse Modelling Framework Code Generation
One of the most impressive changes this week was the work Paul Pfeiffer put into the core Map, Layer and Viewport classes. These classes make use of the Eclipse Modelling Framework; allowing developers to update the model and generate out the changes to the code.

Paul has update the java interfaces ( a couple new zoom methods) and hit the magic code generation button. The net result of this is a simplification to to some of our classes (EMF now provides base classes with many of the boilerplate methods) and an update to use Java Collections with generics.

A new feature of EMF is the inclusion of a UML editor to visually review your model. Here is an example of the rendering system displayed with this tool.
Render Manager
I have copied several of these diagrams into the developers guide. Paul's work will continue next week as we are going to clean up some of the method names in ILayer.