I am new to Java (but have a fair bit of .NET experience).
I need to get a Java application up and running quickly, so what I am looking for here is advice on components that will simplify or reduce the pain of common tasks and whose payoff will either be immediate or at least come with minimal investment in time spent learning how to use the component. I don't have weeks to spend getting to grips with complex or extensive frameworks - I am looking for add-ins that are easy to use and remove some of the propblems of using raw APIs. However, if the raw API is the best option for any of these tasks, that's fine, let me know ...
Data Layer I want to write specific providers for MySQL, MSSQL, Postgres but otherwise data access is pretty simple stuff. I will probably need transactions. What do you suggest? Does say, Spring Data Access, offer anything worth having over JDBC? Anything else I need to think about? My guess is something like Hibernate is going to be overkill and take too long to get up and running with - what do you think?
Middle Tier Loosely coupled, interface based business layer. I need to be able to interact with the middle tier through a web app and a desktop app - what is the best way to expose this? Web service?
Desktop App I know about Swing - are there any other simple desktop UI components? I will need some kind of scheduling component to run background tasks.
Web App I will need some kind of cache, I need user sessions, I need dynamic pages. From what I can tell JSPs are a Java equivalent of PHP or some other server side scripting language (and don't support state). An MVC framework may be overkill unless there is a framework that is very straight forward to get working with?. I heard there is a Java equivalent of ASP.NET web forms - is it any good? Maybe JSPs will suffice here?
I'm looking for practical advice / your experiences of components, rather than a list of web links :)
Thanks for any advice ..