Tuesday, 30 November 2010

Rich Internet Application & GWT : Angel of Java Programmers

We all are hearing the buzz about Rich Internet Applications (RIA) about a year or so. But, what the heck is that beast? You may ask. For the user's perspective, it's the desktop like experience delivered over web. Yes, you feel like you are using a real desktop application (well, at least sort of). The richness of desktop controls is transferred to web.

How RIA is build? Arise another question. These all started with that amazing kid called AJAX (Asynchronous JavaScript And XML). Then more and more tools become available, like Java FX, Adobe Air, Adobe Flex (and Adobe Flash), Microsoft Silverlight. But these tools, though it gives rapid and organized web application development, required some kind of plug-ins to be installed on your browser. There is the importance of AJAX based RIAs, because JavaScript is enabled in almost all browsers in use today.

However, It's not a fool proof solution, because there are people who switch off JavaScript for some reason, like me ;-).  But it's still far more effective. To develop a RIA with JavaScript we can use jQuery, Moo-tools, YUI, ExtJS etc., frameworks, if you are a JavaScript ninja . Only because I'm not, but still eager to try my hand on RIA, I looked for another solution. There is GWT.

What is GWT? It's Google Web Toolkit. Another amazing product from Google Inc. It let us write RIA in Java (Yes, Java, Sun's Oracle's) Let GWT compiler do the translation of your beautiful Java code into JavaScript, CSS and bootstrap HTML. That said, a little experience in JavaScript, CSS & HTML will not hurt at all.

Where we are heading to? Great question. I'm glad you asked this. As you see this far this isn't a tutorial or intro (it's too late..) of RIA. I'm here to show you some snaps of my GWT based project done at January 2010. Due to some reason, I forget to post about it.

Why I choose GWT? Sites I love, use GWT, Google Wave, Gmail, new Orkut

Here it's, It uses, GWT, Hibernate JPA, Ext GWT etc.,

Update: Later, I thought I haven't given anything useful. So here it's.
Even though project look(and is) simple, it's a considerable learning experience for me. I learned many things, not to mention GWT and related libraries, I learned bits of web programming in Java. Till then I only coded for desktop, through this project I'm introduced to Java Servelets, bits of JSP, concepts like ORM, Hibernate, JPA, RIA, GAE and ExtJS library. All this within 2-3 months.

Working Demo

URL: http://safelymanage.appspot.com/
User Name: demo
Password: demo

It's a RIA application, so make sure JavaScript is enabled in your browser.
I managed to change code to work partially on GAE. You can see the UI. However, you can't do anything useful. Because, I haven't got time to change Control Layer to work on GAE. (Model and View are functional.
Also,It's a different theme and less aesthetically pleasing than one in above slide show (actual project.)

Wednesday, 24 November 2010

XML: Is it worth

Yes, I confess, I don't like XML at all. Reason, It's way too complication and I personally feels like it's a waste of storage space. Please, don't tell me that storage(be it memory or disk) is so cheap now a days. I still care. May be because, I started my programming (Computer Science) education with mighty "C". I always prefer to squeeze memory and make my programs as small as possible, (reason, why I changed from C++ to Java, then to Python: not to mention rapid development.) .

Why use XML at all. There are good old RDBMS. Well if you find buzz about ODBMS, use them. Or use simple JSON. Or better, go for Google's ProtocolBuffers.
Web programming in Java, now days become full of xml configuration files.And it'll go on, getting multiplied as your system gets bigger, web services included and so on. So much work, if some one ask me about it! Thanks to web2py, I can make the same applications that I used to do with Java (on web) or with GWT (of course with pyjamas)  with absolutely no xml. I'm sure other python frameworks also qualify.

So, avoid xml as much as you can. I'll not, because, I (read, clients) still need Java based web solutions no matter there's no significant advantage they can derive from not using python but java, and make it take almost double or tipple time than it take, if it developed in python. I also use xml, because I'm an html coder too. (Well html now a days get standardized to add an 'x' before html ==> xHTML. So many things changed for bad coders. I have to change headers only)

Aaahhh,, we are deviating. so what's we are upto??
Oh I got, "XML"!!! Decide yourself. I've other things to do...