Note: This is the archive of my old homepage. To continue to the new homepage, go to http://davidtanzer.net

This is the personal homepage of David Tanzer. Here you can find a blog-like collection of articles I write. The RSS newsfeed is available here. You can contact me via email: mail-AT-davidtanzer-DOT-net.

You may use everything I write in this blog (tagged as "Submitted by struppi") except the linked papers and some other parts with explicit exceptions to this license, in whole or in part, without asking as long as you give me credit (like for example: "David Tanzer (http://davidtanzer.net) wrote in his blog: [Some quote from this homepage]").

Installing Cacao and JikesRVM

Before you read on let me tell you that I failed to install JikesRVM on FC5 - just in case you came here because you want some advice how to do this.

I just tried to install 2 free java runtimes on Fedora Core 5 to test them again. The one is cacao, the other one is JikesRVM. I wanted both to work with GNU Classpath 0.91 which I downloaded from the GNU Classpath homepage (that means I don't want the JikesRVM build script do download GNU Classpath).

GNU Classpath needs some other free java compiler like jikes, gcj, ecj, ... to compile, so I downloaded jikes and then classpath and the cacao vm compiled without problems. I installed both with --prefix=/usr/local/freejava so I have all the free runtime stuff in one place. My main Java development environment is still the Reference Implementation (Mustang beta at the moment), and I don't want the free runtimes to interfere with that.

JikesRVM is a little bit more complicated to install, so here's the hard way: First extract the tarball.

cd /usr/local/freejava
tar -xzf [path]/jikesrvm-2.4.4.tar.gz
mv jikesrvm/MMtk jikesrvm/rvm .
rm -rf jikesrvm

Yes, I want a different directory layout than JikesRVM suggests ;)

I didn't get it to work with classpath 0.91 so I'll skip the description of what I tried here. The next step is to set a bunch of environment variables, so here's a snipplet of my /etc/profile:

JAVA_HOME=/usr/java/default
RVM_ROOT=/usr/local/freejava
RVM_HOST_CONFIG=$RVM_ROOT/rvm/config/i686-pc-linux-gnu.mine
RVM_BUILD=$RVM_ROOT/jikesrvm
 
pathmunge $JAVA_HOME/bin
pathmunge /usr/local/freejava/bin after
pathmunge $RVM_ROOT/rvm/bin after
 
export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE INPUTRC JAVA_HOME
export RVM_ROOT RVM_HOST_CONFIG RVM_BUILD

You have to create a host configuration file for your system which was for me as simple as

cp rvm/config/i686-pc-linux-gnu rvm/config/i686-pc-linux-gnu.mine

Then you can start building the rvm. The next step is to set up the build directory with

jconfigure [configuration]

I tried "production" as configuration which should create a fast virtual machine but it takes quite long to build. Another possible configuration would be "prototype" which builds fast but creates a slower VM. At least that's the the theory. Both configurations failed to build with different error messages for me.

"prototype" failed with:

jbuild.interfaceDeclarations: (wrote interface) 14 s
jbuild.linkImage: (bootimage cleaned) (primordial class names written) (built utility_kludge.jar) Error occurred during initialization of VM
java.lang.NoSuchMethodError: java.util.LinkedHashMap.getEntry(Ljava/lang/Object;)Ljava/util/HashMap$Entry;
at java.util.LinkedHashMap.get(LinkedHashMap.java:281)
at java.io.ExpiringCache.entryFor(ExpiringCache.java:83)
at java.io.ExpiringCache.get(ExpiringCache.java:58)
at java.io.UnixFileSystem.canonicalize(UnixFileSystem.java:137)
at java.io.File.getCanonicalPath(File.java:559)
at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1697)
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1668)
at java.lang.Runtime.loadLibrary0(Runtime.java:821)
at java.lang.System.loadLibrary(System.java:1030)
at java.lang.System.initializeSystemClass(System.java:1083)
make: *** [bootimage] Error 1

"production" failed with:

jbuild.compile: (compiling mmtk... mmtk compiled) (compiling classes... classes compiled) (building jksvm.jar... jksvm.jar built) (building jksvmsrc.jar... jksvmsrc.jar built) 252 s
jbuild.interfaceDeclarations: Exception in thread "main" java.lang.NoClassDefFoundError: com.ibm.JikesRVM.VM_RegisterConstants
at com.ibm.JikesRVM.classloader.VM_BootstrapClassLoader.loadVMClass(VM_BootstrapClassLoader.java:124)
at com.ibm.JikesRVM.classloader.VM_TypeReference.resolve(VM_TypeReference.java:541)
at com.ibm.JikesRVM.classloader.VM_Class.(VM_Class.java:854)
at com.ibm.JikesRVM.classloader.VM_ClassLoader.defineClassInternal(VM_ClassLoader.java:244)
at com.ibm.JikesRVM.classloader.VM_BootstrapClassLoader.loadVMClass(VM_BootstrapClassLoader.java:111)
at com.ibm.JikesRVM.classloader.VM_TypeReference.resolve(VM_TypeReference.java:541)
at com.ibm.JikesRVM.classloader.VM_Class.(VM_Class.java:854)
at com.ibm.JikesRVM.classloader.VM_ClassLoader.defineClassInternal(VM_ClassLoader.java:244)
at com.ibm.JikesRVM.classloader.VM_BootstrapClassLoader.loadVMClass(VM_BootstrapClassLoader.java:111)
at com.ibm.JikesRVM.classloader.VM_TypeReference.resolve(VM_TypeReference.java:541)
at com.ibm.JikesRVM.VM_Entrypoints.getMember(VM_Entrypoints.java:304)
at com.ibm.JikesRVM.VM_Entrypoints.getMethod(VM_Entrypoints.java:329)
at com.ibm.JikesRVM.VM_Entrypoints.(VM_Entrypoints.java:19)
at com.ibm.JikesRVM.VM_OutOfLineMachineCode.generateReflectiveMethodInvokerInstructions(VM_OutOfLineMachineCode.java:116)
at com.ibm.JikesRVM.VM_OutOfLineMachineCode.init(VM_OutOfLineMachineCode.java:40)
at com.ibm.JikesRVM.VM.init(VM.java:1309)
at com.ibm.JikesRVM.VM.initForTool(VM.java:67)
at com.ibm.JikesRVM.VM.initForTool(VM.java:54)
at GenerateInterfaceDeclarations.main(GenerateInterfaceDeclarations.java:108)
Caused by: java.lang.UnsupportedClassVersionError: unsupported class file version 50.0
at com.ibm.JikesRVM.classloader.VM_Class.(VM_Class.java:706)
at com.ibm.JikesRVM.classloader.VM_ClassLoader.defineClassInternal(VM_ClassLoader.java:244)
at com.ibm.JikesRVM.classloader.VM_BootstrapClassLoader.loadVMClass(VM_BootstrapClassLoader.java:111)
... 18 more

I'll not investigate any further into this now, maybe later when I find some time to do this. I had no problem installing JikesRVM on Mac OS X Tiger/PPC some months ago.

Patents

Why the patent system is fundamentally flawed:

Gothic 3 Trailer

The development team of the upcoming role playing game Gothic 3 has released a trailer for the E3:

The trailer can be found here.

Agile Requirements

I just found some interesting articles from James Shore about Agile Requirements Management. I'm sure I can use the information from these articles for my work on Agileplan, I'll write about that later here in this blog. Here's the links to the articles and some short summaries:

Update: I strongly suggest to read the articles in the given order. The latter ones are based on the previous articles.

Beyond Story Cards: Agile Requirements Collaboration Describes where story cards come from and what to do with them. It clearly shows the advantages and limitations of the story card approach and identifies the situations where other techniques should be used.

Fit Workflow describes how Fit is used to collaborate on requirements during an iteration of an agile software development project. A test case for an example feature is created step by step to illustrate the process.

A Vision For Fit Another example of how James Shore used Fit when he was training a development team. The key conclusions from this article are: "Done right, Fit fades into the background" and "Fit facilitates thinking about the domain".

How I Use Fit Describes how to use Fit on a day-to-day basis.

Apache Harmony weekly summaries

I have now added the weekly harmony-dev mailing list summaries "This week on harmony-dev" (which I don't write anymore) to this site. You can find them in the Archive - Section.

Interesting Benchmarks

This page has some interesting benchmarks for Java, especially the Linpack Benchmark which is a measure of a computer’s floating-point rate of execution. It is determined by running a computer program that solves a dense system of linear equations. It is interesting that both Sun JDK and IBM JDK are faster than GCC and only a little bit slower than better C compilers. C#/.NET is even a little faster than Sun JDK 1.5.0. C#/Mono and Java/JikesRVM are the fastest of the free runtimes but they can't keep up to the commercial ones.

My first JSF view

After some struggle with the Java Server Faces I now rendered my first view (which only prints a headline). To learn JSF i used the tutorial in the tutorial from the ix - Magazine and the short example from the book Java Server Faces in Action. I created a simple JSF page:

FeatureCard.jsp


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<f:view>
  <html>
    <head>
      <title>Feature Card...</title>
    </head>
    <body>
      <h1>Feature Card</h1>
    </body>
  </html>
</f:view>

I also wrote the web.xml and faces-config.xml like it was described in the tutorials. The web.xml only contains the servlet mapping for the FacesServlet, the url pattern "/faces/*" is mapped to the FacesServlet.

Sony Ericcson z520i: How can i deactivate the camera key?

I have a Sony Ericcson z520i for some time now and it's a cool phone. The only annoying thing is that you can't lock the camera key of the phone, which is located at the side of the phone. Even if you close the phone the side keys are active, and when you press the camera key for some seconds the phone goes into camera mode. When you then press the camera key again it takes a picture. This means i sometimes hear the sound of the phone taking a picture, and this really s****.

A fresh start

So this is the fresh start of my personal homepage. I now own the domain davidtanzer.net (which is pretty cool) and this site will be the new version of deltalabs.at too. It will take some time until I migrate deltalabs to this site too, but I'll not migrate all of the content. Also I'm not yet sure what I will exactly post here, but I'm sure I'll find something.