I have been working as a java programmer for last 7 years. I only know Java/jsp/struts/spring and that is sufficient to so consulting with so called big business organizations. But everyday on HN I see people talking about php, ruby on rails, python etc. I want to learn one of those new framework to develop some personal side projects. Which web framework should I learn?
Short answer (in this order):
2. PHP
1. Ruby
3. Uh.. isn't this "almost" ruby?
4. WTF?<p>Long answer:<p>For the record, I am biased. I prefer functional, readable code that is not subject to some mystical "coolness" quotient dictated by some "gurus" in Silicon Valley. I can program in almost any language, and yet I still find Ruby almost completely unreadable.<p>I will not hire a developer who "can write that in 10 lines of Ruby", because none of those 10 lines is documented, readable, or debugged. Not that there's anything wrong with Ruby per se, but my experience is that it's an attempt at RAD which is a process that usually isn't preceded by an architectural design stage.. Again, my experience, not necessarily common.<p>For single-threaded web functionality, I prefer Object Oriented PHP 5.3 + jQuery + PHPLiveX (for object oriented Ajax) + Postgresql (database).<p>For server process (single or multi-threaded) code, I prefer C# (mono-project.com) over Java. Perl is still a contender, but its dwindling number of monks available, and its waning interest level among new developers makes it a distant second.<p>For mobile App development, PhoneGap, Corona and MonoTouch are good for quick development, but Objective C still owns the house for native development until someone comes up with a contender (I hear that there's a mono project under way to compile C# (Mono) to Objective C... which would be cool. C# is much easier to manage than Objective C.<p>R
PHP + Yii Framework + jQuery + MySQL. It does everything you'll need - quickly and neatly. It's got the good bits of Ruby on Rails with the benefits of using PHP (huge amounts of tutorials, modules, components etc). Fuck worrying about what's cool, or what scales. You want to build a product that works so you can show it to people and see if they will pay money / use it.
I personally don't use a serverside framework, with the Javascript toolkits there is really no need. I use Dojo for heavy duty apps and jQuery for lighter apps. I use a JSON library on the server side (for Java JAX-RS) that acts as the data and business logic layer.<p>I like this because it separates the concerns of UI and business logic. It is faster to develop the UI because you are working in HTML, CSS and Javascript (make a change refresh look at firebug). It also allows me to stub the server side by writing json files. By the time I am done with the UI prototype, I have a very good definition of the services that I will need on the server side.<p>The nice part about the loose coupled nature of building a web app this way is that you are not heavily invested in a server infrastructure, if you decide you no longer like your server language then you just start implementing new services in the language du jour.
I recommend Ramaze. As simple as possible, and no simpler. Clean, clear, concise, straightforward. Modular and flexible. Pair with your choice of database and ORM (if any).