About this blog

This blog features updates, opinions, and technical notes from Caucho engineers about Caucho products, the enterprise Java industry, and PHP.
Caucho Technology is the creator of the Resin Application Server and the Quercus PHP in Java engine. A leader in Java performance since 1998, Caucho is a Sun JavaEE licensee with over 9000 customers worldwide.

The May Netcraft web server survey shows Resin is the top Java web server! Last month, Jetty managed to get on top for a moment to much fanfare, but if you look back over the pastNetcraftsurveys, Resin consistently tops Jetty and now it even tops every other Java web server.

We’re very proud of this achievement, but I’d like to note exactly what this means: It should mean nothing to you in terms of which technology you’re choosing for your project. However if you find that Resin fits the bill, you can be assured that you’ve got a large community of users who know and use Resin.

Matt White from RabbitStats wrote me after seeing my post asking for Resin/Quercus/Hessian users to let us know about their deployment. RabbitStats is a Second Life monitoring and reporting service running on Resin. Here’s a couple quotes from Matt:

RabbitStats is 100% Java, and I wouldn’t dream of using anything other
than Resin to power it… Having a free version that’s a good way to start and then graduate
into the commercial version cleanly has worked really well for us.

Thanks for writing, Matt! If there are other open source Caucho users who would like to be featured here, feel free to write or comment!

JavaOne wrapped up last week and I think it was very successful for Caucho. We had a few hundred people drop by the booth to learn about Resin, Quercus, and Hessian. A number of users of all of these technologies dropped by as well to let us know how we’re doing. Thanks to everyone who stopped in!

If you’re using Resin, Quercus, or Hessian in a project, let us know! We’re really interested in how you’re using the products, even if you haven’t purchased a professional license or support. All of our products have an open source component and for a lot of projects, that’s all you need.

I also did a couple of interviews during the show, one for Java Posse, which will hopefully show up in a podcast soon and one with Tony Baer of onStrategies, who blogged about Quercus. Look for Caucho to show up in the news more and more over the coming weeks. We’ve got a lot going on…

Have you dropped by our booth at JavaOne yet? Today’s your last chance! We’re at booth #518, just to the left of the Parasoft and Ericsson booths as you walk in. You can still win a set of noise canceling headphones, get a free evaluation license, play our interactive Sudoku game, talk to Caucho engineers, and more!

Last week I was working on our demo for JavaOne. It’s pretty much done, except for one small feature and I’m pretty excited about it. It uses our new HMTP (Hessian Messaging Transfer Protocol) to send messages back and forth between client and server. The demo itself is a Sudoku game where you play against another player on the same board. It requires both RPC style communication and messaging, both of which are natively supported by HMTP. Anyway, I’ll give a much more coherent explanation soon as I’m writing up a fact sheet and animation to show message flow today. We might be able to bring up the game live this week, so stay tuned for a link…

The demo is implemented in Flex 3 (open source :-)) using the AS3 implementation of Hessian and HMTP. I want to send a shout out to Riccardo Cohen who has been working with Hessian Flash. He was nice enough to write up a few tutorials to show how to use it with entity beans. Check it out here: Riccardo Cohen’s tutorials. Thanks, Riccardo!

Just a quick update to let everyone what’s going on this week. I’ve got three big projects that I’ve been working on this week. First up is the newsletter. We trying to get a monthly newsletter going to let people know about success stories, new features in Resin, upcoming events, and general Caucho news. That’s cool and I like letting everyone know what’s going on, but the fun part has been writing the newsletter sending app. I’ve been writing it in Quercus and using some of Resin’s lesser known facilities like scheduled tasks and the authenticator framework. It’s pretty cool how these two features come together and make PHP apps so much easier to write. When some time comes around (i.e. after May and JavaOne), I’ll try to write up a description of how I put all these things together.

Hessian messaging (codenamed HMPP/Hemp) is getting pretty exciting. It’s inspired by XMPP and basically allows creating truly rich client side applications. Actually, it’s even more than that. It combines RPC and messaging into one elegant protocol which lets you do pub/sub and a bunch of other cool things. It’s still preliminary now, but I’m writing what should be a really cool demo for JavaOne. Make sure you stop by the booth to check it out!

A couple of months ago, I talked with the guys from Terracotta at the Silicon Valley JUG. Since then, we’ve been working out how to make sure Resin and Terracotta work together. The basic distributed shared objects work fine, pretty much out of the box. Earlier this week, I was also able to get Terracotta’s distributed sessions going, but then tried it again and it stopped working. Don’t you hate it when that happens? It seems there’s an issue with classloader naming. Anyway, we expect to get it worked out soon so Terracotta and Caucho customers will hopefully get to use the full features of both companies’ software.

Thanks to everyone who showed up for my Quercus presentation at the Java Meetup on Monday! I think it went pretty well and I was able to give a lot of examples. Sasa, the organizer and a partner at Marakana, provided us with a great set up. The guest list for the event filled up really quickly so Sasa also suggested that if enough people are interested, he might be able to get a bigger venue for a repeat event. Please let me know if you’re interested and I’ll add your name to the list.

Ok, ok… so it’s been a while since I had a chance to blog, but I have two good excuses. The week before last, I was at AjaxWorld, giving a presentation and meeting a bunch of interesting people. The conference was very fruitful, but they didn’t have wireless! :-/ Anyway, thanks to everyone who came out to my presentation (all 10 of you ;-)), even though it was 5:20pm after a day that started with 7:00am keynote.

Last week, I was sick and a bit dazed, so I figured it was a good time not to blog a fever-inspired rant.

This week, I’ll be at the MuleCon in San Francisco, checking out the cool things that people are doing with Mule. One of the fun things we did was to integrate Resin IoC with Mule so you can pull down objects configured in Resin IoC natively in your Mule configuration. If you’re going to be at MuleCon, let me know and we can meet up.

Next Monday is our Quercus tutorial at the Java Meetup group in San Francisco. The guest list is full! I’m excited, but if for some reason you can’t make it or didn’t sign up in time, I’ll be posting the presentation here afterwards.

Anyway, today I bring you a nice little gem from Scott on the Resin-Interest mailing list (you are signed up for it, aren’t you?). Someone asked how to prepare their Resin installation for “prime time” and Scott offered up these very cool suggestions:

The default <dependency-check-interval> should be raised to a minimum of 60s or even larger.

If you haven’t already profiled your application, remember that Resin’s /resin-admin has a profile tab. It’s surprisingly
lightweight, so it’s possible to use even on a production machine. It’s always a good idea to be aware of where your application is
spending its time.

Take a few thread dumps using the /resin-admin, so you get an idea of the baseline behavior. If something does go wrong, you’ll want to be able to distinguish the normal behavior from the unusual. It’ll also get you in the habit of taking thread dumps, for a freeze or CPU spike.

If you do these and have a support question, we’ll be in a much better position to help you out. In fact, these steps will be helpful in getting to know your system even better. If anyone else has suggestions on how to prepare a system for prime time, please comment!

I’m working on fixing some standing bugs on the Flash and Flex versions of Hessian this week. I’m pleasantly surprised at how many people are interested in this project and happy to get bug reports. People are comparing this project to BlazeDS, which I frankly haven’t had time to look at, but it seems that some people prefer Hessian.

Here’s a quote from user Koen Serry:

Since Hessian/Burlap are really a better alternative (on a flex client) for connecting to the backend than BlazeDS (which includes IMHO way too much dependencies as well as being not very developer friendly (eg. config file over convention)). Furthermore, hessian already proved itself on the numerous java fat clients.

If you’re using Hessian Flash or Flex, please let me know! I’m interested in seeing your applications, getting bug reports, or requests for certain kinds of documentation. Koen suggested a mail application example and I’d be eager to hear any other ideas people have.