I moved the EVE-Central API service to a new framework to improve performance and try new web development tools. Except for a few growing pains, the stack has been reliable and performant. The bits and pieces that made this possible:

  • Scala - A static typed JVM-targeted language with a very good mix of functional programming. Often compared to OCaml and F#, where it shares a lot of similarity. The JVM platform gives a lot of run time performance and a huge software library, but the Java language is hobbled by years of mismanagement (see C# for something not hobbled by Sun). Enter Scala - fast, type safe, expressive, and generally fun to work in. (I still love Python too, for those of you keeping score).

  • Akka - an Actor system framework, with lots of inspiration taken from Erlang (great ideas, mediocre execution). Its a message-passing system built for the JVM. While we are still using Akka 1.3, the new clustering capabilities of Akka 2+ are on my radar.

  • Spray-server and Spray-can - Spray server is a Scala and Akka library for building web services, in a clean and no-nonsense fashion. Spray-can is the HTTP server component, avoiding the use of a traditional Java servlet container for managing connections. If you’re looking for a way to make RESTful (and non-RESTful) webservices in a high performance environment, give Spray a look. The community support is great. Note that this is just the

old API. No new (published) API calls are available yet, but with the speed gained by building a proper framework around some of the core technology of EVE marketing aggregating, and the inherent testability of the environment, new features should be significantly easier to build. Also, the EVE-Central user front end remains on the old Python+CherryPy stack for the time being, as the window dressing is being worked on.