eXist opensource Xml DB & IKVM

Hi all,

A fellow contributor to rainbow (Jes) loves xml and has introduced me to eXist. Summary below:

eXist is an Open Source native XML database featuring efficient, index-based XPath query processing, extensions for keyword search, XUpdate support and tight integration with existing XML development tools. The database is lightweight, completely written in Java and may be easily deployed in a number of ways, running either as a stand-alone server process, inside a servlet-engine or directly embedded into an application.

Depending on how the database engine has been deployed, eXist offers several interfaces to application developers, including HTTP, XML-RPC, SOAP and WebDAV. Java developers should have a look at the XML:DB API, which provides a common interface to access XML database services.

He is currently using it via soap. For those of you who cannot run a java app on their hosting account, there is a way of having eXist and other java apps run under the .Net runtime (Via IKVM):

What is IKVM.NET?

IKVM.NET is a JVM for Mono and the Microsoft .NET framework.

What do you mean by JVM for .NET?

The goal of IKVM.NET is to be able to run any Java existing application and to allow for as much interoperability between .NET and Java code as is possible.

IKVM.NET consists of several parts:

  • ik.vm.net.dll: The VM runtime and all supporting code. It contains (among other things):
    - Byte Code JIT compiler/verifier: Just-in-time compiles Java Byte Code to CIL.
    - Object model remapping infrastructure: Makes System.Object, System.String and System.Exception appear to Java code as java.lang.Object, java.lang.String and java.lang.Throwable.
    - Managed .NET re-implementations of the native methods in Classpath.
  • classpath.dll: compiled version of GNU Classpath, the Free Software Foundation's implementation of the Java class libraries. Note that Classpath isn't part of IKVM.NET, but it is used by IK.VM.NET
  • ik.vm.jni.dll: Managed C++ assembly that implements the JNI interface. This is an optional part, only required when an application uses it's own native libraries. This will not be required for pure Java applications, this is important because this code will only run on Microsoft's .NET implementation.
  • ikvm.exe: Starter executable, comparable to java.exe
  • ikvmc.exe: Static compiler. Used to compile Classpath classes into a .NET assembly. In the future it will also be possible to compile Java applications and libraries into .NET assemblies.
  • netexp.exe: A tool that generates stub class files from a .NET assembly, so that Java code can be compiled against .NET code. IKVM.NET understands the stubs and replaces the references to the stubs by references to the actual .NET types.
  • awt.dll: Very limited and broken implementation of a few AWT peers. This is a low priority issue for me.

But there is one problem:

eXist throws an exception because of a missing constructor in GNU Classpath's java.io.File class.

The Classpath's URI support is lacking in some areas. So if anyone is great at Java and has some spare time for a project in order to implement it, please see http://www.gnu.org/software/classpath/

Unfortunately my java experience is not very deep which is why I was seeing if someone else was interested in this.

Either way you should check out IKVM and eXist.

If you like eXist you may also want to look at:

http://www.veridicus.com/tummy/programming/xmldb/

XMLDB.NET is an implementation of the XML:DB Core Level 1 specification and exist providers for .NET.  You can download the current version via the links below.

Download

XML:DB (and the EXIST provider).

You can read the README online.

Hope you find the software interesting.

John

No Comments