So just what is JBossEverywhere then? If you've seen the video of my keynote then it should be clear. However, I want to go into more details here just for the avoidance of doubt.


What it is not is simply a way for writing thin client applications that access various JBoss components or services that are running elsewhere. It isn't a new framework for writing HTML5, JavaScript, GWT or native web applications. It may utilise these technologies to achieve a goal, but that goal is so much more.


As I said in the presentation, the underlying theme behind JBossEverywhere is ubiquitous computing. Now there is no way I can take credit for that concept: ubiquitous computing has been around for many years; I remember it being discussed by all of the big middleware and hardware vendors at the turn of the century, as the next big wave. Some people may be forgiven for thinking that it simply didn't turn out that way, but they'd be wrong. You only have to look around you to see that it happened (is continuing to happen every day.) We just take it for granted that technology is an implicit part of everything we do today, yet you only have to turn back the clock a decade to see how different it was. And go back 3 decades, as I showed in the talk, and you could be walking into an episode of the Twilight Zone!


But what has this impact of hardware got to do with anything I want to discuss here? Put quite simply, these devices are an area where middleware, and JBoss in particular, can play an important role. Just as the new wave of personal computers were thought of as constrained 30 years ago and often looked on with distain by those in the workstation and mainframe arenas, yet now they power a lot of enterprise computing, so too will go many of the devices we see around us today as being of limited utility.


Your mobile phone already has capabilities that would put to shame PCs of the 1990's. They have also quickly become critical to our day to day lives, moving from supporting basic games to complex B2B applications. These applications need enterprise capabilities, such as messaging and transactions. In fact I've believed this for over a decade, having made Arjuna run on an HP Jornada 720 in 2000, with the intent to take this further had HP decided not to junk Bluestone only months later! A lot of the work I've done in intervening years on extended transactions and end-to-end transactions has also been an offshoot of these thoughts.


But it's not just mobile phones. Due to the economics of scale, it's not far fetched to assume that sooner than you think your washing machine, car or even coffee pot, will have more raw processing power than workstations or laptops of years gone by. Being able to tap into these processors is something that will happen, security considerations not withstanding. In fact as I've said before, this is really where I think cloud will go (return). At the moment cloud, or at least public cloud, is little more than offshoring; useful yes, but not taking things far enough. The true cloud is the processors around us, and being able to use that cloud offers many advantages and opportunities. And once again, middleware will be useful there.


So JBossEverywhere is about defining middleware components and frameworks that can be used on these various devices. We should not expect people to reinvent the wheel, e.g., transactions, when there's a perfectly good wheel already out there. It'll mean developing new projects and pushing the envelope, but that's what we're good at. New frameworks that will combine adaptability, configurability, monitoring etc. to allow them dynamically cope with changing deployment environments so that the application doesn't have to (in many cases.)


I suppose another way of stating the goals of JBosEverywhere is Ubiquitous Middleware, or specifically Ubiquitous JBoss!