<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?>

<feed xmlns="http://purl.org/atom/ns#" version="0.3" xml:lang="en-US">
<link href="https://www.blogger.com/atom/10758233" rel="service.post" title="db4o :: Mono Product News Blog" type="application/atom+xml"/>
<link href="https://www.blogger.com/atom/10758233" rel="service.feed" title="db4o :: Mono Product News Blog" type="application/atom+xml"/>
<title mode="escaped" type="text/html">db4o :: Mono Product News Blog</title>
<tagline mode="escaped" type="text/html"></tagline>
<link href="http://www.db4o.com/community/blogs/product/mono/" rel="alternate" title="db4o :: Mono Product News Blog" type="text/html"/>
<id>tag:blogger.com,1999:blog-10758233</id>
<modified>2006-05-15T02:13:52Z</modified>
<generator url="http://www.blogger.com/" version="6.72">Blogger</generator>
<info mode="xml" type="text/html">
<div xmlns="http://www.w3.org/1999/xhtml">This is an Atom formatted XML site feed. It is intended to be viewed in a Newsreader or syndicated to another site. Please visit the <a href="http://help.blogger.com/bin/answer.py?answer=697">Blogger Help</a> for more info.</div>
</info>
<convertLineBreaks xmlns="http://www.blogger.com/atom/ns#">true</convertLineBreaks>
<entry xmlns="http://purl.org/atom/ns#">
<link href="https://www.blogger.com/atom/10758233/114765923246739980" rel="service.edit" title="We have moved!" type="application/atom+xml"/>
<author>
<name>Christof Wittig</name>
</author>
<issued>2006-05-14T19:13:00-07:00</issued>
<modified>2006-05-15T02:13:52Z</modified>
<created>2006-05-15T02:13:52Z</created>
<link href="http://www.db4o.com/community/blogs/product/mono/2006/05/we-have-moved.html" rel="alternate" title="We have moved!" type="text/html"/>
<id>tag:blogger.com,1999:blog-10758233.post-114765923246739980</id>
<title mode="escaped" type="text/html">We have moved!</title>
<content type="application/xhtml+xml" xml:base="http://www.db4o.com/community/blogs/product/mono/" xml:space="preserve">
<div xmlns="http://www.w3.org/1999/xhtml">Mono specific product news here:<br/>
<a href="http://developer.db4o.com/blogs/product_news/archive/category/1008.aspx">http://developer.db4o.com/blogs/product_news/archive/category/1008.aspx</a>
</div>
</content>
<draft xmlns="http://purl.org/atom-blog/ns#">false</draft>
</entry>
<entry xmlns="http://purl.org/atom/ns#">
<link href="https://www.blogger.com/atom/10758233/114633646611986131" rel="service.edit" title="db4o 5.3 development release" type="application/atom+xml"/>
<author>
<name>Carl Rosenberger</name>
</author>
<issued>2006-04-29T11:47:00-07:00</issued>
<modified>2006-05-01T15:19:59Z</modified>
<created>2006-04-29T18:47:46Z</created>
<link href="http://www.db4o.com/community/blogs/product/mono/2006/04/db4o-53-development-release.html" rel="alternate" title="db4o 5.3 development release" type="text/html"/>
<id>tag:blogger.com,1999:blog-10758233.post-114633646611986131</id>
<title mode="escaped" type="text/html">db4o 5.3 development release</title>
<content type="application/xhtml+xml" xml:base="http://www.db4o.com/community/blogs/product/mono/" xml:space="preserve">
<div xmlns="http://www.w3.org/1999/xhtml">db4o version 5.3 has been made available on the <a href="http://www.db4o.com/community/ontheroad/downloadcenter/">db4o downloadcenter page</a>.<br/>
<br/>The new alias feature to translate classes, namespaces and package names between application and database opens a wide range of usecases. Here are some examples:<br/>
<pre>
<br/>// Creating an alias for a single class<br/>Db4o.configure().addAlias(<br/>  new TypeAlias("com.f1.Pilot", "com.f1.Driver"));<br/>
<br/>// Accessing a .NET assembly from a Java package<br/>Db4o.configure().addAlias(<br/>  new WildcardAlias(<br/>    "com.f1.*, F1RaceAssembly",<br/>    "com.f1.*"));<br/>
<br/>// Using a different local .NET assembly<br/>Db4o.Configure().AddAlias(<br/>  new WildcardAlias(<br/>    "com.f1.*, F1RaceAssembly",<br/>    "com.f1.*, RaceClient"));<br/>
<br/>// Mapping a Java package onto another<br/>Db4o.configure().addAlias(<br/>  new WildcardAlias(<br/>    "com.f1.*",<br/>    "com.f1.client*"));</pre>
<br/>
<br/>Aliases underline db4o's capability to access the same database concurrently from any platform, Java or .NET.<br/>
<br/>Aliases also are very helpful for the use of db4o with ASP.NET projects in Microsoft Visual Studio 2005 express edition, since this IDE dynamically generates different package names for different compilations of the same application. By asking the system for the current package name on the start of the application and creating an alias accordingly, db4o can now be perfectly used with VS express edition.<br/>
<br/>
<br/>Class aliases have been used to enhance ObjectManager 1.8 (<a href="http://www.db4o.com/community/ontheroad/downloadcenter/">available here</a>), the db4o database browser. ObjectManager is in fact a Java application to browse .NET databases, a nice demonstration of crossplatform capabilities. ObjectManager 1.8 comes with new functionality to delete objects.<br/>
<br/>
<br/>Quite a lot of work for version db4o 5.3 has gone into improving Compactframework 2.0 compatibility. By providing a compile-time enhancement tool (db4o-5.3/bin/CFNativeQueriesEnabler.exe) we have managed to overcome a limitation with reflection on CompactFramework. Native Query syntax can now be used on CompactFramework 2.0 exactly in the same way as for .NET 2.0. The enhancer tool is documented in chapter 22 of the tutorial, with a nice explanation on how enhancing can be seamlessly integrated with the build process of of Visual Studio 2005. Support for generics on CompactFramework 2.0 has also been considerably improved.<br/>
<br/>
<br/>While working on dRS (db4o Replication System, also available <a href="http://www.db4o.com/community/ontheroad/downloadcenter/">here</a>) we came up with an idea, how UUIDs and version numbers can also be used to provide information about the creation time and the modification time of an object. We have changed the generation of both number circles accordingly. Here is some pseudocode that explains how to get at the time values. In a future release we will make access a little more convenient.<br/>
<pre>
<br/>// To turn generation of UUIDs and version numbers on.<br/>Db4o.configure().generateUUIDs()<br/>Db4o.configure().generateVersionNumbers()<br/>
<br/>// How to get at time values.<br/>ObjectInfo objectInfo = objectContainer.ext().getObjectInfo(object);<br/>long uuidLongPart = objectInfo.getUUID().getLongPart();<br/>long versionNumber = objectInfo.getVersion();<br/>long creationTimeInMillis = <br/>  TimeStampIdGenerator.idToMilliseconds(uuidLongPart);<br/>long modificationTimeInMillis = <br/>  TimeStampIdGenerator.idToMilliseconds(versionNumber);<br/>
<br/>// Converting Java milliseconds to .NET ticks<br/>long creationTimeInDotnetTicks = <br/>  new j4o.util.Date(creationTimeInMillis).GetTicks();</pre>
<br/>Enjoy the new version!<br/>
<br/>Development for version 5.4 is already well under way. There will be a strong focus on performance enhancements. Recent refactorings are already visible in our <a href="http://www.db4o.com/community/ontheroad/_cvs/">CVS</a>.</div>
</content>
<draft xmlns="http://purl.org/atom-blog/ns#">false</draft>
</entry>
<entry xmlns="http://purl.org/atom/ns#">
<link href="https://www.blogger.com/atom/10758233/114080563104550093" rel="service.edit" title="db4o 5.2 production release" type="application/atom+xml"/>
<author>
<name>Carl Rosenberger</name>
</author>
<issued>2006-02-24T10:26:00-08:00</issued>
<modified>2006-02-24T18:28:43Z</modified>
<created>2006-02-24T18:27:11Z</created>
<link href="http://www.db4o.com/community/blogs/product/mono/2006/02/db4o-52-production-release.html" rel="alternate" title="db4o 5.2 production release" type="text/html"/>
<id>tag:blogger.com,1999:blog-10758233.post-114080563104550093</id>
<title mode="escaped" type="text/html">db4o 5.2 production release</title>
<content type="application/xhtml+xml" xml:base="http://www.db4o.com/community/blogs/product/mono/" xml:space="preserve">
<div xmlns="http://www.w3.org/1999/xhtml">db4o 5.2 is now available as a production release.<br/>
<br/>- We have been working hard on optimizing insert, delete and commit performance. <a href="http://www.db4o.com/downloads/db4oPolePosition.pdf">Our results</a> for running multiple db4o versions against the <a href="http://www.polepos.org/">PolePosition benchmark</a> show excellent improvements. db4o 5.2 is considerably faster than db4o 4.6, even if FlushFileBuffers is turned on with our new release and turned off with the old one.<br/>
<br/>- Quite a lot of work has also been put into the Native Query Optimization Processor to allow it to optimize many more cases. Probably the most commonly used ones are String method calls. Queries like the following will now run optimized:<br/>
<br/>
<pre>IList &lt;Employee&gt; employees = db.Query &lt;Employee&gt;(delegate(Employee e)<br/>{<br/>  return e.FirstName.StartsWith("P");<br/>});</pre>
<br/>- We have also made a new sorting interface available both for Native Queries and for SODA queries. Again we have tried to follow the standards that the programming languages provide as closely as possible. Sorting simply requires passing a standard System.Collections.IComparer.<br/>
<br/>- Our Mono version now comes with PascalCase calling conventions. A legacy version with camelCase method names is also provided with the Mono download.<br/>
<br/>- The tutorial is provided in two new languages: <a href="http://www.db4o.com/about/productinformation/resources/db4o-5.2-tutorial-vb.pdf">Visual Basic</a> and <a href="http://www.db4o.com/japan/">Japanese</a>.<br/>
<br/>Enjoy the new version!<br/>
<br/>Our near-term roadmap <a href="http://forums.db4o.com/forums/21206/ShowPost.aspx#Article5">available here</a> still is valid. There will continue to be a strong focus on further performance improvements, a lot more than you would expect from the "Fast Collections" bullet point on the list.</div>
</content>
<draft xmlns="http://purl.org/atom-blog/ns#">false</draft>
</entry>
<entry xmlns="http://purl.org/atom/ns#">
<link href="https://www.blogger.com/atom/10758233/113888487848833705" rel="service.edit" title="db4o 5.1 dev with full Native Query support for Mono" type="application/atom+xml"/>
<author>
<name>Carl Rosenberger</name>
</author>
<issued>2006-02-02T04:52:00-08:00</issued>
<modified>2006-02-02T12:54:38Z</modified>
<created>2006-02-02T12:54:38Z</created>
<link href="http://www.db4o.com/community/blogs/product/mono/2006/02/db4o-51-dev-with-full-native-query.html" rel="alternate" title="db4o 5.1 dev with full Native Query support for Mono" type="text/html"/>
<id>tag:blogger.com,1999:blog-10758233.post-113888487848833705</id>
<title mode="escaped" type="text/html">db4o 5.1 dev with full Native Query support for Mono</title>
<content type="application/xhtml+xml" xml:base="http://www.db4o.com/community/blogs/product/mono/" xml:space="preserve">
<div xmlns="http://www.w3.org/1999/xhtml">Our 5.1 development build available in the <a href="http://www.db4o.com/community/ontheroad/downloadcenter/">download center area</a> of our website finally also fully enables Native Queries on Mono.<br/>
<br/>It took us quite long to get this out because our code stumbled across a bug in the Mono compiler: It did not understand the acyclic Visitor pattern that we used in the Native Query optimizer. After changing the pattern everything works fine now and all regression tests pass.<br/>
<br/>Enjoy Native Queries!</div>
</content>
<draft xmlns="http://purl.org/atom-blog/ns#">false</draft>
</entry>
<entry xmlns="http://purl.org/atom/ns#">
<link href="https://www.blogger.com/atom/10758233/113075489331982343" rel="service.edit" title="db4o 5.0 dev build featuring optimized native queries" type="application/atom+xml"/>
<author>
<name>Carl Rosenberger</name>
</author>
<issued>2005-10-31T02:34:00-08:00</issued>
<modified>2005-10-31T10:36:29Z</modified>
<created>2005-10-31T10:34:53Z</created>
<link href="http://www.db4o.com/community/blogs/product/mono/2005/10/db4o-50-dev-build-featuring-optimized.html" rel="alternate" title="db4o 5.0 dev build featuring optimized native queries" type="text/html"/>
<id>tag:blogger.com,1999:blog-10758233.post-113075489331982343</id>
<title mode="escaped" type="text/html">db4o 5.0 dev build featuring optimized native queries</title>
<content mode="escaped" type="text/html" xml:base="http://www.db4o.com/community/blogs/product/mono/" xml:space="preserve">A first development build of db4o 5.0 is available for download. It includes a first optimized implementation of native queries.&lt;br /&gt;&lt;br /&gt;Native queries provide the simplest syntax possible to express code that is to be run against all instances of a class (an extent) from within a query. db4o analyzes .NET IL code or Java byte code of native query expressions and runs queries with maximum performance against indexes and without instantiating the actual objects of the extent.&lt;br /&gt;&lt;br /&gt;The following syntax example of a native query demonstrates type safety and calling properties / getter methods:&lt;br /&gt;&lt;br /&gt;C#&lt;br /&gt;------------&lt;br /&gt;&lt;pre&gt;IList &amp;lt;Cat&amp;gt; cats = db.Query &amp;lt;Cat&amp;gt; (delegate (Cat cat) {&lt;br /&gt;    return cat.Father.Father.FirstName == "Occam"&lt;br /&gt;        || cat.Father.FirstName == "Occam"&lt;br /&gt;        &amp;&amp; cat.Age &amp;gt; 3;&lt;br /&gt;});&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Java&lt;br /&gt;------------&lt;br /&gt;&lt;pre&gt;List &amp;lt;Cat&amp;gt; cats = db.query(new Predicate &amp;lt;Cat&amp;gt;() {&lt;br /&gt;    public boolean match(Cat cat) {&lt;br /&gt;        return cat.getFather().getFather().getFirstName().equals("Occam")&lt;br /&gt;            || cat.getFather().getFirstName().equals("Occam")&lt;br /&gt;            &amp;&amp; cat.getAge() &amp;gt; 3;&lt;br /&gt;    }&lt;br /&gt;});&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;At this point in time the db4o native query optimization processor already "understands" most queries that could have also been expressed with the SODA API, but it is not perfect yet.&lt;br /&gt;&lt;br /&gt;It will be an ongoing task to teach the native query optimizer more and more C# and Java syntax so it will eventually provide the maximum performance possible for any querying code.&lt;br /&gt;&lt;br /&gt;Our first optimizer implementations employ the third-party libraries Cecil (.NET) and BLOAT (Java). Many thanks to the maintainers!</content>
<draft xmlns="http://purl.org/atom-blog/ns#">false</draft>
</entry>
<entry xmlns="http://purl.org/atom/ns#">
<link href="https://www.blogger.com/atom/10758233/112889303309354422" rel="service.edit" title="db4o 4.6 production release and 5.0 M2 available" type="application/atom+xml"/>
<author>
<name>Eric Falsken</name>
</author>
<issued>2005-10-09T14:23:00-07:00</issued>
<modified>2005-10-09T21:23:53Z</modified>
<created>2005-10-09T21:23:53Z</created>
<link href="http://www.db4o.com/community/blogs/product/mono/2005/10/db4o-46-production-release-and-50-m2.html" rel="alternate" title="db4o 4.6 production release and 5.0 M2 available" type="text/html"/>
<id>tag:blogger.com,1999:blog-10758233.post-112889303309354422</id>
<title mode="escaped" type="text/html">db4o 4.6 production release and 5.0 M2 available</title>
<content type="application/xhtml+xml" xml:base="http://www.db4o.com/community/blogs/product/mono/" xml:space="preserve">
<div xmlns="http://www.w3.org/1999/xhtml">
<p>Version 4.6 is now production-ready. Download it now to take advantage of some of these new features:</p>
<ul>
<li>ObjectSet (the object returned by db4o queries) now implements System.Collections.IListThis makes result processing much nicer by using a For-Each loop.</li>
<li>The query processor was considerably tuned. Most users should see an improvement in query execution speed when using indexing and deep object graphs.</li>
</ul>
<p>On the bleeding edge, our engineers have been hard at work on the 5.0 Milestone 2 release. If you are using the M1 release, or are using .NET 2.0, please upgrade as soon as possible. Many bugs were fixed and performance is much-improved.</p>
</div>
</content>
<draft xmlns="http://purl.org/atom-blog/ns#">false</draft>
</entry>
<entry xmlns="http://purl.org/atom/ns#">
<link href="https://www.blogger.com/atom/10758233/112311527176020328" rel="service.edit" title="db4o 4.6 dev and 5.0 M1 - as native as possible" type="application/atom+xml"/>
<author>
<name>Carl Rosenberger</name>
</author>
<issued>2005-08-03T17:27:00-07:00</issued>
<modified>2005-08-04T00:27:51Z</modified>
<created>2005-08-04T00:27:51Z</created>
<link href="http://www.db4o.com/community/blogs/product/mono/2005/08/db4o-46-dev-and-50-m1-as-native-as.html" rel="alternate" title="db4o 4.6 dev and 5.0 M1 - as native as possible" type="text/html"/>
<id>tag:blogger.com,1999:blog-10758233.post-112311527176020328</id>
<title mode="escaped" type="text/html">db4o 4.6 dev and 5.0 M1 - as native as possible</title>
<content type="application/xhtml+xml" xml:base="http://www.db4o.com/community/blogs/product/mono/" xml:space="preserve">
<div xmlns="http://www.w3.org/1999/xhtml">Our 4.6 development release and our 5.0 M1 sneak preview are now available on the <a href="http://www.db4o.com/community/ontheroad/downloadcenter/">download center page</a> of the <a href="http://www.db4o.com">db4o website</a>.<br/>
<br/>Both releases show one major goal of db4o very well:<br/>We want db4o to be as native as possible, perfectly object-oriented, an ideal match for the concepts of the programming language that you are using.<br/>
<br/>With db4o you do not need to work against proprietary features that we produce. All concepts that db4o supplies for working against a database are concepts of your Java/C# programming language and you are very likely to be using them already:<br/>(1) Class schemas are good persistence schemas.<br/>(2) Collections work great as Query resultsets.<br/>(3) Java and C# are ideal languages to express queries.<br/>
<br/>db4o has been very good at (1) for a long time, here is how the latest builds and upcoming releases improve on (2) and (3):<br/>
<br/>(2) The ObjectSet returned by a query now extends java.util.List, java.util.Iterator and System.Collections.IList.<br/>
<br/>Extending these interfaces, ObjectSet works a lot better as a source for UI controls. You can now use "for each" and you do not even need to refer to the ObjectSet interface from your code, the collections of your programming language will work just as well:<br/>
<br/>
<pre>IList cars = query.Execute();<br/>foreach (Car car in cars){<br/>  car.Drive();<br/>}</pre>
<br/>
<br/>(3) db4o supplies native queries in version 5.0.<br/>
<br/>From a user perspective the concept is straightforward:<br/>db4o behaves as if it would call one single callback method for all stored instances of a class. You implement the callback method in your code and return true, if you want a specific object to be included in the query resultset or false, if the object does not match the criteria that you expect. Here is a simple example:<br/>
<br/>
<pre>IList&lt;cat&gt; cats = objectContainer.Query&lt;cat&gt;(delegate (Cat cat) {<br/>    return cat.Name.Equals("Occam")<br/>         cat.Name.Equals("Zora");<br/>});</pre>
<br/>
<br/>Native queries have the potential to boost your productivity, because they:<br/>- are 100% typesafe<br/>- are 100% compile-time checked<br/>- are 100% refactorable<br/>- allow any complex method call<br/>- obey OO principles<br/>- do not break encapsulation<br/>
<br/>Native queries are perfect Java/C#, you do not have to learn another query language or a special query API. They even work against plain collections, without the presence of a database.<br/>
<br/>The db4o 5.0 sneak preview already provides usable native queries but they do not execute very fast yet, since db4o will indeed instantiate every stored object.<br/>
<br/>For the 5.0 final release we are working on an optimizer that will "understand" the code that you place in the callback method, to operate against database indexes where this is possible, to provide fast query execution, exactly like it is currently available with S.O.D.A. and query-by-example queries.<br/>
<br/>We will soon publish more information about native queries since we believe that they deserve to become an IT standard.</div>
</content>
<draft xmlns="http://purl.org/atom-blog/ns#">false</draft>
</entry>
</feed>

