A couple weeks ago Aptana released "Jaxer: The Ajax Server" as with most new products (I am a technology junky) I was interested to find things I could do with it. So I started to dig into it. The product installed when I upgraded to the latest version of the Aptana IDE, sweet server installation and running is usually hard. Being new, there wasn't to much documentation but more that I expected and I was able to play with the product quite easily.
When I look at any new product I usually evaluate along the following items:
- Problems I have
- Things I can do with it
- Things I want to do with it
But, before I can even start with the list above, I need to figure the list below first.
- What does it do?
- How does it work?
- Where does it fit in the application development stack?
- What unique features does it have?
- What are its limitations?
I am no expert in the product, I have just begun looking into it but you need to start somewhere. So let me run through my findings thus far.
What does it do?
How does it work?
Where does it fit in the application development stack?
This is a tricky one... Jaxer has many features of a web framework, but I am not sure if it is a replacement for things like; php, ruby, or Java frameworks... YET. The APIs are fairly robust but not as completed as the frameworks previously mentioned. Jaxer though can be integrated with Tomcat, Apache (mod_jaxer.so) so it can also "front-end" current infrastructure as well.
What unique features does it have?
What are it's limitation, these are the things I see?
1.) The parsing of the HTML on the server will be problematic for sites that get heavy traffic. No matter how fast Mozilla is at parsing; do it for lots of pages will be slower than not parsing them. But hardware is cheap, put it on the Amazon EC2.
2.) You still need to have a web framework for some applications. Jaxer does have quite a few features, but it is still not as complete others.
What problems do I have?
I'll keep this centered around software and in particular web development. This isn't a bitch session, but the role of software is to solve problems, both technical and business. So I need to put together a list of problems I would like to solve:
- Web application security. Remember when perl.com changed into porn.com or listen to any talk by Douglas Crockford.
- Mashups, being able to easily pull together multiple sets of data and present them easily.
- My iPhone Problem. Even though the iPhone has "this part of the web and that part of the web", it's still a pain in the ass to view the web in the iPhone. I am always zooming and panning to view the content. It really sucks, especially if you have to laterally pan to read the content.
- Accessiblity - Think my iPhone problem is bad. Imagine having to zoom and pan every page you visit.
- Simplify development, the easier it is to create applications the better for everyone.
- Web application performance - As web pages become more rich the slower they become.
- Role-based access to content. Not so much of an issue with consumer sites but for enterprise developers people need to have access to only certain content, fields, and modifications.
- Personalized presentation, storing the state of an application when a user is finished and representing it to them the next time they accesses the application is an important part of any application. Ajax brings desktop richness but doesn't bring the desktop capabilities yet.
- Symentic Web - Not everyones think about it about it but it will be an important going forward. By the way, I am working on the Beta of Web 3.0
- Browser compatibility, old browsers - new browser, everyones different and coding around their idiosyncrasies is a pain to deal with on the client and results in more code and slower performance.
- Multi-device presentation - Today people access the web from many different devices; computer, iPhone, mobile device and each one has a different resolution, aspect ratio and capabilities.
- Offline access.
Well that's all I have off the top of my head. If you think of more or disagree, add a comment. I actually think that this pre-processing of the HTML like Jaxer does can help solve many of the issues I outlined. This is step one. Be able to solve the problem. There will always be more than one solution to a problem so the second question is "I would want to solve them this way". I think I would. The pre-processing of the HTML and giving the DOM to the developer would make things much easier.
Things I can do with it?
Things I want to do with?
Jaxer would be a good way to solve many of the problems above. I need to dig more into but at first glance Jaxer has a unique place in the application development stack, people will definitely take advantage of it in the upcoming months.