javascript carga - ¿Por qué debería usar jQuery en lugar de GWT?




la mientras (13)

GWT es un compilador (Java a JavaScript) y jQuery es un framework. No tiene que elegir uno sobre el otro. Puedes usar uno de ellos, ambos o ninguno.

Por ejemplo, puedes codificar en Java si quieres o tienes un código fuente existente y luego usar jQuery para otras cosas. Hay envoltorios disponibles, pero GWT puede llamar a JavaScript (y viceversa) ver http://svenbuschbeck.net/wordpress/2012/06/how-to-use-jquery-in-gwt/

Necesito decidir entre jQuery y GWT para mi nuevo proyecto.

No he programado en JavaScript por un tiempo, y estaba buscando en GWT durante los últimos días. Se ve bastante impresionante, generando todos los JS diferentes para diferentes navegadores y todo, sin embargo:

  • Desarrollar en Java lleva más tiempo que lo mismo con jQuery (al menos para este proyecto)
  • la documentación es deficiente (por ejemplo, ¿cómo debería saber qué elementos debo usar al diseñar la página? - no hay suficiente documentación para esto)

He estado usando jQuery para la mayoría de mis proyectos y es bastante bueno.

Quiero convencer al cliente de que jQuery es más adecuado para este proyecto y necesito más argumentos para apoyarlo.


La respuesta no es fácil. La respuesta es, depende":

GWT:

  • si sabes y te gusta Java
  • si su código de servidor también está escrito en Java, al escribir el código de cliente en Java, es posible usar el mismo código en el cliente y el servidor
  • si le gustan las cosas proporcionadas por los lenguajes fuertemente tipados: verificación de tipos en tiempo de compilación, refactorización automática, generación automática de código (Ctrl + 1 en Eclipse), finalización del código (Ctrl + Espacio)
  • si te gusta la programación orientada a componentes (por ejemplo, MenuBar crea un menú)
  • si la complejidad de GWT (en comparación con jQuery) no es un problema para usted
  • si el gran código generado no es un problema para ti

jQuery:

  • si sabes y te gusta JavaScript
  • no necesita usar el mismo código en el cliente y el servidor (por ejemplo, cliente - JS, servidor - Java o PHP)
  • si no necesita verificación de tipos en tiempo de compilación, refactorización automatizada, etc.
  • si no necesita programación orientada a componentes (para crear un componente complejo en jQuery necesita crear una serie de divs y llamar a $ ("esos divs"). makeXXXXControl ())
  • si te gusta la simplicidad (jQuery es más simple que GWT)
  • si necesita un código muy pequeño (por ejemplo, para que el sitio web se cargue más rápido)

Personalmente, recomendaría GWT para la mayoría de los proyectos, pero jQuery también tiene ventajas y algunas personas pueden preferir jQuery.


Si su grupo está más familiarizado con Java y está planeando hacer una cantidad significativa de funcionalidad del lado del cliente, entonces al menos debería evaluar GWT. El tipo de seguridad, la depuración de Eclipse y el código compartido entre el lado del servidor / cliente se sentirán cómodos para su equipo de desarrollo de Java.

Sin embargo, si su equipo está acostumbrado a la programación de JavaScript con jQuery u otra biblioteca de JavaScript, entonces puede ser más fácil apegarse a una tecnología que es JavaScript puro. GWT tiene una forma de hacerse cargo de grandes secciones de la página, que no es familiar para la mayoría de los desarrolladores de JavaScript. Al tomar el control de la página me refiero a que al código típico de GWT le gusta crear sus propios elementos DOM en lugar de agregar funcionalidad a los elementos existentes en la página. Esta es la razón por la cual muchas aplicaciones GWT tienen una pantalla de "carga ..." cuando la página se carga por primera vez. Esto no es necesario, pero es el estilo más común de desarrollo de GWT.

El hecho de que el código generado provenga de GWT es menos relevante para la mayoría de los desarrolladores de GWT. GWT le permite compilar Java en algo equivalente a un archivo java * .class normal, pero en una sintaxis de JavaScript que el navegador web entiende cómo interpretar. GWT actúa mucho más como un compilador que como un generador de códigos basado en plantillas. Hay veces en que tendrá que inspeccionar el código generado, pero en su mayor parte su depuración será en Java a través de su depurador de Java.

Otra cosa en que pensar es que, independientemente de la tecnología del lado del cliente que elija, su equipo de desarrollo deberá estar familiarizado con HTML, JavaScript, CSS y la programación del navegador en general. GWT le permite escribir el código del lado del cliente en un entorno Java familiar, pero no oculta el hecho de que está trabajando desde un navegador.


Los principales problemas que veo con GWT frente a una solución nativa de Javascript (jQuery u otros) son:

  • Hay un proceso adicional que lo separa de su producto final. Desarrolla su aplicación en Java y depura el código de Java, pero libera una versión de este código traducida por máquina. Para una aplicación de tamaño decente, no puedo imaginar que no necesite depurar el código real que se ejecuta en el navegador a veces, y esto va a ser un dolor de cabeza, ya que no es su código.

  • Dado que escribe su código en Java, está limitado a usar bibliotecas de Java. Si encuentra alguna biblioteca JS que le guste, sería terriblemente difícil agregarla a su proyecto GWT, puede que necesite escribir un contenedor Java para ella. Si está desarrollando JS nativo, puede agregarlo a su proyecto.

  • JS es un lenguaje impresionante en sí mismo, con un modelo de objeto sólido que es diferente al de Java. He desarrollado algunas aplicaciones en JS nativo para HP webOS y me sorprendió descubrir que muchas de las ideas preconcebidas que tenía sobre el lenguaje no eran ciertas. Puedes escribir código limpio, eficiente y fácil de mantener en JS tanto como puedas en Java, y si te tomas el tiempo para entender el modelo de objetos JS, ni siquiera necesitarás usar una biblioteca de soporte para imitar una clase / objeto más típico. modelo como los de Java y C ++ en la parte superior de JS. Los prototipos de Javascript son geniales.

  • Si alguna vez considera la posibilidad de liberar su aplicación en plataformas móviles, entonces una aplicación JS nativa se puede incluir fácilmente en el teléfono y tener acceso a varias plataformas móviles, sin esfuerzo adicional. También hay un contenedor GWT para phonegap, pero volviendo a mi primer artículo, si tienes la opción de trabajar con lo real, ¿por qué elegir una solución que requiera traducción / emulación?

Buena suerte.


Antes que nada, comparar GWT con jQuery no tiene mucho sentido. Si bien jQuery fue desarrollado para hacer que el navegador cruzado trabaje con el DOM mucho más fácil, GWT está diseñado para crear grandes aplicaciones web.

Entonces, si tiene un montón de lados estáticos con algunos widgets independientes, como calendario, control deslizante, etc., jQuery es suficiente. Si quieres construir una aplicación de una sola página, quizás con un equipo grande, GWT es la mejor manera. GWT tiene una gran arquitectura de diseño bajo el capó, especialmente la construcción en patrón MVP, sistema de plantillas UI-Binder, soporte i18n, etc.

Así que como desarrollador de JavaScript que trabaja más de un año en una gran aplicación de GWT, recomendaría que nunca se construya una aplicación de una sola página solo con jquery porque no se compiló. Si desea usar JavaScript, eche un vistazo a la columna vertebral, columna vertebral, knockout o dojo.

Por cierto, como buena es la construcción de la arquitectura GWT, tendrá una gran cantidad de gastos generales de JAVA. Entonces, si el proyecto está creciendo, el tiempo para compilar sus propiedades CSS e i18n será molesto.


El grupo de usuarios activos y la reciente popularidad creciente indican claramente que jQuery es el ganador.


Mi opinión personal sería para jQuery, pero eso es porque nunca uso Java y realmente me gusta usar los complementos de jQuery.


Estoy de acuerdo con Russ Cam en que depende de con qué esté familiarizado tu equipo. Cuando trabajo para mis aplicaciones empresariales personales, prefiero GWT. Encuentro javascript, incluso con jquery, para tener una sintaxis molesta orientada a objetos. Si tienes una aplicación con 10.000 líneas de código de UI, jquery me parece algo que daría lugar a un caos de código difícil de mantener con poca reutilización.

¿Alguien sabe de un proyecto a gran escala hecho en jquery?

Creo que si intentas sacar hasta el último byte del tamaño del archivo resultante, no uses ninguna biblioteca y escribe el javascript desde cero (es decir, el efecto de desvanecimiento de la página de inicio de google).

Algo para pensar con respecto a javascript / jquery versus gwt. Si utiliza principios y patrones de diseño comunes orientados a objetos, es probable que obtenga un mejor rendimiento del código con gwt. ¿Por qué?

Tomemos el ejemplo del polimorfismo. Si escribe una aplicación que usa un polimorfismo pesado en javascript, obtendrá el beneficio de la capacidad de mantenimiento y la reutilización del código que esto proporciona. Sin embargo, su código también obtendrá el impacto en el rendimiento del uso de polimorfismo.

Ahora, si utilizó gwt, también obtendrá el beneficio de la capacidad de mantenimiento y la reutilización del código que esto proporciona, PERO el compilador gwt optimizará el polimorfismo en el uso de la clase concreta, por lo tanto, aumentará el rendimiento.


Creo que GWT es demasiada abstracción. Javascript es, de hecho, un lenguaje poderoso. Puede escribir código orientado a objetos y usar espacios de nombres. Con una biblioteca como jQuery, no tendrá que preocuparse por los problemas de compatibilidad del navegador para la mayoría de lo que hace. Con todas las excelentes herramientas de desarrollo de navegador disponibles (como Firebug) en todos los principales navegadores actualmente, es muy fácil trabajar con javascript. Cuando se produce un error de javascript, puedo identificar fácilmente dónde sucedió en mi código. Puedo ver variables y saber todo lo que está pasando en detalle porque estoy trabajando contra el código que escribí (a diferencia de GWT).


"Caballos de carreras"

Elija el que tenga más sentido para el proyecto. Algunas cosas para considerar

  • Escalas de tiempo ajustadas y más familiarizadas con una sobre la otra
  • Velocidad y capacidad de mantenimiento para que otros desarrolladores utilicen la herramienta elegida. La prevalencia de uno sobre el otro puede tener implicaciones aquí también
  • Tener cualquier código que pueda usarse ya en el proyecto, por ejemplo, complementos, funciones de utilidad, etc.

Sin conocer detalles sobre de qué se trata el proyecto, cuál es su experiencia y qué tan abierto está el cliente a utilizar diferentes tecnologías / marcos, no habrá una respuesta decisiva aquí.

Haga esa lista de argumentos convincentes para una sobre la otra, como he comenzado aquí y luego discuta con otras personas involucradas en el proyecto para llegar a una conclusión.


Yo iría con JQuery.

Una vez mantuve un proyecto de GWT que finalmente me obligó a volver a escribirlo dos veces. Primero como una aplicación GWT refactorizada, la segunda en JQuery.

No he tocado el Javascript en serio desde hace mucho tiempo. La última vez fue sobre el 2002. Soy un desarrollador de Java, así que mi primera impresión de GWT fue increíble. Pero esa fue solo la impresión.

Problemas que encontré con GWT:

  1. Te obliga a seguir su estructura cliente / servidor. Al final, todo lo que quiero es AJAX y esos buenos widgets. Los widgets de GWT por sí mismos no parecen tan atractivos. Estéticamente, ¡prefiero Adobe Flex! Pero para mantener la comparación más cerca, la IU de JQuery se ve mejor que la de GWT. Además, tienes el maravilloso soporte de Theme Roller de JQuery.

  2. He intentado DWR. Es genial. Es mucho más fácil habilitar AJAX en su código Java usando DWR que GWT.

  3. Si está utilizando GWT, eventualmente se verá obligado a aprender JavaScript. Arjen de SpringSource dijo una vez sobre XML y SOAP (aunque no es la cita exacta): "¿Cómo se puede desarrollar WebServices y no saber XML? SOAP es XML. No se puede evitar". Lo mismo con GWT. Todavía es Javascript al final.

  4. De manera realista, Javascript no es tan difícil de aprender comparado con Java. Más personas saben Javascript que Java. Incluso los diseñadores web lo saben. Eres un programador, y tienes miedo de Javascript?

  5. Volver al proyecto que reescribí. Cuando reescribí nuestra aplicación GWT, tardé casi dos meses en reescribirla. Con JQuery me llevó dos semanas, y estaba oxidado con JavaScript.

  6. Con JQuery realmente no escribes JavaScript con hardcorde. Es por eso que usas JQuery en primer lugar. Mantener el código con GWT es horrible. Quieres ver los últimos cambios que hiciste en el código ... ir a compilar ... esperar a GWT ... 5 minutos ... aclarar ... y repetir y esperar que no arroje un error. Si lo hace, volverá a compilar de nuevo y esperará otros 5 minutos. Enjuague y repita. Con JQuery cambie una línea, actualice su navegador. Hecho.

Sé que no estoy siendo objetivo aquí, pero solo estoy compartiendo mi experiencia :) La moraleja es que no tengas miedo de Javascript. Google usa Javascript de todos modos


jQuery = comprensión de bajo nivel

Aparte del javascript normal y el otro es la explicación de java, Jquery tiene un mapeo uno a uno más cercano con javascript, mientras que GWT es más abstraído. Entonces, si prefiere tener una comprensión más profunda de lo que está sucediendo con su código en el nivel bajo (javascript), entonces jquery es el camino correcto.

GWT = comprensión de la abstracción = garantía funcional

GWT ofrece la ventaja del código generado por el compilador por lo que puede ofrecer más garantía de que su sitio web funcionará normalmente. Sin embargo, al igual que cualquier API a gran escala, debes tomarte el tiempo para comprender qué hace esta clase y qué hace esa clase y si es o no compatible con esta API.

la comprensión de bajo nivel puede ser más útil

Personalmente obtengo mucha más satisfacción al codificar el bajo nivel yo mismo. He creado algunas aplicaciones web en el trabajo de javascript puro que funcionaba perfectamente. Una vez escribió el código de JavaScript que tomó datos de una base de datos y generó un informe completo de Microsoft Word Word Research. La complejidad de este proyecto exigió una comprensión de bajo nivel de javascript. No estoy seguro de que esto podría haberse hecho fácilmente con una solución basada en Java.

GWT tranquiliza a los gerentes pero es costoso

Pero, de nuevo, java y asp.net tienden a ser preferidos por las empresas más grandes porque hay mayor soporte técnico (es decir, Oracle y Microsoft) y los gerentes tensos tienden a dormir mejor por la noche cuando saben que pueden resolver el problema A simplemente pagando x cantidad de dólares por soporte. Entonces, después de adoptar el sistema, pronto comienzan a darse cuenta de que el soporte técnico cuesta demasiado y que es más barato pagar más por mejores desarrolladores. Por lo tanto, una carrera en java o .net generalmente pondrá comida en la mesa.

Mantenibilidad

También las API como GWT son más fáciles de mantener. Solo podía imaginar el horror que alguien pasaría si tuvieran que depurar mi código de JavaScript. Pero eso fue antes de que me convirtiera en un programador mejor y más limpio y, como sabía todos los aspectos del código, no había nada para depurar b / c, nunca hubo un problema con él.

La codificación de bajo nivel le da casi un 100% de comprensión de lo que está sucediendo, sin embargo, con las API puede pasar tiempo jugando al detective de errores en google y publicando preguntas en sitios como . Pero los gerentes no entienden que este b / c la mayoría no son programadores.


Dado que la pregunta se refiere a un solo elemento, este código podría ser más adecuado:

// Checks css for display:[none|block], ignores visibility:[true|false]
$(element).is(":visible"); 

// The same works with hidden
$(element).is(":hidden"); 

Igual que la sugerencia de twernt , pero aplicada a un solo elemento; y coincide con el algoritmo recomendado en las preguntas frecuentes de jQuery





javascript jquery gwt