Estructura y herramientas para una gran aplicación java

¿Cuál es la mejor "forma" de crear una aplicación web java relativamente grande? Estoy pensando en eclipse como IDE, pero los sistemas de control de versiones, las herramientas de compilation y la documentation junto con el seguimiento de problemas y esas cosas. Github?

Se pretende que sea un proyecto de "un solo hombre", pero quiero que esté completamente documentado para que otras personas puedan join fácilmente y, finalmente, debería ser posible vender la aplicación, y para entonces también debería ser profesional 🙂

Mi selección sería:

  • Herramienta de compilation
    • Maven , porque admite:
      • Gestión de Dependencia
      • Diseño / estructura de proyecto estándar
      • Integración Junit / TestNG
      • Generación del sitio
      • Integración de Iusse Management
      • Integración de Source Control Management
      • mucho, mucho, mas
  • IDE
    • Eclipse, incluido
      • M2Eclipse (Plugin de Maven)
      • Subversivo (Plugin de Subversion)
      • Egit (Plugin de Git)
  • VCS
    • Subversion o
    • Git
  • Integración continua
    • TeamCity
  • Seguimiento de errores
    • Bugzilla
  • 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 – Integración continua * DM – Dependency Management * PM – Project Management

(Resumen, comienza pequeño con Tomcat y Netbeans)

Recomendaría pequeños pasos, ya que parece que tiene poca experiencia (lo cual está bien) y, por lo tanto, tiene mucho que aprender.

La primera decisión que debe tomar es cuán grande es la aplicación que desea crear. La razón de esto es que hay básicamente dos niveles de aplicaciones web Java. Primero los grandes que requieren serveres de aplicaciones Java EE, y luego los pequeños que pueden hacer con un contenedor web como Tomcat / Jetty / Resin / etc. Si es posible, ¡quédese pequeño! Esto es tan importante que lo diré de nuevo, ¡quédese pequeño!

Cuando tenga eso establecido, elija una plataforma de implementación de destino (Tomcat es una buena opción para un contenedor web) y un IDE con buen soporte para su plataforma de implementación (que la mayoría de IDE tiene para Tomcat). Eclipse tiene soporte correcto para Tomcat, pero necesitará un poco de esfuerzo para automatizar su construcción y testing que necesitará más adelante. Netbeans usa scripts ant para manejar su código, por lo que es fácil de automatizar pero no tan ampliamente aceptado como Eclipse. ¡Este es realmente un punto muy importante! (Implementé un emulador de compilation Eclipse con una ant, tardé bastante time, no lo recomiendo).

Cuando tenga listo su IDE, debe tener administración de código fuente. ¡Esto es importante! Muchos existen, cualquiera lo hará, pero le gustará tener uno compatible con su IDE.

Entonces puedes comenzar 🙂 Aprende bien las herramientas. Aprenda su depurador. Escriba buenas declaraciones de logging (lo ayudará algún día). Comprométase con regularidad y escriba buenas notas de compromiso (también lo ayudará algún día).

Pospone el issuetracking por ahora. Eclipse para uno tiene una facilidad que cualquier línea marcada con FIXIT: aparece en una vista especial. Puedes usar eso por ahora también para que no te olvides.

Ah, y también recordar copys de security. La forma más sencilla de hacer copys de security triviales es trabajar en una Mac que puede usar un disco externo fácilmente para esto. Esto vale tanto para su propia computadora de trabajo como para el host de administración del código fuente.

No hay respuesta correcta.

Definitivamente ayudará:

  • SVN o git con buenos comentarios de revisión y confirmaciones atómicas
  • buena documentation de alto nivel del sistema
  • buen javadoc
  • un rastreador de problemas para el proyecto
  • testings unitarias especialmente en las principales API de su sistema

puede ayudar:

  • maven o un buen guión de ants con hiedra para la gestión de dependencies
  • un wiki de proyecto
  • un buen IDE

Algunos otros problemas (aparte de las herramientas) que determinarán el éxito del proyecto incluyen:

  • Mantener el scope del proyecto bajo control. No intentes hacer demasiado, o algo que esté más allá de tu capacidad / experiencia técnica.

  • Elegir las tecnologías correctas para desarrollar la aplicación web; por ejemplo, el marco correcto del lado del server, la tecnología de interfaz de usuario correcta del lado del cliente, la tecnología de persistencia correcta.

  • Tener un layout coherente y apropiadamente documentado, que incluya un model de datos decente.