I have coded up a lot of desktop applications and I am good at programming in Java and Smalltalk. Now, how do I get started with webapps?<p>Are there articles/blogs that compare web frameworks (RoR, Django)? Any starter kits for Javascript, CSS etc? How do I get a high-level overview of how things fit in?<p>I realize those are too many questions in one post :) I am just hoping to tap the HN resource lib and that might be helpful for others too. So, if you have anything at all that you think might be helpful to someone just starting, please do post it across
If you want to first learn the fundamentals, PHP/MySQL is a good place to start.<p>If you want to just jump in and make something frameworks such as Django and Rails make a nice level of abstraction above the database and even above the raw HTML.<p>If you're looking for a recommendation, I love Django.
As you are good a Smalltalk, I think you should take a look to <a href="http://www.seaside.st" rel="nofollow">http://www.seaside.st</a> a framework for developing webapps in Smalltalk.<p>To get a good overview read the HTTP RFC. IMO, JavaScript and CSS should be the last thing to learn.
If your Java experience is with GUI programming, you should be right at home with Google Web Toolkit. You don't need to worry about complicated web-related tasks such as handling asynchronous calls, that is all abstracted for you. You can layout your pages like you would a Swing or SWT desktop app and that should get you started.: <a href="http://code.google.com/webtoolkit/" rel="nofollow">http://code.google.com/webtoolkit/</a><p>GWT is a higher level of abstraction than most other frameworks, which some like and some do not. The top-most layer is actually not coupled to anything specific related to javascript, DOM, or HTML in general. DOM manipulation and javascript are treated much like in-line native assembly code in a traditional high-level language. You can develop an entire web application like GMail without ever seeing anything below this high level abstraction. This may make it sound weak or limited, but its actually very powerful b/c you can focus on building rich functionality rather than debugging erratic cross-browser quirks.
I posted this before, but I can't find the link in YC...<p>If time is critical, then I figure you'll want screencasts for the language/framework you need to use.<p>I don't know of any that exist for any other language/framework, but Ruby on Rails has really excellent ones at:<p><a href="http://peepcode.com" rel="nofollow">http://peepcode.com</a> - not free but no one else compresses an entire Rails book in 5 hours of video<p><a href="http://railscasts.com" rel="nofollow">http://railscasts.com</a> - 5 to 15 min useful segments related to ruby on rails<p>Once you feel a little more comfortable after viewing the videos, the Pragmatic Programmer Series and Oreilly books are a good place to continue.<p>Almost forgot - you can test out all you learned at (YC startup) <a href="http://heroku.com" rel="nofollow">http://heroku.com</a> (nothing to install on your computer - easy to start)
For Javascript: Ruby is kind of similar to Smalltalk, and Javascript can be pretty Ruby-like if you use the Prototype/Scriptaculous frameworks.<p>For CSS: I've never used Blueprint.css, but it looks pretty awesome.
I don't think I'd want to starting out by learning to code relatively complicated things to a framework. If you learn a framework you won't be so much exposed to the real technologies - HTTP, HTML, CSS, Javascript. I think I'd start by reading the RFCs for those. Then write some web pages by hand with HTML and then try to write a program to do what you just did by hand. Also study the source of any other web apps you can find - open source software is great for learning.
You could probably dive into Rails and get something working. Diving in and doing something is a lot better than trying to pick a framework. You can get started with anything, really, including the languages you know. Smalltalk has 'seaside', Java has a million frameworks. You would probably not have much trouble with Ruby or Python either.
Yeah its a slow transition. Dont waste too much time trying to "decide" between a language. I just plunged into python (sorry all RoR fans out there, nothing personal)...<p>django is a great framework for beginners.. start with sqlite for a quick db to use with django then get to postgres as soon as you can.
For Java I would say Spring is the current standard, although I admit the web part of spring is a bit confusing at first (in reality it is quite simple, though). Don't use Struts, please.<p>Maybe Seam would be interesting, too - created by the Hibernate guys, it is supposed to be inspired by Rails.
You may as well start with JSP at a free web host like <a href="http://www.myjavaserver.com/" rel="nofollow">http://www.myjavaserver.com/</a> or <a href="http://www.eatj.com/" rel="nofollow">http://www.eatj.com/</a> to play around.
PHP! Zend Framework FTW! <a href="http://framework.zend.com" rel="nofollow">http://framework.zend.com</a>
and add a little jQuery into it. <a href="http://jquery.com" rel="nofollow">http://jquery.com</a>