¿Debo usar Ruby o Java para aplicaciones web en la nube?

Una de las mejores cosas de una “aplicación web en la nube” es que se ejecuta en el entorno que establezca y sea accesible para el mundo (o sus usuarios) a través de protocolos estándar como HTTP, HTTPS, JSON, SOAP (* shudder *), etc. Por lo general, publica una API para la interacción programática y este se convierte en el punto de interacción con el mundo exterior. Por ejemplo, Twitter tiene una API que permite a los usuarios usar su idioma de elección para interactuar con el servicio e incluso ha comenzado a usar esta API para Twtter.com en lugar de tener una capa de aplicación nativa fuera de su API (esto se llama Nuevo Twitter interfaz).

Por lo tanto, puede usar cualquier idioma que se ajuste a sus necesidades. En realidad, esto no es nuevo para “Cloud Web Apps”, pero ha sido un hecho desde que la WWW comenzó a popularizarse. De hecho, uno de los primeros éxitos en el desarrollo de aplicaciones web fue iniciado por Paul Graham y vendido a Yahoo! para convertirse en Yahoo! Almacenar. Fue escrito en LISP. Como Paul y su equipo estaban familiarizados con LISP, pudieron ser extremadamente eficientes al agregar funciones y eliminar errores. Lea más sobre esta “arma secreta” aquí: http://www.paulgraham.com/avg.html. Ahora, si usara LISP, todavía estaría trabajando en una aplicación web “Hello World” :).

Al elegir una plataforma de desarrollo web, tenga en cuenta lo siguiente:

  1. Las fortalezas de su equipo actual: ¿qué idiomas conoce bien?
  2. La comunidad en torno al idioma: ¿están sus participantes activos haciendo cosas similares a usted? ¿La comunidad está dispuesta a ayudarse mutuamente?
  3. Bibliotecas para realizar tareas comunes de aplicaciones web: Perl con CPAN fue una bendición para el desarrollo web temprano. Hoy las gemas de Ruby están preparadas para superar en número a la amplitud de módulos disponibles en CPAN (leí esto en Slashdot recientemente; suena bastante cierto *)
  4. La prevalencia de la experiencia con el idioma en la fuerza laboral que lo rodea: cuando su equipo crezca, ¿puede encontrar empleados calificados de manera rápida y razonable? Esto fue citado como la razón principal por la que varias grandes compañías web cambiaron de C o Perl a PHP a principios de la década de 2000.
  5. Comercialización: lamentablemente, la elección del idioma es importante para algunos tomadores de decisiones, como grandes clientes o inversores. Digo “tristemente” porque siempre que los 4 elementos anteriores se gestionen correctamente, la elección del idioma y la plataforma es irrelevante.

Oh, lo olvidé. También debe considerar el costo del conjunto de herramientas de la plataforma de idiomas. Lo creas o no, hay algunos conjuntos de herramientas que cuestan dinero. Es sospechoso que ofrezcan ventajas reales sobre las alternativas de código abierto en 2011, pero estos retrasos en el desarrollo de código cerrado pueden satisfacer mejor sus necesidades, por lo que debe considerar este costo.

Nota: algunos discutirán sobre los beneficios de velocidad de varios idiomas / plataformas que promueven. Acelere uno o más de ejecución, desarrollo, implementación o escalabilidad (por ejemplo, se dice que Haskell es una maravilla para el escalado). La verdad es que si cuida los 4 elementos anteriores, su plataforma puede optimizarse para funcionar bien. También es cierto que asumir una plataforma de desarrollo desconocida para obtener un beneficio percibido probablemente resulte contraproducente en una de estas áreas de “velocidad”.

* El conteo del módulo Ruby Gems pronto para superar las CPAN: http://developers.slashdot.org/s…

En resumen, debe usar el idioma con el que usted o su líder técnico y equipo se sientan más cómodos en el proyecto.

Como desarrollador, debe pensar no en términos del lenguaje (presumiblemente conoce uno o ambos, y no necesita que le digamos que use lo que le resulte más cómodo), sino las herramientas y el ecosistema de implementación en todo el entorno. idioma, y ​​cómo todo se une para permitir su proyecto. Diferentes herramientas permiten mejor diferentes tipos de proyectos.

Cualquier herramienta puede ser mal utilizada para construir basura en las manos equivocadas.

Esta pregunta es mejor respondida por alguien que ya siente apasionadamente que sabe la respuesta. Su líder técnico debe asumir la responsabilidad de esta decisión y construir su equipo en torno a sus puntos fuertes en el dominio de su idioma de elección.

¡Buena suerte!

Estoy de acuerdo con las sugerencias anteriores, use lo que usted y su equipo se sientan cómodos. Sin embargo, un buen software se puede escribir en cualquier idioma, tengo que admitir que Java tiene un conjunto de herramientas más rico y hay algo que decir sobre la escritura fuerte (como un plus para un cambio).
Si te sientes cómodo con Java y quieres algo un poco más moderno y ágil, prueba Groovy. Es un placer de usar, basado en JVM, e incluso tiene Grails como respuesta a Rails y alternativa a Hibernate.