2010-05-25 13 views
15

Estoy buscando comenzar a trabajar en un nuevo proyecto, algo en lo que he estado pensando por un tiempo como mi primer proyecto vendible independiente. En términos generales, se trata de una aplicación de servicio basada en web, y mi primera opción, el lenguaje de servidor es bastante fácil ... Sé que Java funciona bastante bien en aplicaciones web Java en el pasado.¿Elige tecnologías "mejores" o más familiares para un nuevo proyecto?

Sin embargo, mi experiencia haciendo aplicaciones web involucró a JSP, Servlets y JSTL ... Conozco las ideas detrás de tecnologías más recientes como Hibernate/Spring pero nunca las he usado. Así que escribimos nuestros propios DAO, manejamos AJAX escribiendo páginas mini-JSP especiales que generaron páginas XML/JSON, etc.

No me gusta mucho la idea de que Spring/Hibernate sea el 'único' o el 'correcto' forma de hacer cualquier proyecto web Java, pero son ampliamente utilizados. Por otro lado, no solo tratar de aprender estos aumentaría el tiempo de desarrollo inicial, sino que usaría mis intentos de aprendizaje para construir un sistema de producción.

Recuerdo que uno de los primeros artículos de Joel dijo (Voy a parafrasear ya que no puedo encontrarlo)

"sin tener en cuenta lo que es fresco, siempre uso las tecnologías que el plomo desarrollador (o equipo de desarrollo?) sabe mejor "

Me preguntaba qué pensaba la gente acerca de eso?

ps: ¿debería ser CW?

+0

"sabe mejor" es un consejo muy, muy sabio! –

Respuesta

1

¡Cuidado con el atractivo de nuevos marcos geniales! Actualmente estoy pirateando una pequeña aplicación web que solo tiene un inicio de sesión, algunas páginas principalmente estáticas y algunos formularios para solicitar información por correo electrónico. Me hubiera llevado tal vez dos días hacer como Servlet/JSP tradicional en estilo MVC. En cambio, como había una holgura en el cronograma, decidí utilizar este proyecto para ponerme al día en Spring, Spring MVC y Spring WebFlow. Si bien es muy posible que sea demasiado denso, tardé en varias semanas para entender bien el camino, todavía no estoy totalmente seguro de que estoy haciendo todo correctamente, y la aplicación sigue siendo no hecho Afortunadamente, debido a la holgura, no estoy en peligro de que el cronograma del proyecto en general se desvanezca, pero siempre me pregunto si voy a tener que descartarlo y empezar de nuevo.

Sin embargo, he aprendido mi lección: la próxima vez, no seré yo el que empuje un nuevo marco a menos que sea el que he usado para proyectos de producción antes. Dicho esto, me alegro de haber comprendido Spring (o al menos creo que sí) y no dudaré en volver a usarlo la próxima vez.

Entonces, ¿cómo aprendería un nuevo marco la próxima vez? Si hay un líder de proyecto (en este caso soy un líder de proyecto de un equipo de uno, no hay ayuda allí) utilizaría el marco que establecieron. Si no lo hay, o si quiero aprender un marco que el líder del proyecto no utiliza, lo usaría para un proyecto paralelo en mi propio tiempo. Aprender es bueno Poner en riesgo el trabajo de la empresa lanzando tecnología no probada no es tan bueno.

2

No intente todo a la vez: utilice una tecnología nueva a la vez.

0

Depende de lo que el cliente desee (en el mundo de la consultoría). Tienes que aprender nuevas tecnologías. ¿El cliente quiere pagar por eso?

No se conocen todas las advertencias de las nuevas, mientras que las anteriores se prueban mucho más.

Por supuesto, si todo el mundo pensara así, todos estaríamos atrapados con VB estos días. Debe buscar el equilibrio adecuado y aprender mucho usted también para que pueda obtener una visión objetiva de las tecnologías disponibles, sus altibajos.

0

Yo personalmente recomendaría definitivamente buscar en la primavera, he encontrado que me ha ahorrado incontables horas. Hibernate también es útil si necesita una capa ORM (y Spring tiene buenas integraciones con Hibernate también). ciertamente no son la "única" o incluso la forma "correcta" de hacer las cosas (eso es bastante subjetivo) pero ambos me han ahorrado tiempo y esfuerzo, especialmente la primavera.

0

Hay una trampa importante con tecnología desconocida. No sabes dónde están los dragones, y no sabes cómo frotar la nueva tecnología "con los pelos".

Entender que va a lleva tiempo, y necesita tener eso en sus estimaciones. También sus estimaciones probablemente serán demasiado bajas ...

1

Puedo decir con seguridad que Spring vale la pena considerarlo. Te proporciona todo lo que puedes, pero no te molesta con cosas que no necesitas.

Por ejemplo, al principio probablemente solo necesite inyección de dependencia. Entonces necesitarás ayuda con las interacciones de la base de datos y la gestión de transacciones. Luego, decidirá aplicar el patrón MVC a su aplicación web. Después de eso, puede darse cuenta de que los componentes de su sistema deben enviarse JMS entre ellos. Y así sucesivamente y así sucesivamente.

Para todos estos casos, Spring tiene su propia solución simple, intuitiva y liviana.

6

Trabajo como consultor, y he visto muchos proyectos en los que los desarrolladores comenzaron con servlets + JSP porque eso es lo que sabían, y es muy fácil comenzar. Sin embargo, le da al equipo una oportunidad/excusa para escribir una plataforma propia, which is more fun than using someone else's and just writing an application.

A medida que el proyecto crece, el equipo reinventa más y más ruedas, algunas de las cuales terminan en square. Ahí es donde entro en la imagen: agregar cosas nuevas a esta plataforma semiflexible se ha vuelto tan complicado que los desarrolladores no pueden seguir agregando las características y arreglando errores sin llamar refuerzos. Para colmo de males, los desarrolladores internos suelen ser los encargados de realizar las correcciones de errores aburridas porque las correcciones de errores requieren más conocimiento de las entrañas sangrientas de lo que se ha convertido en el marco de persistencia y web patentado del equipo, por lo que consultores gosh-danged hacer las cosas nuevas y divertidas.

Ahora, no deberías usar un framework solo porque la gente ha estado regurgitando las publicaciones de los demás sobre la genialidad del mismo, pero también debes darte cuenta de que hay muy buenas razones por las cuales existen esos frameworks (y por qué usado). Si no ha utilizado ningún framework web en absoluto, le recomendaría que tome Spring MVC, Wicket o lo que sea para una prueba de manejo. No resuelven todos los problemas y causan algunos propios, pero el gran total suele ser un aumento de la productividad, especialmente si está haciendo interfaces de usuario avanzadas.

He estado en proyectos donde el JDBC simple ha sido suficiente para la persistencia, y donde no se han necesitado más frameworks web avanzados que servlets + JSP, pero esos proyectos son una minoría. Sin haber usado uno o dos frameworks, nunca sabrá si su proyecto forma parte de esa minoría que no lo necesita, o si es parte de la gran mayoría que lo hace.

1

Al iniciar un nuevo proyecto, limite el número de tecnologías/marcos desconocidos que se utilizarán. Cada marco requiere tiempo para aprender y cada marco tiene problemas, especialmente si no se implementan correctamente.

Si puede, le recomiendo que consulte el Play framework. Es un marco web para Java que se centra en la productividad del desarrollador. Puedes elegir utilizar Spring/Hibernate si quieres pero no estás obligado por eso. Tiene una implementación muy fácil de aprender y deberías ser capaz de hacerte una buena idea al día de jugar con ella si es lo que estás buscando.

Cuestiones relacionadas