¿Cuándo es Java una buena opción para el desarrollo web? [cerrado]

35

¿Cuándo es Java una buena opción para el desarrollo web?

No diga "Cuando tiene un equipo de desarrollo que solo conoce Java".

Gulshan
fuente
55
Se puede preguntar, ¿qué característica hace que Java sea mi lenguaje de desarrollo web?
Abimaran Kugathasan
1
Una ligera desventaja del uso de Java es la falta de un marco dominante de facto en el mercado. Ningún marco basado en Java realmente ha subido a la cima de la pila todavía (como Struts lo había hecho en el día). Personalmente, me inclino por Spring MVC si estoy trabajando con una aplicación Spring o Grails para cualquier otra cosa (como puede llamar a Java en cualquier momento).
Martijn Verburg
De repente obtuve 25 puntos de esta pregunta!
Gulshan
¿Estamos teniendo en cuenta el software de código abierto existente?
jonathan
2
"como Struts tenía en el día": ¿Qué hay de malo en usar struts hoy (aparte de que ya no está de moda)?
Giorgio

Respuestas:

35

Dados los muchos marcos disponibles, la madurez de la plataforma, etc., me siento tentado a decir "casi siempre". Aquí hay algunas razones por las que no debe usar Java:

  • como una tienda de MS pura, probablemente prefieras hacerlo de la manera .net
  • si necesita el webhoster más barato posible, probablemente solo tenga PHP como su elección
  • si quieres hacerlo lo más rápido posible, Ruby on Rails, Grails o Django probablemente sean más adecuados para tus necesidades
  • si su equipo de desarrollo solo conoce XYZ, donde XYZ! = Java, es mejor que use XYZ
usuario281377
fuente
77
Por lo tanto, usamos Java si no somos una tienda de MS, tenemos la intención de gastar dinero para el alojamiento, tenemos suficiente tiempo para desarrollar usando Java y tenemos desarrolladores de Java. ¿Está bien?
Gulshan
Gulshan: sí, puedes decirlo así
usuario281377
3
Hay muchas otras razones como Es hinchada, empresarial y es Java (la última puede ignorarse si usa Scala o algo más para la JVM).
Raynos
1
@Raynos, ¿entonces recomiendas qué?
2
@ ThorbjørnRavnAndersen realmente depende de cuáles son los requisitos. Si los requisitos son genéricos (no específicos), utilice la plataforma que sea más conveniente para sus desarrolladores y servidores.
Raynos
19

Java se usa en sitios web pequeños y medianos. El punto crucial es que hay mucho menos alojamiento web gratuito para sitios web Java que para, por ejemplo, PHP, lo que significa que, a menos que tenga suficientes recursos para alojar su propio servidor web, probablemente no elija Java.

Tenga en cuenta que con Java EE 6, especialmente el perfil web, hay muchas tecnologías estándar incluidas que pueden crear aplicaciones web muy potentes sin tener que codificar mucho. Desafortunadamente, todavía no es una corriente principal.

Tenga en cuenta que esto ha cambiado algo recientemente con Google Application Engine, que le permite implementar aplicaciones web Java estándar (con algunas restricciones) en la nube de forma gratuita para sitios de tráfico bajo a medio.

usuario1249
fuente
En todos los casos, no alojaré mi sitio web en un alojamiento web gratuito. Pero la pregunta ¿hay algún problema con el alojamiento web de Java de pago? ¿Es muy costoso por ejemplo?
Goma
1
@saeed, no como tal. La mayoría de las personas solo optan por la opción más barata y codifican en consecuencia.
¿Jave es mucho más caro que otros, por ejemplo? ¿hay un hosting compartido para java?
Goma
@Saeed, existen algunas razones técnicas por las que no puede agrupar tantas JVM en un solo cuadro de Linux o Windows como puede crear instancias LAMP compartidas, lo que implícitamente significa que una JVM alojada es más costosa que una LAMP alojada. Google usa una JVM diferente, lo que significa que puede ofrecerla de forma gratuita.
@ Thorbjörn: ¿Tienes algún enlace sobre cómo lo hace Google? He oído que usan Jetty, pero no sé mucho más sobre su solución.
Jonas
12

Cuando su plataforma es UNIX / Linux y necesita un amplio conjunto de herramientas, tales como mapeo de objetos / relacionales, seguridad, orquestación compleja de servicios web, etc.
(No estamos hablando de sitios web simples, ¿verdad?)

revs Sorantis
fuente
1
También puede obtener estas cosas de los lenguajes de secuencias de comandos: consulte Python y SQLAlchemy. Incluso Rails usa un ORM (ActiveRecord) y tiene buena seguridad.
Brian D.
3
De hecho, pero no creo que sean tan poderosos como los marcos Hibernate, Spring Framework, BPEL.
Sorantis
1
¿Qué pasa con Java en no UNIX / Windows?
Tom Hawtin - tackline
2
Nada. Pero en Windows tienes .NET
Sorantis
2
-1 Estás haciendo que parezca que cualquiera de las alternativas no tiene herramientas decentes disponibles.
Raynos
9

Cada vez que otro equipo de Java me molesta, me desahogo al buscar preguntas como esta. Déjame reiterar. Soy un desarrollador del lado del cliente y lo he sido por casi 5 años. He trabajado en sitios que van desde micrositios únicos de contenido en su mayoría, a sitios tan masivos como Sears, a sitios de tipo de aplicación más sofisticados donde se necesita una experiencia de IU realmente profunda. He tratado con Rails, PHP, formularios web .net (ew), .net MVC (mucho mejor) y un arreglo de soluciones Java para el desarrollo web acompañado por desarrolladores y equipos que han sido un completo desastre para tratar. También escribo un poco de Python y estoy empezando a cavar Django.

Mi experiencia con los equipos de Java ha sido universalmente horrible. Las herramientas son siempre una PITA. Los desarrolladores nunca quieren creer que hicieron algo mal y lograr que reinvestiguen su propio territorio una vez que hayas descartado un problema de tu parte es como tirar los dientes. La primera víctima de tratar con equipos Java en mi experiencia es el tiempo de desarrollo convertido en tiempo de correo electrónico escribiendo múltiples explicaciones largas de por qué el problema definitivamente está de su lado. El HTML generalmente no es su problema a menos que realmente desee algún control sobre él. Entonces es probable que todo se vaya al infierno porque realmente quieres mover algunas divisiones de nivel superior.

Hay cosas sobre el idioma que no me gustan, pero creo que el verdadero problema es la cultura y el hecho de que la aceptación es tan generalizada que tienes un montón de mediocridad en el medio. La cultura que sospecho surge de la forma en que se comercializa Java. Escriba una vez, despliegue en todas partes. Traducción: "¡Solo necesitas aprender una cosa!" Las personas que encuentran eso atractivo básicamente quieren usar Java como un martillo gigantesco para cada clavo con un mínimo de perfeccionamiento de su oficio en lo que respecta al desarrollo web.

Entonces, si tiene desarrolladores que conocen Java y otros lenguajes pero aún así prefieren Java, diría que sí, continúe si parece la solución correcta. Pero si tiene desarrolladores de Java que conocen Java y todo lo demás apenas cumple con los criterios para convertirlo en una viñeta en su currículum, pídales que construyan una aplicación simple con una variedad de páginas semi complejas en el extremo HTML e intenten esto prueba simple Romper un poco de HTML. Intenta hacer que descubran lo que está mal. Si el problema inmediato que comienzan a resolver es desviar la culpa de ellos mismos, manténgalos alejados del desarrollo web. Web dev es multidisciplinario y requiere un interés activo en el campo para tener éxito. No es un lugar para personas que solo quieren mantener el conocimiento de un idioma y están más horrorizados por los problemas que interesados ​​en resolverlos.

No estoy afirmando que Java sea la raíz de la incompetencia y he oído que Spring es buena. Estoy seguro de que hay equipos competentes de Java por ahí. Simplemente no me he encontrado con uno todavía y no creo que sea una coincidencia. Creo que Sun tiene mucho que ver con eso. También creo que dirigir equipos web como o bajo departamentos de TI tiene mucho que ver con eso.

revs Erik Reppen
fuente
1
Tengo los mismos problemas que usted describe, pero nunca pensé que podría depender del lenguaje de programación. ¿Crees que las personas que programan, por ejemplo, PHP, son más abiertas y flexibles?
Виталий Олегович
PHP es 100% sobre el desarrollador y menos sobre una cultura que lo rodea. No me encanta su falta de coherencia en el núcleo, pero confiaría en el trabajo de un equipo PHP de nivel medio para el desarrollo web de una manera en la que no confiaría en un equipo Java. Ayuda que sea poco probable que un desarrollador de PHP con experiencia haya trabajado con otra cosa que no sea la web y es probable que haya sido contratado por experiencia sobre títulos / credenciales. El problema de Java podría deberse en parte a la rigidez inherente del lenguaje, pero honestamente creo que se trata más de la naturaleza de cómo se entrenan los desarrolladores de Java, se adoptan soluciones de Java y se contratan a los desarrolladores de Java.
Erik Reppen
1
@Erik Reppen: Creo que está generalizando en exceso su experiencia: no creo que los equipos Java sean peores que los equipos que trabajan en otros idiomas o, al menos, no peor que el promedio. Conozco dos tiendas muy buenas que trabajan mucho con Java. El primero, realiza proyectos en Java y en Ruby (alrededor del 50% cada uno). El segundo funciona principalmente en Java, pero ha realizado proyectos individuales en Scala y Common Lisp.
Giorgio
@Giorgio Me perdí esto, pero he trabajado con otras personas que manejan el back-end a través de .NET, Rails, Java y PHP. No estoy contando experiencias únicas con otros idiomas y los desarrolladores basura no son exclusivos de Java. Además, como dije, estoy 100% seguro de que existen equipos Java muy competentes. Alguien tiene que no apestar, pero en mi opinión, no estoy generalizando demasiado. Hay un problema con los desarrolladores de Java en el nivel medio. Es un fenómeno cultural en mi experiencia. Tan desagradable que he dejado de trabajar con tiendas Java a menos que conozca a los desarrolladores en cuestión.
Erik Reppen
5

Java está perfectamente bien para sitios web pequeños. Puede hacer que las páginas JSP funcionen muy rápidamente con un servidor web Java como Tomcat , por ejemplo.

Aunque, en mi experiencia, Java es más común para sitios web grandes donde existe una mayor necesidad de procesamiento complejo del lado del servidor; en este caso, encontrará marcos Java más sofisticados, como JavaServer Faces (JSF).

Es importante tener en cuenta que una instalación completa de Java históricamente no estaba disponible en muchas configuraciones de alojamiento web baratas, por lo que puede explicar la prevalencia de otros lenguajes como PHP en estos entornos.

mikera
fuente
¿Esto significa que alojar aplicaciones web Java es demasiado costoso? ¿o no es tan barato como PHP, por ejemplo? ¿Me puede dar un buen enlace de host weh para Java para que pueda ver los precios? Hice una búsqueda, pero no sé cuál tiene los precios estándar, así que puedo tener una idea general al respecto.
Goma
1
alojar aplicaciones web Java no es costoso, solo necesita un proveedor de alojamiento que le permita ejecutar aplicaciones Java. Cualquier entorno de alojamiento de Linux en el que obtenga una cuenta de inicio de sesión en la máquina estará bien: yo personalmente uso Ubuntu en Amazon Web Services para mi alojamiento de Java.
mikera
2

Las razones principales para usar Java en el desarrollo web se reducen a lo siguiente:

  • El cliente lo exige. Para bien o para mal, algunos clientes tienen "listas de tecnología aceptadas", y si propone algo que no está en esa lista, será mejor que tenga una muy buena explicación de por qué, y por qué algo en la lista no se puede usar.
  • Desarrollar en Windows, implementar en Unix. La mayoría de las máquinas de desarrollo son Windows, algunas son Mac y muy pocas son Linux, tal como cabría esperar con las máquinas cliente normales. Sin embargo, en el servidor, es tan probable que vea algún tipo de Unix como un servidor de Windows. Java es probablemente el más cercano para escribir una vez que se implementa en cualquier lugar (no es perfecto, pero es mejor que algunas alternativas).
  • Elección de gestión. Seamos realistas, elegir Java en lugar de otro idioma tendrá más que ver con la posibilidad de encontrar programadores y reemplazar a los miembros del equipo que abandonan el proyecto que estar basados ​​únicamente en los méritos del lenguaje.
Berin Loritsch
fuente
Acerca del n. ° 2: configure su IDE correctamente. Eclipse tiene esta estúpida idea de usar una codificación de archivo Windowish que puede causar estragos en un servidor Linux.
Eldelshell
En realidad, me refería a suposiciones sobre dónde viven ciertos archivos y cada vez que tiene que interactuar con el sistema operativo.
Berin Loritsch
"C es probablemente el más cercano para escribir una vez que se implementa en cualquier lugar" Lo arreglé para usted.
Raynos
@Raynos, si eso fuera cierto. Desafortunadamente, a menos que tenga las mismas bibliotecas estándar en todas las plataformas, eso no puede ser cierto. El lenguaje central de C es muy portátil, te lo doy. Sin embargo, cualquier cosa que sea específica del sistema operativo (como crear un subproceso, abrir un socket o crear un elemento de la interfaz de usuario) tiene algo en la API que no se puede portar con una simple recompilación. Con Java, no es necesario volver a compilar, y mucho menos cambiar el código para usar la nueva API del sistema.
Berin Loritsch
@BerinLoritsch, ¿quiere decir que después de 40 años no tenemos API genéricas para cosas específicas del sistema operativo que simplemente funcionan multiplataforma con una simple nueva compilación? Sin embargo, puedo imaginar que sea cierto en los años 80.
Raynos
2

Tecnicamente hablando:

  • Si puede definir una arquitectura que sea compatible con el optimizador de puntos calientes.
  • Si anticipa la necesidad de la sobrecarga masiva de OO que impone Java.

Si estuviera iniciando una aplicación web, usaría Ruby on Rails y diseñaría de tal manera que los puntos de acceso pudieran cambiarse cuando RoR alcance su límite de escala de rendimiento.

Java tiene un olor definido a COBOL y "los codificadores de gama baja usan Java", y los fiascos de Oracle no están ayudando a la reputación. Si tiene la opción , elija un idioma que atraiga a los mejores desarrolladores.

Paul Nathan
fuente
"elige un idioma que atraiga a los mejores desarrolladores". ¿Ejemplo?
Eldelshell
1
@Ubersoldat: Go, Ruby, Clojure, Haskell, Python, todos son lenguajes que hacen eso.
Paul Nathan
Python es bueno porque en realidad tiene éxito en muchas de las cosas que Java pretende. Y no es difícil hacerlo jugar bien con los demás cuando debes resolver un problema con algún otro idioma. No sé acerca de Ruby, pero los desarrolladores de Rails son algo así como una basura en mi experiencia. Es el efecto JQuery. A las personas que saben lo que están haciendo les gusta porque es rápido y efectivo en las manos adecuadas. A las personas que no saben lo que están haciendo les gusta porque no tienen que saber tanto.
Erik Reppen
@Erik Reppen: Por otro lado, Ruby como lenguaje tiene un diseño más agradable y más consistente que Python. Realmente creo que la comparación de estos idiomas es a menudo una cuestión de gustos y uno tiende a favorecer los idiomas con los que están más familiarizados.
Giorgio
0

Es simple: usar Java cuando el rendimiento del back-end es una preocupación importante. Hay más sobrecarga al codificar, pero el código se ejecutará en 1 / 200th a 1 / 500th del tiempo, literalmente. Php, Ruby y otros lenguajes de tipo dinámico siempre serán mucho más lentos que los servidores java o .net.

La mayoría de las soluciones para la web no necesitarán esto. Twitter no abandonó a Rails hasta que comenzaron a alcanzar su popularidad, por ejemplo.

Rian Fowler
fuente
-1

No es la única razón, pero con la creciente popularidad de la creación de sitios web con aplicaciones sofisticadas como front-end y al mismo tiempo tener lógica haciendo 'cosas' en el servidor, no debería ser necesario explicar por qué Java es al menos igual a cualquier otro opción en el servidor final. Pero en el extremo del cliente, si cualquier javascript se convertirá rápidamente en una pesadilla de mantenimiento de código y al usar GWT para mantener esas cosas al alcance de la mano para que pueda codificar en Java, puede tener lo mejor de ambos mundos con su servidor haciendo el trabajo pesado y el procesador de un cliente dándoles la 'experiencia'. Aprende a integrarlo con algo como jQuery y también puedes tener todos los dulces que quieras.

No hay ningún tipo de experto en las alternativas, pero si alguien más puede presentar una con el mismo tipo de flexibilidad y amplitud, me alegra saberlo.

nomaderWhat
fuente
1 de jQuery :)
Abel
2
-1 para "JavaScript se convierte en una pesadilla de mantenimiento de código", esto es simplemente un efecto secundario de permitir que los desarrolladores de Java escriban JavaScript sin ningún tipo de entrenamiento o aprendizaje de JavaScript. y la principal desventaja de GWT es que es una abstracción permeable, buena suerte para que funcione bien en dispositivos móviles.
Raynos
El problema con la rigidez de Java, IMO, es que terminas con una gran cantidad de desarrolladores que no entienden por qué su código está organizado a la fuerza como está en primer lugar. Cuando todo debe parecerse a OOP, a veces el resultado inevitable es que nada lo es realmente.
Erik Reppen el
-1

La razón principal por la que elegiría Java es si necesita utilizar transacciones distribuidas, lo que puede ser una gran preocupación para muchas corporaciones. Sin embargo, aún puede usar su lenguaje de secuencias de comandos favorito para el desarrollo web, y solo delegar el trabajo a Java cuando necesite transacciones rápidas / distribuidas.

Brian D.
fuente
-1

Creo que sería cuando su aplicación va a ser muy compleja, con muchas personas desarrollándola, con muchos módulos complejos, lógica empresarial compleja y tiene que comunicarse con muchas otras aplicaciones empresariales.

De todos modos, también podría desarrollarse en Grails, que proporciona muchas características agradables, facilita mucho el desarrollo y está madurando muy rápido.

Eldelshell
fuente
-1

Java está bien, pero si el rendimiento no es crucialmente importante, puede obtener los mismos resultados con menos esfuerzo en otros idiomas.

Kevin Cline
fuente
2
"el rendimiento no es crucialmente importante" cuando se debe escribir en C y ensamblar, no en Java.
Raynos
Los puntos de referencia frente a la experiencia, los sitios Java han sido, sin lugar a dudas, los de peor desempeño en mi experiencia como desarrollador del lado del cliente. Sin embargo, eso puede ser un problema de nivel de talento medio más que una cuestión de lenguaje.
Erik Reppen
2
@ErikReppen: Definitivamente una cosa de talento. La velocidad de Java en un servidor es solo superada por C / C ++. PHP o Rails simplemente no se pueden comparar. Pero las bibliotecas de Java y algunas de las herramientas hacen que sea demasiado fácil perder toda esa velocidad haciendo cosas inútilmente complicadas.
Zan Lynx
-1

Java es un lenguaje de tipo estático y es más barato que los otros lenguajes de tipo estático utilizados para el desarrollo web, a saber, C # y VB.net, si su empresa no tiene una suscripción a MSDN. Los lenguajes de tipo estático son buenos para proyectos medianos a grandes, reglas de dominio complejas y una gran cantidad de código de fondo, ya que puede organizar mejor sus clases y los IDE lo ayudarán a encontrar errores en su código.

Con lenguajes de tipo dinámico, como PHP, Python, Ruby, su desarrollo será mucho más rápido, pero tendrá que probar su código mucho mejor. Si no tiene mucho tiempo y dinero y sus requisitos cambian muy rápidamente y no tiene que hacer cálculos muy complejos, los lenguajes dinámicos son mucho mejores.

Виталий Олегович
fuente
-2

Seguridad

La razón principal para que las grandes empresas elijan Java en lugar de otras soluciones es porque se considera que es mucho más seguro.

Esto se debe principalmente a que es compatible con una empresa tan grande (ahora Oracle).

Debe tenerse en cuenta que Java ofrece un nivel muy alto de seguridad y un excelente soporte y análisis (aunque tiene un precio).

mrwooster
fuente
77
Uhh ... y la seguridad viene mágicamente del lenguaje en sí o qué?
Mchl
1
Usted sabe que Oracle NO es el único proveedor de contenedores de servlets de Java, ¿verdad?
Mchl
66
¡Guerra santa! ¡Pelea pelea!
abel
2
@Mchl Algunos de ellos provienen del lenguaje o más bien de su VM. ¿Cuántas veces has visto hacks de desbordamiento de búfer dirigidos a servidores de aplicaciones Java? Simplemente no vale la pena el esfuerzo. Dicho esto, "la industria" considera que Java es más seguro de lo que es, y una falsa sensación de seguridad puede reprimirlo.
biziclop
1
Mi punto aquí fue que necesitas diferenciar entre Java como lenguaje y los entornos de tiempo de ejecución de Java. No hay nada que haga que el lenguaje Java sea más o menos seguro que cualquier otro idioma. Las JVM, por otro lado, están diseñadas (entre otras cosas) para 'ejecutar' la ejecución de código de bytes de Java, pero su seguridad depende de la implementación específica. Buen punto sobre la falsa sensación de seguridad sin embargo.
Mchl