Running Tomcat on N800

I’ve been doing some N800 hacking at work recently and have been toying with getting various programming environments going. Including the one I know best: serverside Java.

To get Java on the N800, you will need jamvm. Some packages for that are provided here: http://www.internettablettalk.com/forums/showthread.php?t=2896. The packages are unsupported and not available elsewhere. Also there’s some bugs (which is why it’s not in official maemo repositories yet). The bugs mainly concern AWT and swing stuff which I don’t really care about anyway.

To install (as root):

$ dpkg -i jamvm_1.4.3-1_armel.deb
$ dpkg -i classpath_0.91-1_armel.deb
$ dpkg -i jikes_1.22-1_armel.deb
$ export PATH=/usr/local/bin:$PATH
$ export CLASSPATH=/usr/local/classpath/share/classpath/glibj.zip:.

The last two commands add jamvm and jikes to the path and add the gnu classpath to the classpath.

Now you can run tomcat on the N800:

  • download tomcat 5.0.30beta from tomcat.apache.org. This is the last version that does not require java 1.5.
  • upload it to N800
  • download this zip file with configuration for tomcat with jamvm
  • copy provided server.xml to the tomcat conf directory. This configures tomcat to be a bit more lightweight than out of the box. It also disables mbeans which seem to require classes not in the gnu classpath. You can reduce footprint further by stripping stuff from the webapps dir (e.g. documentation + examples)
  • use provided jamvmtomcat.sh script to start tomcat (you’ll need to adjust the paths inside). I don’t have a stop script but should be trivial to add.
  • On my N800, startup time after first launch is 3-4 minutes and most of the servlet and jsp examples in the default tomcat both work correctly and the whole thing is quite responsive. The Jamvm process takes about 26MB with tomcat running. That’s all quite impressive considering that jamvm does not include a JIT.

    UPDATE. I’ve continued experimenting and got the startup time down to 2 minutes now. Basically I removed all webapps except the balancer app and my own war file. Some more experimenting with jamvm and other java stuff has learned me that the main performance problem is IO while loading classes. Once that is done, the interpreter is quite fast and usable.

Towards Effective Smart Space Application Development: Impediments and Research Challenges

I submitted a nice position paper with two of my colleagues at Nokia to the CMPPC’07 (Common Models and Patterns for Pervasive Computing) Workshop, at Pervasive 2007 in Toronto next month.

Abstract:

State-of-the-art research and existing commercial off-the-shelf solutions provide several technologies and methods for building Smart spaces. However, developing applications on top of such systems is quite a complex task due to several impediments and limitations of available solutions. This paper provides an overview of such impediments and outlines what are the main research challenges that still need to be solved in order to enable effective development of applications and systems that fully exploit the capabilities of state-of-the-art technologies and methodologies. The paper also outlines a few specific issues and impediments that we, at the Nokia Research Center, faced in this field so far. It also sheds some light on how we are going to tackle some of the mentioned issues in the future.

Full details are on my publication site and you can download the pdf from there as well.

Variability Management and Compositional SPL Development

I submitted a nice position paper to the variability management workshop here in Helsinki next month.

Abstract:

This position paper reflects on the implications for variability management related practices in SPL development when adopting a compositional style of development. We observe that large scale software development is increasingly conducted in a decentralized fashion and on a global scale with little or no central coordination. However, much of the current SPL and variability practices seem to have strong focus on centrally maintained artifacts such as feature and architecture models. We conclude that in principle it should be possible to decentralize these practices and identify a number of related research challenges that we intend to follow up on in future research.

Full details are on my publication site and you can download the pdf from there as well.

Songbird

As you may know, I currently use iTunes. And despite it’s quirks which include difficult to migrate library and the occasional instability it’s a very nice application overall and I’ve been reasonably happy with it for more than a year now (ever since I bought my ipod).

Well, there’s a great new music player called songbird. It’s been under development for little more than a year now. The development team includes some former winamp programmers. I was a great fan of winamp until I switched to itunes (shortly after this guy left AOL/winamp). Up until now the songbird development builds were interesting but not really worth using (I played with 0.1 a bit and it was unusable). That is starting to change though and how! It’s still a developer preview so don’t bother if you don’t have the nerve to use that kind of stuff. But if you do you are in for some treats. If you don’t, there’s a cool flash demo on the website. And yes, so far it more or less works as advertised (to my surprise, I was expecting performance/lag issues).

So, songbird is well on track to replace my iTunes setup, just not right now, maybe (I’m tempted though). I just installed it and it imported my itunes library and it’s currently playing my music just fine (important for a music player). On top of that the user interface looks very nice and seems very usable and responsive. Since it is based on the mozilla runtime (i.e. the same toolkit that Firefox and Thunderbird use), it inherits a lot of nice features such as extensions and themes (or feathers in the songbird lingo). The itunes library importer is one of the extensions. Another one that I have not yet tried is the ipod extension (synchronization!), that’s two important features for an ipod owner: Apple should get worried, busy or both.

The default feathers of both the website and songbird are very nice and stylish. The little birdy is sort of cute and the style sort of resembles the Jip & Janneke theme many Dutch people should at least be familiar with. Except this one has a weird puff coming out of its ass :-).

In addition to the usual gizmos, it integrates a webbrowser. This is used to integrate the internet into songbird properly. I.e. there’s a whole bunch of alternative music stores integrated. And they just work. It’s like magic. I type frank black in the search box, and a website pops up with some frank black tracks. Then more magic, a playlist appears below with the tracks. Ok I click play. And WTF! it starts playing more or less instantly. Without a hitch. That’s just super cool. There’s buttons to add the track to my library and to download. Apparently it supports podcasts in a similar way. This is the way internet radio was supposed to work years ago and still doesn’t work in any other media player I’ve ever tried. The search box uses search plugins just like slashdot. The default one is called the hype machine (which I’d never heard of before).

I guess the ‘secret’ behind songbird is its ability to extract links to music files from web pages and automagically construct a playlist for whatever web page you are viewing. There’s no reason why a normal browser couldn’t do that although most lack the features to do something useful with a music file other than handing it to a media player. Songbird does have that ability since it is primarily a music player that just happens to embed the mozilla browser. This concept works extremely well for any website that has downloadable tracks, pod casts or links to streaming audio (e.g. shoutcast).

I’m sure it has much more to offer and I’ll be playing with it a lot over the next week. As I said, this is a developer preview so wait for the 1.0 later this year if you can’t handle that. I’m not sure if I’ll wait that long though.