db4o 4.4 released
db4o 4.4 has been released as a "development" version today. It is available on the download center page of the db4o website.
The C# source code now looks like "good" C#, well formatted, with readable variable names and comments. This may sound very natural, but it is not: We write and maintain the original core source code in Java. The production of C# code is fully automated, it just takes one big Ant script to output a complete runnable Mono distribution.
The great improvement towards more readable and faster C# code was possible by writing a new converter from scratch, based upon the Eclipse Java compiler. Our big effort to do this shows our full dedication for Mono: We want our Mono version to be just as good as our Java version and we feel that we have achieved that goal very well. The full functionality is there. Performance is better in some aspects. From today on even the source code looks the same.
For this build we also refactored our use of reflection functionality completely. All access to reflection is routed through a pluggable interface. We considered the refactoring to be necessary, to enable our new database browser, we will call it "ObjectManager". Since the browser has to be able to display all objects in the database, even if it does not have access to the "real" classes, db4o has to provide it's own "generic classes" and "generic objects". This is possible with the new pluggable reflection interface. db4o can now run against any sort of "class" or "object" - the reflection plugin simply tells db4o what "classes" and "objects" are. Besides enabling our "ObjectManager", the new technology opens a wide range of other new possibilities:
Enjoy the new db4o version!
The C# source code now looks like "good" C#, well formatted, with readable variable names and comments. This may sound very natural, but it is not: We write and maintain the original core source code in Java. The production of C# code is fully automated, it just takes one big Ant script to output a complete runnable Mono distribution.
The great improvement towards more readable and faster C# code was possible by writing a new converter from scratch, based upon the Eclipse Java compiler. Our big effort to do this shows our full dedication for Mono: We want our Mono version to be just as good as our Java version and we feel that we have achieved that goal very well. The full functionality is there. Performance is better in some aspects. From today on even the source code looks the same.
For this build we also refactored our use of reflection functionality completely. All access to reflection is routed through a pluggable interface. We considered the refactoring to be necessary, to enable our new database browser, we will call it "ObjectManager". Since the browser has to be able to display all objects in the database, even if it does not have access to the "real" classes, db4o has to provide it's own "generic classes" and "generic objects". This is possible with the new pluggable reflection interface. db4o can now run against any sort of "class" or "object" - the reflection plugin simply tells db4o what "classes" and "objects" are. Besides enabling our "ObjectManager", the new technology opens a wide range of other new possibilities:
- With a generic object plugin (under development for 4.5) a db4o server can be run without having to deploy application classes.
- It will be much easier to access stored objects if their classes are no longer available.
- Refactorings can be run in the reflector.
- Objects can be translated in the reflector.
- It is easy to build interfaces to db4o from other programming languages.
- One of these "languages" could be XML. A plugin reflector could turn db4o into a native XML database. Although an XML interface is not on our product roadmap, we encourage the db4o user community to pick this idea up as a complementary open source project and we will be happy to provide support.
- With the appropriate reflector db4o can now also be a perfect fit for a completely dynamic type system on top of the actual programming language.
Enjoy the new db4o version!

