views:

249

answers:

5

Share anything you find important and think could be of use to others.

Some questions you might want to answer:

  • Do you use Jetty to run the application during development?
  • Do you use another database than MySQL during development?
  • How do you manage dependencies?
  • Do you use Eclipse, NetBeans or other IDE's? Why did you make your IDE choices?
  • Do you use a lot of plug ins for your IDE? Do they require a manual installation for new developers?
  • Do you use Eclipse Mylyn or something similar? Why/Why not?
  • How do you handle logging for you database, web server, used frameworks and your own produced code? Are you handling it any differently during development than during production?
  • What do you use as a file revision control system? And why did you pick that technology?
  • How much do you use forums, IM and e-mail to communicate?
  • What do you document? At which detail level? Is it due to "real value" or because you are fulfilling the requirements of Rational Unified Process (RUP), eXtreme Programming (XP) or the Waterfall project model or some other more or less formalized way of working?
  • How do you document? Wiki? Revision controlled word documents? UML?

Those are not the final questions of course, feel free to improve this post as it's set as community wiki.

+2  A: 
  • Appserver: Glassfish. Frankly I wouldn't consider anything else;
  • IDE: IntelliJ IDEA. IMHO the best Java IDE on the market;
  • Build Process: Ant build scripts. Some will argue for Maven but personally I find it invasive (in that it dictates a directory structure I find too depp);
  • Source Control: Subversion;
  • Documentation: Wiki variant (eg Confluence). As to what I document, core concepts that aren't apparent from opening up a source file (since core concepts can typically span many classes before you see the big picture). Documentation should be minimal and not onerous to update (or it won't be). Often this isn't much more than a UML class diagram or ER digram with some explanatory text;
  • Database: Frankly I'm disappointed if I can't use Oracle (Oracle XE has a very nice license). Nothing else is as good. If not that then it may as well be MySQL;
  • Frameworks: Spring is a given;
  • Logging: Glassfish uses JDK logging, which I find the most ridiculous logging framework in existence but that doesn't matter much. If I have my choice I use log4j. It's reasonably simple and does the job;
  • Communication: Email and Jabber;
  • Operating System: Linux flavour (eg Ubuntu) if I can. It's significantly faster than Windows for large checkouts, updates, commits and builds; and
  • Unit Testing: JUnit 4.
cletus
+2  A: 

At Home:-

  • Appserver Jetty or Tomcat
  • IDE Vanilla Eclipse - only the jetty debug server plugin
  • Build Processdefault eclipse
  • Documentation whats that?
  • Database JavaDB or sqlite
  • Frameworks Spring IBATIS for handling SQL
  • Logging log4j (sometimes plain System.out.println)
  • Communication talking, email
  • Operating SystemUbuntu sometimes Vista
  • Unit Testing Handcrafted test harnesses (OK I am getting old and Ive always done it that way)

At work

  • Appserver Websphere
  • IDE Rational (Developer, Architect, RequistitePro the lot)
  • Build Process Default RAD
  • DocumentationWord and Sharepoint
  • Database Oracle (some DB2)
  • Frameworks Spring, Hibernate (STRUTS if I really have to)
  • Logging log4j (sometimes plain System.out.println)
  • Communication walking and talking
  • Operating SystemWindows XP, AIX
  • Unit Testing Junit
  • James Anderson
    +2  A: 

    My most important piece of advice: Find a way to be able to run your code inside your IDE without deploying it to a web server. Deploying over and over again takes a lot of time and sometimes, it will silently fail, leaving your app in a mysterious state.

    Reasoning: Testing is your most valuable asset. If you can't test (or won't because the tests are frail or take long to execute), nothing else matters much. No tool in the world will help you as much as automatic testing when it comes to deliver in time and with a good quality.

    So avoid anything which slows you down, tries to lock you in or just stops you from being able to test. Remember that your favorite tool seller isn't going to be fired if the result doesn't meet expectations, in fact his goals are quite opposite of yours.

    So forget about Jetty/Tomcat/Websphere. The difference is not that important if you can't breathe.

    As I said many times before, don't take word from anyone what the "best" IDE is. When it comes to text editing, "best" as subjective as who you vote for.

    Avoid testing against a database. You want to know if your code is correct; you don't want to test sending SQL strings to Oracle. If you have to, prefer an in-memory database. Create a couple of isolated tests which send each type of SQL to the DB once to verify that they parse plus verify the results but other than that, avoid JDBC like the plague.

    The same goes for any other kind of external dependency. 90% of your tests should be autistic and run in less than a millisecond.

    Aim to be able to generate all the HTML, etc. by calling simple methods. In my projects, I'm using MockRunner if the project contains JSPs. All my other projects use Groovy so I can simply call the methods which generate the HTML plus I've yet to see a way to express HTML so cleanly in a programming language.

    My setup:

    • Appserver Tomcat
    • IDE Eclipse with lots of plugins
    • Build Process Maven
    • Documentation MediaWiki
    • Database HSQLDB, Derby, DB2, Oracle
    • Frameworks Spring, Hibernate
    • Logging log4j
    • Communication Talking over the desk
    • Operating System Windows XP, Linux
    • Unit Testing Junit
    Aaron Digulla
    +1  A: 

    - Do you use Jetty to run the application during development? No

    - Do you use another database than MySQL during development? Yes, it depends on the project (most commonly Oracle).

    - How do you manage dependencies? Maven 2

    - Do you use Eclipse, NetBeans or other IDE's? Why did you make your IDE choices? Eclipse, all my coworkers use it.

    - Do you use a lot of plug ins for your IDE? Do they require a manual installation for new developers?Yes. Yes (via Eclipse Software Updates).

    - Do you use Eclipse Mylyn or something similar? Why/Why not? No. No time to learning to use it :-)

    - How do you handle logging for you database, web server, used frameworks and your own produced code? Are you handling it any differently during development than during production? Yes, Yes we change log level in production mode.

    - What do you use as a file revision control system? And why did you pick that technology? Subversion, Free, easy to use and mantain.

    - How much do you use forums, IM and e-mail to communicate? All of the time :-)

    - What do you document? Source Code and Resource files. We also document all project phases

    - How do you document? Wiki? Revision controlled word documents? UML? It depends All of this.

    SourceRebels
    A: 

    The MyEclipse IDE has a very smooth development mechanism as it deploys immediately to an internal Tomcat instance, plus has tons of connectors for other webservers.

    For proof-of-concept implementations this is very fast and highly recommended.

    Thorbjørn Ravn Andersen