views:

361

answers:

6

I have exactly 1 month until I start a web app project (standard 3-tier) using Java. I can probably decide on the frameworks and (frontend) technology used. The app will most likely be contained in Websphere.

I am coming from a .NET (mostly) backend development world (SQL Server, basic NHibernate, basic ASP.NET).

If I can spend all my time on getting (technically) ready, what should I be doing?

A: 

You should be reading about and doing the tutorials for the frameworks and technologies that you will be using. It's good to get your feet wet before you jump in to a large project.

It might also be a good idea to have a notebook (physical or digital) of problems, gotchas, and features that are of interest to your larger project that you find when doing the reading and tutorials. That way, when you recognize something from your project that you encountered during the tutorials, you can see what you did then and take the right actions on the project.

Thomas Owens
+1  A: 

I would say start building some prototypes of the system you'll expect. The more code you can write between now and then, the better prepared you'll be. I'm talking about small systems in the same style.

The first time through, you'll struggle a bit, but it will get easier the more you do it. WebSphere may be a bit of an issue as it costs money, but you can use pretty much any container (JBoss, GlassFish, etc). Avoid copying code between iterations.

Jesse
+3  A: 

I think you should be starting your project a month early, and then throw it away in a month! :-)

In all seriousness, in my opinion the best way of learning technologies is to use them. The best way to learn Java is to write Java programs to do real jobs.

So start spiking now. Write an ugly first draft websphere app with no functionality. Add a bit of database access using hibernate (as you know NHibernate). Get it talking to whatever database you will be using. It could still be SQLServer, but might be PostGres Oracle etc. It doesn't really matter using Hibernate.

Make sure you try technology for every tier. If you find one you don't like, try an alternative.

But until you try doing the work, you won't know what you need to know, and what you don't know. And if you ever get stuck on a task for longer than a day, either your task is too big for the spike, or maybe this technology is not the right solution.

Nick Fortescue
+1  A: 

You could go this a couple of ways. One way is to just look over the Java landscape, look at few different frameworks and find what you like most. The other way of doing it is to try and put together a technology stack that is as close to what you already know as possible, making it the smoothest transition. Obviously, Hibernate would be a drop in replacement for NHibernate. You can keep SQLServer if you want, but Hibernate hides the database pretty well if you go with something else. As for the front-end (which is really where the tough choices start for you), the closest thing to ASP.NET is JSF. I'm not super well versed in it myself and I'm a happier man for it, but I've heard its improved and I would definitely check out Seam if you're doing JSF, because I hear it actually makes it nice to work with.

As an alternative, if you want to go the other route and just find something simple and easy to use, run away from JSF and take a look at Wicket.

Beyond that, I definitely agree with the others - build as much of a disposable prototype as you can in a month! Its a perfect way both to learn Java, and decide your framework.

P.S. You specifically mentioned Java, but I thought I would briefly mention Groovy and Grails. Groovy is a dynamic language for the JVM that integrates extremely well with Java. Grails is a web framework like Rails. If you need to get started FAST, and build something working quickly, I think Grails could probably work well for you. I just don't know if it fits within your requirements.

Russell Leggett
A: 

Before choosing your technology, please consider how long the result will have to work before being replaced with a newer version?

If the answer is "longer than any of the current team members will be around", then strongly consider using technologies backed by specifications and implemented more than once. This will in my experience increase the probability that it is still around and maintained in 10-20 years time, and your successors will be happy.

If you dont think so, then consider how you would like to maintain a Visual Basic application for ever, and ever :)

Thorbjørn Ravn Andersen
A: 

I've gone from a Java developer at university to a .Net Wed developer in the space of a week. I wasn't very good at it to start with but just diving in was how I did it.

I've since gone to being a Java backend developer and I've just finished a project as a java web App developer. It had been a few years since I used Java so some stuff had changed, and my I'd forgotten an aweful lot of stuff I "Learned" at university.

In all instances I think the following advice stands:

  1. Dive in and get your hands dirty, either mocking up your upcoming project or building a bunch of toy projects.
  2. Find a tutorial that works for you.
  3. Learn how to use the IDE that you are going to be using.

As far as becoming a java Web developer goes there are hundreds of tutorials on JSP and servlets. Learn about how to set up whatever container you will be using (Tomcat or whatever).

Web development in Java isn't hard, personally I dont think the tools are as dummy proof as the ones in Visual Studio for ASP.Net but they are good enough.

Omar Kooheji