Before I start prototyping some of the ideas I’ve been kicking around, I need to decide which tools I’ll be working with, making choices that’ll haunt me for months to come, as usual.
Language
At SafePage, we started with the assumption of using Java because that’s what everyone had most experience with. Eclipse was also a hard addiction to break from. I tried to get the team to play with Groovy but, in the end, Java was it. This time, I’ll be the only coder for a while so I can be flexible.
At this point, I am leaning heavily toward PHP because that’s what Aptana Cloud supports. Although I’ve been using Java since the first beta, I think I can write most of the front-end stuff in PHP and rest in server-side JavaScript using Jaxer, leaving Java for key web services and bots only. I am pretty sure that early windfalls from using Aptana Cloud will make up for late growing pains due to PHP.
Ajax Framework
At SafePage, we started with jQuery + Ext on my recommendation but discarded Ext within first few weeks because engineers found Ext awkward to use. Much later, we started missing sophisticated layout and table support both Ext and YUI offers.
This time, I am going to go with jQuery 1.3 (released today!) for most tasks and use Ext when complex widgets are needed since I personally had no problem using Ext. Quality and selection of Ext widgets is hard to beat but it’s too heavy for mundane Ajax stuff and style-conflict will create problems later unless Ext style is embraced fully which I am not willing to do. YUI style is cleaner but, egads, verbose YUI API really rubs against my simpletonian vanity. Re Dojo, I’ll just say it’s too liberal for my taste.
I like the choices John Resig made with both design and implementation so far although quality of most jQuery plugins and widgets are too brittle and selection of widgets too skimpy despite the size of jQuery developer community. I think it’ll take another year before jQuery UI widgets mature in substance, style, and selection. Note that both jQuery and Ext can be used in AIR apps which is going to be important later.
Don, if you’re happy writing Java, you may find Google Web Toolkit a good way to do web dev:
http://code.google.com/webtoolkit/
It does a nice job of bridging the server-side and client-side objects smoothly.
Kevin, we tried using it but ran into integration issues (I haven’t confirmed it myself but I trust the engineer who worked on it) while trying to graft it onto existing code. I will take a look at it again later to see if those issues have eased.
BTW, I am unhappy coding or writing in any language. It’s just my nature. ;-p
hey don, yeah we use jquery as well and are very pleased. it is so clean and is continually maturing. cheers, py
Nice brief analysis of the technology choices… I’m curious, if you’re thinking of using Jaxer for the back end, why would you use PHP at all rather than do everything in JavaScript (and DHTML) end to end?
Peter, Yo! How is iWidgets doing in the shitstorm?
Uri, Jaxer is handy for scraping but no third party libraries to speak of so one has to build everything in JavaScript or callout to web services which obviously won’t work at all levels.
BTW, I am still not settled on using PHP yet. All the bleeping choices (framework, template engine, etc) I have to make based on either outdated or half-baked info/hype/hate out there is giving me unnecessary headache.
About Ext – I was impressed by the amount of widgets it offered … until I saw the underlying mess it creates. That really turned me off.
About the server side language – have you considered using Ruby? While I don’t have exp. in RoR I really liked working with Ruby (for a very short period 😦 )
Hi Valeri. Yeah, Ext should be used with a ten-foot pole. Not everything glitzy is fun to open up and play with.
Re Ruby, I like the language but, unlike PHP which is just a tool, it’s more of a religion meaning one has to dive into it fully to get the most use out of it. Also, I had difficulty ‘seeing’ the flow of control with all the fancy gears hidden behind overly open language syntax. I consider Java’s ‘annotation attributes’ a cursed blessing but it at least sits on the side of code where Ruby is more of a wild open house party IMHO.