I have been tasked to develop an interactive website using java & mysql: using servlets to retrieve & massage data, applets to do special handling of the data client-sid
First paragraph edited by request of slashmais : This answer is not really aligned with others, and the rephrased question. It's more of a complement to other answers. I believe the personal preferences are really important in choosing between technologies. I see it as (dis)liking some things, and choosing the technologies that correspond. The rest of the answer gives examples:
For example, suppose I believe the developer's actions should be checked in real-time as much as possible, to receive immediate feedback, and also completion if possible, and avoid early so many errors. This (dis)liking determines some preferences:
Other example, suppose I strongly prefer "Convention over Configuration". That is, I agree to follow stricts rules in my project, getting much less plumbing to do manually (because default values fit):
Other example, suppose I believe so much in the Model-View-Controller separation, for clarity and reuse, that I want to stretch it a bit. I could use:
CMS
- Tortoise SVN
Editor / IDE
- eclipse
General tools/utilities
- Maven (build and deploy tool)
- Cruise Control
- GWT/ext-GWT/ICEFaces - web component technology
- Spring - dependency injection framework
- Hibernate - ORM
- Axis 2.0 web service development kit
- Jboss
Directed (special purpose) tools/utilities
- log5j - for logging
Testing and QA tools/utilities/techniques
- Watij
- Firebug
- QTP for automated testing
- Junit Perf (Junit test cases for performance testing.)
Reference material (both on- & off-line)
- Java docs of each of the technologies
- Google ofcourse :)
Tomcat and Jetty are both well-known/supported servlet containers. If you're building a deployable for customers you may want to test on both, if you don't control the deployment.
For testing, check out (along with your normal unit test frameworks of JUnit/TestNG) Watij and/or HtmlUnit. These will allow you to automate the actual web/browser interactions and will save you a world of grief in the long run. The downside is that you'll have to invest some time in setting up your tests.
Related to automated tests, I think you need an automated build / continuous integration system. Numerous abound in the Java world. Two common ones are CruiseControl and Hudson.
For a lot of the above, standard Java/development tooling applies e.g. the 'standard' IDEs (Netbeans/Eclipse/Intellij - Intellij is worth paying for, btw). The same applies for CMS and there are lots of resources on this website about the pros/cons of SVN/Git/Mercurial etc. It's worth checking that your choice of CMS integrates with your IDE.
I would check out Firebug for simplifying development (on Firefox). It makes the front end development a lot easier. LiveHttpHeaders will ease diagnosis of issues relating to HTTP transfer.
Try vcl.js is all in one (front end and backend) enterprise web development tool,
I guess the idea is that you don’t need to learn jquery,Sammyjs or any other framework
For web-development I use (and would recommend) the following:
With regards to resources, all these technologies are well documented on their respective sites, the only exception being XHTML & CSS for which I'd suggest http://www.alistapart.com.
With regards to editors both IntelliJ and (I believe) Eclipse have very good HTML, CSS, JSP and JavaScript editors.
Also use Firefox (as Brian has suggested) with both the Web Developer plugin and Firebug - both of these are indispensable.