They say fashion repeats itself, so does technology it seems. IHMO there are striking similarities between the technologies today and the ones some time back.
In this article i try to compare the old thing with the new thing. Mostly it is the environment around that made a technology obsolete or a technology advancement that makes the same technology feasible today (cheap hardware, more ram, better browsers).
There would be considerable differences in the technologies as well but it is the concepts that i am trying to compare.
The Cloud thingy
The title on one of the magazines in the Xebia Library attracts me every time i pass it. It says "What do they sell when they say Cloud?". On a higher level clouds to me look similar to the mainframes(http://en.wikipedia.org/wiki/Mainframe_computer) , just that it is cheaper today and a startup can afford to be 'on the cloud. The characteristics to add power on demand, run multiple OS hot swap etc seem to be exactly same.
Hardware advances, virtualisation made it possible to create a new machine in minutes. A map reduce job running on 20 EC2 machines sounds like 'submitted a mainframe job in queue'.
Client server applications and RIA
Once upon a time there were applications that ran, stored data on the same machines. Then came the thick clients that did quite a bit of processing and had a backing server component. But thick clients have their own installation headaches. Installing a new version of software across the enterprise is a pain.
Then applications moved to browser but they were not as fancy as the desktop applications. Then came the RIA applications which are more like the thick clients and give the same experience.
This again was possible due to advances in browsers and standardization of web technologies. All desktops applications are moving to the Software as a service model. Do netbooks remind you of the dumb terminals?
With more and more RAM available on client machines, people are leveraging it by passing processing requirements to the client.
One thing at a time
Modern single 'window' handheld interfaces are like single window console based applications (Turbo C). Yeah .. there is no comparison really but the concept of handling one thing at a time is a productivity feature today as compared to limitation of past.
It seems the age of data structures is back. Everything was getting abstracted and programmers getting reduced to mere API users. This set of technology brings back the complexity back in developers hand rather than the costly product. When you read about B-Trees, Bloom filters, Consistent hashing and have to figure our the which keys are to be assigned to which server rather than figuring out which annotation to use to create a web service.
Though NoSQL in itself is a relatively new technology, but it uses selective concepts of databases/data structures to target specific applications.
Annotations- the new 'pre processor'
Annotations the new pre processors with magical powers of code generation. As wikepedia defines it "a preprocessor is a program that processes its input data to produce output that is used as input to another program".
So are annotations any different?
Same concept but powered by bytecode generation is much more powerful than if else style preprocessor (could be more powerful in other languages as well).
Most people who deal with production logs maintain a bin directory with their sed, awk , perl or shell scripts. Why not a java program? The multiple steps to fire an IDE complile and run a program, plus the verbose syntax hold the developers back. But these languages (VB, shell scripts) were too loose (not statically typed) to write the dreamed 'bug free' production code.
But it seems dynamic languages like Groovy, Ruby are in vogue now. So what has changed?
These languages are interpreted and compiled, run faster than VB, shell scripts. There rise can be attributed (apart from being awesome) to quick turnaround times required in todays world.
Sun/Oracle certified or Spring certified
This might be a bit touchy!! Certification, earlier there was a Sun/Oracle/Microsoft certified programmer. Now we have spring certified programmers. Has anything changed there?
"The complexities of human pranks escape me." - Spock