views:

130

answers:

6

Whats the best "way" of creating a relatively large java web application? Im thinking about eclipse as IDE, but version control systems, build tools and documentation along with issue tracking and stuff? Github?

It's intended to be a "one man" project but I want it to be fully documented so other people easily can join and eventually it should be possible to sell the application and it should by then look professional too :)

A: 

There is no right answer.

will definitely help:

  • SVN or git with good revision comments and atomic commits
  • good high level documentation of the system
  • good javadoc
  • an issue tracker for the project
  • unit testing especially on the major APIs of your system

may help:

  • maven or a nice ant script with ivy for dependencies management
  • a project wiki
  • a good IDE
cherouvim
+2  A: 
  • IDE - Eclipse, IntelliJ IDEA, NetBeans
  • SCM - SVN, CVS, Git, Mercurial
  • CI - Hudson, TeamCity
  • DM - Maven2, Ivy
  • PM - JIRA, FogBugz, Trac, Zoho

*SCM - Source Control Management *CI - Continous Integration *DM - Dependency Management *PM - Project Management

Bozho
and which ones are "best"?
Thorbjørn Ravn Andersen
That's more a personal matter and/or the features they provide and/or the community behind it. I would opt for IDEA (or Eclipse), CVS (or SVN), Hudson, Maven2(!), JIRA.
BalusC
My preferences are like BalusC's (except that I prefer the ones in brackets), but I couldn't force them upon others. One reason is I haven't used all the alternatives (I've heard FogBugz is extraordinary)
Bozho
IDEA is technically definitely better than Eclipse. I only use Eclipse because the IDEA "Java EE version" isn't free and there aren't many plugins out for it as for Eclipse. Further I've used CVS for years, but from what I've seen/heard here and there, SVN looks better. But as CVS did its job well enough, I wasn't encouraged enough to switch to SVN :)
BalusC
+2  A: 

My selection would be:

Willi
In my experience Maven is not a beginners tool.
Thorbjørn Ravn Andersen
He wanted it to look professional and Maven is "the" tool on the market. Nevertheless Maven is indeed one of these tools you really start to understand if you did it the old (and wrong?) way for too long.
Willi
@Thor: what is the alternative? Ant? That's equally complex. Manually building a classpath and right clicking > export jar is not an option for anything but academia or tutorials. +1 for this toolset
Droo
@Droo, In my answer I recommended Netbeans since it basically handles _all_ the ant voodoo you need for the OP's stated intentions.
Thorbjørn Ravn Andersen
+1  A: 

(Abstract, start small with Tomcat and Netbeans)

I would recommend small steps, as it appears you are relatively inexperienced (which is ok) and hence have quite a bit to learn.

The very first decision you need to make, is how big an application you want to create. The reason for this is there is basically two levels of java web applications. First the big ones which require JEE application servers, and then the small ones which can do with a web container like Tomcat/Jetty/Resin/etc. If at all possible stay small! This is so important that I'll say it again, stay small!

When you have that settled choose a target deployment platform (Tomcat is a good choice for a web container) and an IDE with good support for your deployment platform (which most IDE's has for Tomcat). Eclipse has ok support for Tomcat, but you will need quite a bit of elbow grease to automate your building-and-testing which you will need later. Netbeans uses ant scripts to handle your code, so it is easy to automate but not quite as widely accepted as Eclipse. This is actually quite important a point! (I've implemented an Eclipse build emulator with ant, took quite some time, not recommended).

When you have your IDE ready, you must have source code management. This is important! Many exist, any will do, but you will like having one which is supported in your IDE!

Then you can start :) Learn the tools well. Learn your debugger. Write good log statements (it will help you one day). Commit regularily and write good commit notes (it, too, will help you one day).

Postpone the issuetracking for now. Eclipse for one has a facility that any line marked with FIXIT: shows up in a special view. You can use that for now too just so you wont forget.

Oh, and also remember backups. The simplest way to do trivial backups is to work on a Mac which can use an external disk easily for this. This goes for both your own work computer and the source code management host.

Thorbjørn Ravn Andersen
Good point on FIXIT, quite useful if you know where to find the "Task view" in Eclipse.
Willi
A: 

Some other issues (apart from tools) that will determine the project's success include:

  • Keeping the project scope under control. Don't try to do too much, or something that is beyond your technical ability / experience.

  • Choosing the right technologies for developing the webapp; e.g. the right server-side framework, the right client-side UI technology, the right persistence technology.

  • Having a coherent and appropriately documented design, including a decent data model.

Stephen C
A: 

If you are looking for hosted services to provide your project infrastructure, then you have a few options. We (http://mikeci.com) provide a hosted Continuous Integration service for Java projects that use Ant, Maven or Eclipse. We also provide an open source Eclipse plug-in (mikeclipse) or Maven archetypes to bootstrap the creation of your project. Prices start at $19/month with a free 30-day no-obligation trial.

I'd also definitely recommend using Codesion (http://www.codesion.com) for their source code management and issue tracking services.

Adam Leggett