¿Qué Framework elegir para programar en Java-JSP?

Actualmente estoy utilizando JSP para programar un sitio web (el típico sitio donde existen varios usuarios y un solo administrador).

No estoy empleando ningún framework.

Sin embargo, he llegado a la conclusión de que necesito comenzar a usar uno por diversas cosas (ahorro de tiempo, algunas funciones especiales que se requieran, por ejemplo el control de acceso a la BD, etc.) .

Según lo que he leido Spring y Tapestry son buenas opciones (Struts al parecer no lo es).

Me gustaria saber cual es el mejor para usarse. O si tienen otra sugerencia les agradecería.

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de ezamudio

qué tanto tienes ya

Qué tanto tienes hecho ya? En términos absolutos (líneas de código/html/etc) y en porcentaje del total de la aplicación (ya pasaste del 50%?)

Tiene que ser Java a fuerzas?

Si llevas apenas un poco y no te importa reescribirlo (porque vas a terminar haciendo mucho menos código y menos tiempo que si sigues con el curso actual), puedes irte por Tapestry, o Play!, o Wicket, o Click, o incluso, si no tiene que ser Java a fuerzas, por Grails (Groovy) o Lift (Scala).

Si ya llevas un porcentaje importante avanzado, y crees que vas a perder más tiempo reescribiendo lo que llevas que si continúas con JSP pero quieres mejorar las cosas, y a estas alturas la única opción viable es integrar algo sobre lo que ya tienes, puedes usar Spring MVC, que funciona sobre JSP normal, pero ahora tendrás controladores y cosas así, puedes cambiar mucho la arquitectura de la aplicación pero los JSP los vas a modificar poco (a menos que tengas muchísimo código adentro de los JSP, cosa que NUNCA es recomendable).

En mi experiencia

Yo uso JSF 1.2 y RichFaces 3.2.2 y pues te podria decir que en terminos generales estan bien

Cuando sali de la escuela hace 1 año solo sabia lo basico de html, jps y servlets y ¡zasss! llego a trabajar y usaban Faces y desde entonces es lo que ocupo y pues me andan bien, salvo algunas excepciones.

En este foro seguro vas a encontrar quienes te hablen de las cualidades y defectos de cada uno de los Framewoks existentes.

Imagen de luxspes

Yo NO vuelvo a usar JSF 1.2 y RichFaces

Yo uso JSF 1.2 y RichFaces 3.2.2 y pues te podria decir que en terminos generales estan bien

Yo use JSF 1.x y RichFaces 3.x y pues te podria decir que en terminos generales estan mal

Si igual te late irte por le camino de los estandares, yo te recomendaria JSF 2.x o de plano JSP. Si no pues Tapestry le suena bien a ezamudio y el generalmente tiene buenas corazonadas

Imagen de Sr. Negativo

No, estoy en el inicio del proyecto

Gracias a todos por sus respuestas

@ezamudio

No, estoy en el inicio del proyecto. Diría que menos del 10% de avances (solo ideas). El proyecto original estaba en PHP , pero se va usar (por obligación, ya que PHP no les gusta a los jefes) JSP para desarrollarlo.

Vamos a usar JFreeChart para las gráficas y iText para los documentos en pdf. Más o menos ya entiendo lo del MVC. Si embargo, al parecer los servlets no los quieren usar(los jefes), según es más fácil si los omitimos solo puro JSP.

edit:
Ya estoy leyendo los post sobre Tapestry.

Imagen de ezamudio

WTF?

al parecer los servlets no los quieren usar(los jefes), según es más fácil si los omitimos solo puro JSP

Veo... un pantano de código espagueti... mezcla de capas... el horror... el horror...

Usen controladores Spring MVC si no quieren usar servlets. Si de plano quieren todo el código en JSP, explícales amablemente que los jefes son jefes porque no se tienen que meter en esos detalles. Si insisten, es hora de desempolvar el CV y buscar chamba (supe que luxspes está buscando gente).

Imagen de jelid

Solo un sitio ??

Un sitio Web... ? Solo un sitio ?? Y ya revisaste tu servidor y soporta sin problemas el Java?, no quiero hacer menos en nada a los comentarios anteriores pero porque no usar Drupal?
Es sencillo, fácil de usar y mantener (después de la obvia curva de aprendizaje)
En la linea de comentarios que esta, puedo sugerir GWT... es fácil de usar.
Saludos!

Lo que percibo

Depende el proyecto y las restricciones que al parecer son únicamente JSP. Mira yo la verdad creo que buscan la idea de usar sólo JSP por algo que @luxspes ha comentado ya. El dinamismo, con JSP no te tienes que pelear con un war entero que tiene que ser recompilado cada vez que hagas un cambio, con JSP lo que haces es modificar el JSP y no tienes que parar el resto de la aplicación.

Por otra parte tomas las desventajas también, cómo lo dice @ezamudio, poca modularidad, un código poco entendible, spaghetti y más spaghetti. Si a eso le agregamos que te lleva a hacer malas prácticas y que no te ayuda en otras cosas, pues creo que terminamos con una conclusión.

Si quieres conservar ese dinamismo de JSP sin perder modularidad te recomendaría utilizar algo cómo Play! Framework. En el caso de Play! que es el que más he utilizado, necesitas aprender únicamente Java o Scala (¡SÍ, PLAY TAMBIÉN PUEDE USAR SCALA!) y Play! mismo. De ahí sin darte cuenta desarrollas habilidades cómo JPA, Spring y otros yuyos. Y pues Play! tiene la ventaja de: "Hit reload and fixed the bug", o sea, haz cambio en tu código y recarga para ver el cambio.

No sé yo si Grails tenga esa prestación (recarga al vuelo en producción), de tenerla puede ser una opción y la curva de aprendizaje es casi inexistente (al menos para Groovy, y pues para Grails no he visto muchos problemas).

Otra opción si pueden pagar una licencia es pagar la de JRebel y usar Java de manera "menos esotérica", básicamente JRebel es un plugin para habilitar el dinamismo en Java. Si no pueden pagarlo pues Scala nos hace un paro, ya qué si usas Scala JRebel es gratuito (y en mi opinión es mucho mejor usar el lenguaje Scala con la infraestructura Java).

Por último es buscar otras opciones que te agraden.

Y en conclusión: NO SE TE OCURRA USAR STRUTS 1.x NI JSF 1.x.

Imagen de neko069

Re: Solo un sitio ??

Drupal??? para qué meter todo un CMS cuando ni siquiera el Sr. Negativo sabe qué uso va a tener su aplicación?? , como dice @ezamudio, chance no tiene que ser Java en su estricto sentido, podría ser algún otro lenguaje que corra en la JVM...
De que GWT es "sencillo", lo es, pero tampoco es algo que aprendas en 2 días.... sobre todo su integración con otros frameworks, yo mejor espero que el @Sr Negativo comente más acerca de su aplicación, y ya veremos....bueno, está bien, también voto porque le eches una revisada a GWT ;-)

Re: Solo un sitio ??

Pues muchos somos desarrolladores y se nos piden funciones muy específicas cómo para usar un manejador de contenidos/sitios/portales. Mucha gente dice: "Soy desarrollador web", les preguntas: "¿Qué herramientas utilizas?" y te responden: "Joomla". O sea, francamente no niego que Joomla, Wordpress, Dolphin, Sekai, Drupal y toda la bola de manejadores de contenidos ayuden cuando tienes que hacer algo muy genérico. Pero en funciones muy específicas tienes que pelearte con las restricciones del manejador, que se integre en la versión no se que, etc. Y cuando terminas tu plugin para conseguir esa función que necesitas, resulta que reportaron un bug de seguridad y es necesario actualizar a la siguiente versión, en donde tu plugin ya no funciona y bla bla bla.

No sé, a mi jamás me han gustado los manejadores de contenido para poner sitios y aplicaciones en producción; son utilidades chidas para levantar un sitio o una página web informativa. Pero yo no me atrevería a manejar registros importantes o incluso vitales de una empresa para "ahorrarme tiempo".

Cada herramienta tiene su lugar.

Y pues GWT, a mi no me agradó mucho...Para frameworks de esa filosofía me agrada más Vaadin.

Imagen de Sr. Negativo

Desorden

Gracias por sus respuestas.

Creo que tienen razón, si hay mucho desorden en el proyecto, unos dicen que es mejor usar Spring /JSF e Hibernate o JPA, etc.

Otros que solo use JSTL y nos olvidemos de los Frameworks.

En lo que coincidimos es en usar esto:

  • Postgresql para la base de datos
  • JFreechart para las gráficas
  • iText para los PDF (reportes)
  • Lenguaje JSP (el problema va ser con los Servlets, los jefes son jefes y no los quieren... ¿algún trauma?)

En lo que no coincidimos:

  • Usar los frameworks: Tapestry o Spring u otro
  • Usar Hibernate o myBatis
  • Usar Maven o Ant

La "ventaja" es que todavía tenemos tiempo para decidir que es lo que se va usar.

Imagen de Jvan

Grave error decidirse por

Grave error decidirse por utilizar solo JSP, deberias de usar SpringMVC o ya de perdida Servlets como controladores, en fin.

Imagen de Sr. Negativo

Solo JSP... :(

Si, pero ya ven los jefes son jefes y tu solo obedeces. También me parece un poco arriesgado.

Según yo el MVC funciona así:

Modelo:Son las clases   que se van a ocupar en el proyecto.

Controlador:Son los Servlets que reciben peticiones y envian respuestas a los JSP. Son los encargados de procesar los datos.

Vista:Son los ficheros *.jsp que el usuario VE como páginas dinámicas, el resultado de alguna consulta, etc.

Los jefes son jefes y no entienden nada de esto aunque les expliques.

Y peor cuando nunca he usado ningún Framework que me "facilite la existencia" e insisten en que debes usar uno.

Creo que voy a elegir Tapestry y a tratar de convencerlos.

Lo que si tengo bastantes dudas en usar o no Hibernate. ¿Es realmente necesario?

Según entiendo es para tener mayor control de la información de las bases de datos.

Re: Solo jSP... :(

No...Modelo son las clases que interactúan directamente con la base de datos (usuario, producto, etc.). Controller son los servlets, que cómo bien dices envían respuestas y reciben peticiones. La vista si son los JSP o HTML.

Respecto a tus jefes, pues les puedes decir que puedes optar por otras tecnologías que tienen el dinamismo de JSP y te ayudan a ti con la modularidad (Play!, Grails, JRuby on Rails). O ya si quieres algo más enterprise, pues búscale por JRebel con Spring MVC. Ahora, también es qué tan cómodo estés, no es necesario hacer algo porqué todo el mundo te dice que lo hagas. Si tú te sientes cómodo programando puro JSP y crees que no necesitas más, adelante. Pero, si te puedo sugerir que separes un poco las cosas (no sé si con JSP puedas hacer cómo en PHP que diferentes scripts pueden integrarse en uno, qué la modularidad no está limitada a una tecnología, sólo que en este caso tendrías que hacerlo a patin).

Hibernate, no es necesario; pero te ayuda a manejar los registros de bases de datos cómo un objeto (ORM, mapeo de relacional a objetos)...Por ejemplo en lugar de andar barriendo un resultSet y tener que usar los setters de un producto con Hibernate se hace ese "parseo" de forma automática. El control en base de datos depende, puedes tener tanto control con JDBC cómo con Hibernate, claro que Hibernate te ofrece herramientas a más alto nivel.

Respecto a Tapestry, pues está chido y es cool; y pues la gente que sabe (cómo @ezamudio) lo recomienda, lo usa y tiene buenas experiencias...EL PROBLEMA CON TAPESTRY ES LA RETRO-COMPATIBILIDAD. Si usas Tapestry 5, la documentación de Tapestry 4 de poco te va a servir. Además que Tapestry tiene una curva de aprendizaje algo marcadita, mi recomendación es que si te gustó Tapestry pues pruebes con Wicket, es básicamente la misma filosofía pero es más sencillo (a mi parecer).

Imagen de AlexSnake

Y los DAO?

Que no se supone que las clases que interactúan con la bd no son los DAOs???? o será que ya me confundi.

Lo que pasa es que el Modelo

Lo que pasa es que el Modelo es lo que estás representando, el dominio de tu aplicación y/o lo que estás queriendo hacer en primer lugar. Tambien se le dice "modelo de dominio". Si vas a hacer una aplicación para un punto de venta, en el modelo pones, los articulos, marcas, tarjetas, clientes. etc.

Entonces, estas entidades ( este modelo ) lo persistes usando un (P)RDBMS ( la p es por Pseudo :P ), para acceder a la base de datos usas el patrón DAO ( que también puede usarse si tu información la persistes usando archivos planos o viene de un webservice o la inventas al vuelo jeje )

La Vista es .. pues eso, una "representación visual" de ese modelo. Si tienes un articulo puede ser con imagencita y todo o puede ser tan simple como un texto donde aparece el nombre y precio de artuculo.

Y el Controlador es el que hace que la información del modelo le llegue a la vista y que los cambios de la vista se persistan ( o le lleguen ) al modelo.

La lógica del negocio también va en el modelo y esta logica no tiene que ser persistida, aunque muchas veces se pone en el controlador, en realidad el controlador solamente debería de llamar al objeto correcto que tiene la lógica.

Para (sobre) simplificar las cosas se puede pensar que el modelo son las tablas de la BD, la vista los jsp's y el controlador los servlets, pero esta clasificación no es estricta y cada framework de MVC pone una cosa y otra en diferentes clases pero la escencia es la misma.

Imagen de Jvan

Jajaja me sacó mucha risa lo

Jajaja me sacó mucha risa lo que pusiste OscarRyz:

lo persistes usando un (P)RDBMS ( la p es por Pseudo :P )

Imagen de AlexSnake

A ver si entendi...

Entonces esto quiere decir que, se le llama Modelo a los objetos de mi aplicación que van a interactuar con la bd. la Vista es simple de entender y el Controlador es entonces la clase intermedias entre la Vista y el Modelo.
A ver entonces quedaría así:

Vista
archivo.jsp
Controller
ClaseController.java
ClaseNegocio.java
Modelo
ClaseDAO.java

Pero en donde entrarian los Bean??
Objeto.java

Imagen de luxspes

El horror del desorden... / Busca mejores horizontes....

al parecer los servlets no los quieren usar(los jefes), según es más fácil si los omitimos solo puro JSP

El horror!!!!!!!

Veo... un pantano de código espagueti... mezcla de capas... el horror... el horror...

Aaaaaaaaaaiiiiiiiiiiiieeeeeeeeeeeeeeaaaaaaaaaaaaaaaarrrrrrrrrrrrrggggggggggggghhhhhhhhhhhhh!

Usen controladores Spring MVC si no quieren usar servlets.

Hagan caso de esta recomendacion, por lo que consideren mas sagrado!

Si de plano quieren todo el código en JSP, explícales amablemente que los jefes son jefes porque no se tienen que meter en esos detalles.

Definitivamente, hablenles de los riesgos de los leading requests! Comprenles el libro de Death March

Si insisten, es hora de desempolvar el CV y buscar chamba (supe que luxspes está buscando gente).

Si, ando buscando gente. En Extend yo fomento MVC, busco usar JPA o cuando menos Spring-JDBC si el cliente tiene ORM-fobia, fomento los unit-test, tenemos servers para hacer integracion continua, usamos Ant y Gradle, construimos nuestras aplicaciones por capa siguiendo una arquitectura organica buscando el balance entre YAGNI y OAOO. Podras jugar con JSON/Jackson en vez de vivir los horrores de XML, con Jasper Reportes en ves de sufrir el tormento de BIRT, usamos Eclipse, pero si tienes tu propia licencia de IntelliJ no hay problema y ando gestionando que ese se vuelva nuestro IDE oficial en el futuro, usamos la metodologia iterativa Scrum para llevar los proyectos, Tenemos acceso ilimitado a internet, y pagamos bien.... pero eso si, te hacemos trabajar duro.

Imagen de ezamudio

Gradle

Sólo están considerando ant o maven? Deberían considerar Gradle, o de perdida Ivy.. Aquí te dejo lo que dice el autor de Tapestry acerca de Gradle.

Imagen de luxspes

@AlexSnake: Que es un java bean

Pero en donde entrarian los Bean??
Objeto.java

Definicion de Java Bean (obtenida aqui):

Para funcionar como una clase JavaBean, una clase debe obedecer ciertas convenciones sobre nomenclatura de métodos, construcción, y comportamiento.
Estas convenciones permiten tener herramientas que puedan utilizar, reutilizar, sustituir, y conectar JavaBeans.
Las convenciones requeridas son las siguientes:
Debe tener un constructor sin argumentos.
Sus propiedades deben ser accesibles mediante métodos get y set que siguen una convención de nomenclatura estándar.
Debe ser serializable

Si siguen esas reglas, tanto tus clases a nivel modelo, como tus clases a nivel controlador, como las clases que uses en la vista, pueden ser "beans".

Yo lo

Yo lo pondría:
Vista
archivo.jsp
Controller
ClaseController.java ( un servlet por ejemplo )
Modelo
ClaseNegocio.java
ClaseDAO.java

Los beans son una convención donde una clase Java tiene getters/setters un constructor por default y no se cuantas cosas más, pero en sí son clases java normales.

Se puede hacer que cada registro de la bd sea un bean, también se les conoce como ValueObject ( VO ) o Data Transfer Object ( DTO ) donde el chiste es que solo sirven para transportar datos.

Imagen de Sr. Negativo

Re: Busca mejores horizontes

Nunca he manejado ningún Framework ni JPA , la verdad solo puro Serlvets y JSP con JDBC.

Ahora que dices sobre Eclipse y IntelliJ, pues estoy perdido. Solo he usado la consola para compilar los códigos y crear los jar. y escribo el código en el notepad.

Ni se hable de herramientas como Mercurial, Apache POI , etc. estoy perdido!!!!

Mejor suerte para la próxima.

Imagen de AlexSnake

No me explique.

@luxspes Gracias por la definición, pero en sí no preguntaba que era un JavaBean (aun que a decir vdd no sabía que podía ser cualquier clase si cumple con el convencionalismo), más bien tenia la duda que si tengo un objeto de tipo persona, articulo, etc. es parte del Controlador o del Modelo?
@OscarRyz exacto eso era lo que deseaba saber en cuanto a la estructura de clases un proyecto.

Imagen de Sr. Negativo

Exacto !!


Yo lo pondría:
Vista
archivo.jsp
Controller
ClaseController.java ( un servlet por ejemplo )
Modelo
ClaseNegocio.java
ClaseDAO.java

Los beans son una convención donde una clase Java tiene getters/setters un constructor por default y no se cuantas cosas más, pero en sí son clases java normales.

Se puede hacer que cada registro de la bd sea un bean, también se les conoce como ValueObject ( VO ) o Data Transfer Object ( DTO ) donde el chiste es que solo sirven para transportar datos.

Asi es!! @OscarRyz es precisamente eso

@Sr. Negativo :-O :-O Ya no

@Sr. Negativo :-O :-O Ya no uses notepad para trabajar es una abominación!

Hay muchos editores limpios y buenos para trabajar mejores que notepad. El primero que yo usé fue TextPad y era muy bueno no sé ahora.

Si intentas algún IDE te recomiendo intellj idea, debería de ser muy fácil para empezar, porque no te pide que hagas muchas configuraciones para empezar a usarlo, puedes simplemente usarlo como un editor de texto con vitaminas y conforme vayas descubriendo más cosas irlas usando.

Imagen de neko069

@Mr. Negative

Pues que bueno que te decidiste por un framework, ojalá que tus jefes no se pongan pesados, y como dice @Wishmaster, Wicket no es nada difícil...sé de la existencia de Vaadin, pero yo ya estaba muy metido en GWT desde la versión 1.5 y ahora con la versión 2 se me hizo fácil dar el salto, y con la integración de Smart Gwt pues se me ha hecho agradable.....
Si no tienes experiencia en ORM, éntrale por Spring JDBC como ya te hicieron mención, se te va a hacer muy natural, y pues mucha suerte..
@luxspes... se escucha muy bien tus propuestas... lástima, apenas hace semana y media acabo de firmar contrato.... ya será para la próxima...

Imagen de Sr. Negativo

Ya descargué IntelliJ IDEA

Voy a empezar a usarlo gracias.

Ahora a seguir con el proyecto

  • IDE:IntelliJ IDEA
  • SGBD:Postgresql
  • Generador de reportes en PDF:iText
  • Gráficas:JFreeChart
  • Gestor de proyectos:Maven
  • Framework:Tapestry
  • Controlador BD:JDBC
Imagen de bferro

Hablando de Java Beans y a propósito de Java FX

Los que diseñaron Java FX tuvieron la buena idea de introducir el binding de propiedades, que es algo que Flex y otras tecnologías para clientes ricos tienen desde hace rato.
De manera elegante permiten el binding entre propiedades de los objetos, manejando de forma implícita el disparo y procesamiento de los eventos, para lograr las dependencias entre propiedades y evitar de esta forma que el programador tenga que escribir boilerplate code.
El concepto es simple así como también el API.
Un ejemplo sencillo:
 

IntegerProperty es un valor observable (un sujeto), mientras que NumberBinding es un Binding que actúa como observador de un conjunto de valores. También es observable.

Imagen de luxspes

@Sr. Negativo: Revisando elecciones...

IDE:IntelliJ IDEA

Buena eleccion, pero recuerda que es de paga.

SGBD:Postgresql

Excelente eleccion!

Generador de reportes en PDF:iText

User iText directo es masoquismo. Usa JasperReports y diseña tus reportes en modo WYWYG usando IReports (Opensource y GRATIS!) (internamente, Jasper invoca a iText, pero te libras del horror de trabajar con iText directo)

Gráficas:JFreeChart

Si van a salir en tus reportes, es mas masoquismo. Usa JasperReports y diseña tus reportes en modo WYWYG usando IReports (Opensource y GRATIS!) (internamente, Jasper invoca a JFreeChart, pero te libras del horror de trabajar con JFreeChart directo)

Gestor de proyectos:Maven

Esto si ya es dolor mas alla de lo que puedas imaginar, el infierno es poca cosa... usa Gradle, Ant + Ivy o de aperdida copia los .jar en una carpeta y agregalos en el classpath usando un .bat, todo es mejor que el horror de Maven!!!!!

Framework:Tapestry

Excelente eleccion.

Controlador BD:JDBC

Usa Spring-JDBC, o sufre las consecuencias.

"IDE:IntelliJ IDEA" >>"Buena

"IDE:IntelliJ IDEA"
>>"Buena eleccion, pero recuerda que es de paga."

Ya no!

( bueno si, pero también hay una versión gratis )

Imagen de luxspes

IntelliJ: La version opensource no es nada frente a Eclipse

Ya no!

Okey,no fui preciso: IntellliJ es en mi opinion el mejor IDE, si usas la version de paga. Si usas la version opensource, para proyectos web, entonces esta tan limitado, que no le llega a los talones a Eclipse.

Imagen de Sr. Negativo

Re Ajuste

Siguiendo tus recomendaciones @luxpes

  • IDE:Eclipse
  • SGBD:Postgresql
  • Generador de reportes y gráficas: JasperReports
  • Gestor de proyectos:Ant/Gradle gracias @luxpes
  • Framework:Tapestry, leyendo los post de @ezamudio me parece excelente opción
  • Controlador BD:Spring-JDBC

Gracias por las sugerencias

Imagen de luxspes

@Sr. Negativo: Ajusta el ajuste, agrega Gradle

Gestor de proyectos:Ant

Agregale Gradle (checa los excelentes articulos de ezamudio al respecto) a la formula, en Extend usamos Ant para podernos integrar con herramietas (de integracion continua por ejemplo) que todavia no tienen soporte para Gradle, y desde Ant invocamos a nuestros scripts de Gradle, que son com 80% mas cortos y mucho mas faciles de leer que los que teniamos de Ant (se redujeron de 200 a 20 lineas!)

Por cierto...y se que quiza estoy jugando en la linea floja de los lineamientos, pero.. en Extend ofrecemos asesoria para ayudar a otras empresas a implementar estas tecnologias, si les interesa, podemos ayudarles.

Imagen de Sr. Negativo

Re ajustando

Gracias @luxpes:

IDE:Eclipse
SGBD:Postgresql
Generador de reportes en y gráficas: iReport /JasperReport

Gestor de proyectos:Ant/Gradle
Framework:Tapestry
Controlador BD: Spring JDBC

Re: IntelliJ: La version opensource no es nada frente a Eclipse

Depende...Por ejemplo en mi trabajo usamos IntelliJ IDEA Community y francamente no necesitamos más. Mira es sencillo, no trae tantos yuyos y hace lo que todo buen IDE debe hacer (code completion, syntax highlighting, integración con varios sistemas de control de versiones POR DEFECTO, etc). Otra cosa que me gusta de IntelliJ y que no me gusta de Eclipse, es que no tienes qué ir de página en página o de proveedor en proveedor buscando la dichosa liga para un plugin. En IntelliJ todos los plugins (o la gran mayoría) están en un repositorio de IntelliJ en el cual tu lo único que haces es: File => Settings => Plugins => Available => seleccionar plugin y listo. Lo que en Eclipse es ir al navegador, buscar por ejemplo m2Eclipse, copiar la liga y después: Help => Install software => Add => Pegar la liga y guardarlo con un nombre => Esperar los 2 minutos para que te devuelva una pequeña lista (de 30 elementos a lo más) => seleccionar lo que necesitas => dar aceptar => esperar a que calcule las 1000 y 1 dependencias necesarias, etc. etc.

Y pues yo creo que el punto que más se ha tocado últimamente de Eclipse ha sido el consumo de RAM al instalarle el WTP. Creo que francamente es penoso dicho desempeño y creo que se necesita mucha más RAM de la que yo utilizo con IntelliJ.

Otra cosa en contra de Eclipse (esto es la versión 3.6 y sólo lo he experimentado en Snow Leopard) es el problema para los que utilizamos subversion; puedo hacer checkouts y actualizaciones pero no puedo hacer commits (ya lo he probado con otras compus y pasa lo mismo), al parecer tienen un problema con el adaptador de JavaHL (problema que también se presenta en NetBeans) algo que no me ha pasado en IntelliJ.

Cosas en favor de Eclipse...La verdad que en la única cosa que creo que Eclipse es mejor que IntelliJ y eso no por Eclipse sino por su comunidad es la cantidad de plugins que te encuentras, francamente aunque creo que IntelliJ tiene los plugins más necesarios creo que no tiene algunos muy específicos que Eclipse si tiene.

Re: Re ajustando

Ese es el stack de todo programador Java à la old-school. Ese stack es más que probado, aunque en lo personal agregaría Ivy en lugar de Gradle, pero por cuestiones de experiencia mía (ya que si he usado Ivy pero no he usado Gradle). Y pues a ponerle al estudio y éxito en tu desarrollo.

Que comience la

Que comience la guerraaa!!!...

+1 de Intellj Los templates:  ,  ,  

:) :)

Nah.. la verdad es que cada quién se acomoda mejor en uno o en otro. No me parece que la versión open source de Idea sea taaaaan inferior a Eclipse pero claro quizá sea porque no le sé sacar el máximo desempeño a Eclipse.

Imagen de bferro

El lado oscuro de la fuerza: Eclipse +Visual Studio

Ya que se habla de IDEs, entre ellos Eclipse, quizá y encuentran interesante la noticia que su creador Erich Gamma acaba de unirse al team de Visual Studio. Esta es la nota de hace unos días en msdn:

Today I am thrilled to announce that Erich Gamma will be joining the Visual Studio team as a Microsoft Distinguished Engineer! Erich’s contributions have had a huge impact on the software industry. Erich has a passion for shipping high quality, elegant software, something he shared with the community as co-author of Design Patterns. He has always had a passion for building tools to make development more productive and pleasant. Together with Kent Beck he developed the JUnit unit test framework. He was one of the key technical leads of the Eclipse project and he has lead the Eclipse Java Development tools. Recently his focus was on making teams more effective. He was an initial member of the Jazz project and the technical lead of Rational Team Concert. Finally, Erich has worked to bring teams together across the application life cycle and he was the lead of Rational's Collaborative Lifecycle Management effort.

Erich will continue to live and work out of Zurich, Switzerland where we will be opening a small Visual Studio development lab with Erich as the lead. Erich will join the lab in early August. For those who are interested in applying for positions with the new Zurich lab you can send mail to CHDevDiv@Microsoft.com to get details.

The Visual Studio team is passionate about inspiring developers to create great software. We want to make developers successful and enable them to continuously deliver value. We are constantly looking for better ways to accomplish these goals. I’m very excited to have someone like Erich who shares our passion join the team. Please join me in welcoming Erich to the Visual Studio team!

Imagen de Jvan

El gusto se rompe en generos!

El gusto se rompe en generos! pero lo que comentas con Eclipse y sus detalles de SVN en mi caso no hemos tenido esos problemas, lo que si es cierto es que Eclipse gasta muchos recursos y conforme lo vas vitaminando con plugins se hace mas y mas lento, lo que comentas de tener que buscar un plugin, agregar la url, bajarlo, etc. pues si lo ves desde el punto de vista de que hay una gran diversidad de plugins hechos para Eclipse pues si es una ventaja, supongo que los de IntellijIDEA son plugins que pasan por varios pasos para que puedas publicarlos en el sitio de IDEA la verdad desconozco pero estoy seguro de que hay muchisima mas variedad de plugins en Eclipse que en IDEA.

También utilizamos Netbeans y es bueno, no llega a ser tan tedioso como Eclipse a excepción de si tienes muchos proyectos abiertos empieza a buscar periódicamente referencias de tus .jar y eso hace que se vuelva lento.

Yo creo que será difícil decir que un IDE es mejor que otro, mas bien dependerá de los gustos de cada persona y como te sientas mejor, yo solo una vez probé Intellij IDEA la versión gratuita y a mi gusto le faltó más power, supongo que la versión de paga a de ser mucho más completa, pero no pienso pagar por algo que me puede proveer Eclipse o Netbeans sin problemas.

Imagen de ezamudio

STS

Si consideran muy latoso estar buscando plugins de Eclipse, pueden usar STS que prácticamente lo mismo que Eclipse, nomás verde con la hojita de Spring, y tiene un buscador de plugins muy bueno ya integrado.

Imagen de ezamudio

En cuanto a IDE's

Recientemente empecé a usar Gradle para poder hacer compilación multiproyecto (cosa que con Maven se puede pero es una verdadera pesadilla), y también he estado aprendiendo y desarrollando ya algunas cosas con Grails.

Cuando aprendo alguna cosa nueva como esto de Grails, prefiero no usar plugins, y de preferencia ni IDE, precisamente porque no quiero que me autocomplete nada, de modo que tengo que estar usando la documentación, lo cual me sirve para dos cosas: aprender más (porque se me quedan pegadas más cosas al estar buscando lo que necesito en la documentación), y revisar la calidad de la documentación (a ver qué tan fácil es encontrar lo que necesito y si viene bien explicado, etc).

Cuando hice esto, estuve usando jEdit, es cuando más lo he usado (ya lo había usado para algun script rápido o editar un XML de repente), y me pareció muy buen editor, tiene muchas monerías que uno luego ni se imagina, varios plugins (incluyendo uno para Groovy). Solamente era la lata de estar abriendo archivos que en los proyectos Grails están en varios jerarquías separadas y por lo tanto la navegación puede ser algo engorrosa, pero ya luego si tengo tiempo haré un plugin para jEdit que resuelva eso, aunque primero tengo que pensar en la GUI y cosas así.

Para Gradle de plano estuve usando vi, así que estuve trabajando en una terminal, y pues los .gradle ni siquiera les puse coloreado de sintaxis (se lo puedo configurar a vi, que use las mismas reglas que para Groovy, pero pues a fin de cuentas no fue necesario).

En general, me parece bueno que estas herramientas nuevas nos permitan hacer las cosas de manera más simple: ya no tuve que abrir Eclipse, meterle no sé cuántos plugins, etc para poder hacer una aplicación web usando Grails; con un simple editor de texto lo pude hacer, porque la interfaz de línea de comando de Grails está bastante completa, la documentación es de muy buena calidad.

Todo esto me ha puesto a pensar que si las herramientas que estamos usando requieren forzosamente un entorno tan pesado como Eclipse con varios plugins para que podamos ser productivo utilizándolas, creo que algo está mal, aunque todavía no sé exactamente qué.

Re: El gusto se rompe en generos!

pero lo que comentas con Eclipse y sus detalles de SVN en mi caso no hemos tenido esos problemas...

¿También trabajas sobre OS X Snow Leopard? ¿Y te funcionó sin más?

Respecto al resto, si tienes razón, acá en mi trabajo hemos encontrado una buena dinámica para usar IntelliJ IDEA sin necesidad de comprar la versión Ultimate. Cómo bien dices ya depende de cada quién cómo se adapte, para unos lo que es simple no lo es para otros ;).

Re: STS

Pero también es mucho más pesado y consume más recursos de los que ya consume Eclipse solito (sin la hojita de Spring xD!), aunque lo probé hace cómo un año mientras hacía unos experimentos en Roo, fuera de ahí no lo he vuelto a utilizar (por la impresión de lento y pesado que lo sentí).

Re: En cuanto a IDE's

Todo esto me ha puesto a pensar que si las herramientas que estamos usando requieren forzosamente un entorno tan pesado como Eclipse con varios plugins para que podamos ser productivo utilizándolas, creo que algo está mal, aunque todavía no sé exactamente qué.

Exacto, la única razón por la que a día de hoy uso IntelliJ es porqué no he encontrado la manera de ligar (de nuevo, achaco el problema a OS X Snow Leopard) Textmate con Subversion y Play!. Aunque hay veces (probablemente no me lo crean) que en mi día de trabajo mis herramientas son Terminal + Textmate; cualquier IDE cómo tal por más rápido que sea tarda mucho más en abrir que la Terminal y Textmate.

La productividad con los IDEs creo que está sobrevaluada, porqué de verdad que hay veces que mis compañeros de trabajo (con cualquier IDE, sea Eclipse, Visual Studio, PyDev, C++ Builder, etc.) han hecho las cosas a veces tan rápido cómo yo las hago. Claro que ha habido unos que son pero que si masters usando las herramientas, pero regresamos a problemas antes hablados: Sin herramienta, ¿serán verdaderamente capaces y se adaptarán a la otra herramienta que probablemente es menos cutre o "esotérica"? (véase esta imagen).

Imagen de luxspes

IntelliJ Free > Eclipse JDT / IntelliJ Free < Eclipse J2EE

Otra cosa que me gusta de IntelliJ y que no me gusta de Eclipse, es que no tienes qué ir de página en página o de proveedor en proveedor buscando la dichosa liga para un plugin.

Sera por que Eclipse tiene millones de plugins (gratis) mas?

Otra cosa en contra de Eclipse (esto es la versión 3.6 y sólo lo he experimentado en Snow Leopard) es el problema para los que utilizamos subversion; puedo hacer checkouts y actualizaciones pero no puedo hacer commits (ya lo he probado con otras compus y pasa lo mismo), al parecer tienen un problema con el adaptador de JavaHL (problema que también se presenta en NetBeans) algo que no me ha pasado en IntelliJ.

Solo para la minoria planetaria que usa Mac ;-). Yo soy feliz con Windows y Linux muchas gracias... aunque si me regalas una Mac, te la acepto ;-)

Cosas en favor de Eclipse...La verdad que en la única cosa que creo que Eclipse es mejor que IntelliJ y eso no por Eclipse sino por su comunidad es la cantidad de plugins que te encuentras, francamente aunque creo que IntelliJ tiene los plugins más necesarios creo que no tiene algunos muy específicos que Eclipse si tiene.

Que plugin de la version free de IntelliJ hace lo que hace WTP? (Ninguno que yo sepa)

Por otro lado si efectivamente no quieres la parte WTP de Eclipse, y la comparacion es solo Eclipse JDT vs IntelliJ, debo admitir que IntelliJ se ve mas atractivo (pero yo si soy usuario de WTP).

Imagen de luxspes

vi, muy bonito, y poderoso, pero vi, no para mi

Para Gradle de plano estuve usando vi, así que estuve trabajando en una terminal, y pues los .gradle ni siquiera les puse coloreado de sintaxis (se lo puedo configurar a vi, que use las mismas reglas que para Groovy, pero pues a fin de cuentas no fue necesario).

vi...vi... vi es el area en donde quiza nunca pueda alcanzar a ezamudio... hasta cuando paso mis ratos libres aprendiendo haskell prefiero algo comodo como Komodo Edit... vi nomas no es para mi... ;-)

Imagen de luxspes

IDEs: La vida no te premia por complicarte la vida gratis

La productividad con los IDEs creo que está sobrevaluada, porqué de verdad que hay veces que mis compañeros de trabajo (con cualquier IDE, sea Eclipse, Visual Studio, PyDev, C++ Builder, etc.)

De tu comentario, puedo solo concluir que has explotado poco a los IDEs mas avanzados del mundo moderno. Te reto, por ejemplo a jugar carreras con un experto en Silverlight. El puede usar Microsoft Expression Studio + y Visual Studio 2010 Ultimate, tu, puedes usar IntelliJ Free y llamar usando gradle al compilador free de Flex. Ambos tienen que crear una aplicacion interactiva, que permita efectuar ABC sobre el modelo minimo, ambos tienen que guardar en Oracle, y ser invulnerables a SQL Injection. Ambos tienen 30 minutos, a ver que te tan lejos llegan (nota: no mas en crear el proyecto, ya llevas una desventaja de al menos 15 minutos, aun si te dejara usar FlexBuilder)

han hecho las cosas a veces tan rápido cómo yo las hago. Claro que ha habido unos que son pero que si masters usando las herramientas, pero regresamos a problemas antes hablados: Sin herramienta, ¿serán verdaderamente capaces y se adaptarán a la otra herramienta que probablemente es menos cutre o "esotérica"?

O mejor aun, tu puedes usar TextPad y el stack de frameworks opensource que gustes, y tu competidor puede usar Lightswich... ambos tienen 1 hora para construir la aplicacion un modelo minimo. A que no le ves ni el polvo al dev usando Lightswich.

Al final, afuera, en el mundo real, por mucho que a veces a mi tampoco no me gusta, lo que cuenta es sacar la chamba. nada mas. Nadie te va a dar un premio por complicarte la vida haciendolo del modo dificil si podias hacerlo del modo facil.

Re: IntelliJ Free > Eclipse JDT / IntelliJ Free < Eclipse J2EE

Pues los plugins de IntelliJ IDEA son gratis (o no me ha tocado ver plugins de pago). Todo lo de más de acuerdo hasta lo de WTP. Pues permiteme decirte que en la versión comunitaria de IntelliJ IDEA no necesita un plugin extra para poder leer un JSP o un CSS o un Javascript (lo que Eclipse no tiene por defecto), de igual manera proyectos con Wicket o cualquier otra tecnología que use Maven o Gradle o Ant no tiene mayor problema, abre los proyectos sin más (incluso hasta trae code completion para jQuery), lo que en Eclipse...

En fin en mi experiencia, quizás haya funcionalidades específicas de WTP que no encuentre en IntelliJ (mencionar algunas de ser tan amable que de momento no se me ocurre alguna) pero yo no he echado nada de menos.

Imagen de luxspes

Por favor pasame las ligas de tus plugins para IntelliJ

Pues los plugins de IntelliJ IDEA son gratis (o no me ha tocado ver plugins de pago). Todo lo de más de acuerdo hasta lo de WTP. Pues permiteme decirte que en la versión comunitaria de IntelliJ IDEA no necesita un plugin extra para poder leer un JSP o un CSS o un Javascript (lo que Eclipse no tiene por defecto),

A vaya... osea que IntelliJ Free tiene syntax coloring en JSP o un CSS o un Javascript (como Eclipse J2EE?) y tiene un editor visual para JSP (como Eclipse J2EE?).

Y donde consigo esos plugins? por que segun esta liga, IntelliJ community no tiene eso que dices.

de igual manera proyectos con Wicket o cualquier otra tecnología que use Maven o Gradle o Ant no tiene mayor problema, abre los proyectos sin más

(incluso hasta trae code completion para jQuery), lo que en Eclipse...

De nuevo, segun esta liga, no es asi, pero me encantaria saber donde puedo obtener ese plugin para IntelliJ

En fin en mi experiencia, quizás haya funcionalidades específicas de WTP que no encuentre en IntelliJ (mencionar algunas de ser tan amable que de momento no se me ocurre alguna).

Ya lo hice.