2008-09-24 24 views
14

En una conversación reciente, mencioné que estaba usando JavaScript para una aplicación web. Ese comentario provocó una respuesta: "Debería usar Flex en su lugar. Reducirá el tiempo de desarrollo y el JavaScript es demasiado difícil de depurar y mantener. Debe usar la herramienta adecuada para el trabajo correcto". Ahora, no sé demasiado sobre Flex, pero personalmente no creo que JavaScript sea demasiado difícil de depurar o mantener, especialmente si usa un framework. JavaScript también es uno de los idiomas más utilizados en este momento, por lo que parece una mejor opción en ese sentido también. Sin embargo, su respuesta despertó mi interés. ¿Flex sería una buena opción para una aplicación web distribuible para la que los desarrolladores de terceros pudieran crear complementos? ¿Cuáles son las ventajas de usarlo en comparación con un marco de JavaScript? ¿Cuáles son algunas de las desventajas?¿Por qué debería usar Flex?

+0

En lo de popularidad manera es relevante? Solo pregunte sobre ventajas, desventajas. La popularidad, además de ser difícil de medir, es totalmente irrelevante. Realmente cambiaría el título de la pregunta –

+0

Gracias por el comentario ... Edité la pregunta. – VirtuosiMedia

Respuesta

12

Lo empujaré hacia las tecnologías de desarrollo web estándar en la mayoría de los casos. Javascript ya no es un gran desafío para depurar o mantener con buenas libs como jQuery/Prototype para eliminar algunas de las incoherencias y herramientas del navegador como Firebug y el depurador de scripts MS para ayudar con la depuración.

Hay casos en que Flash es una mejor opción, pero solo en casos en los que se realizan animaciones complejas. Y, si está dispuesto a invertir el esfuerzo, la mayoría de las animaciones se pueden lograr sin recurrir al flash. A couple de examples ...

El contenido Flash no es tan accesible como otros contenidos.
Esto no solo afectará a las personas sin flash, sino también a las arañas de los motores de búsqueda. Puede haber algunos hacks para ayudar a evitar esto ahora, pero creo que la mayoría del contenido flash nunca será indexado por google.

Flash rompe la interfaz de usuario web.
Por ejemplo:

  • Si hago clic en mi rueda del ratón sobre un enlace, que enlace está abierto en un fondo pestaña . En una aplicación flash no hay forma de para simular este comportamiento.
  • Si selecciono texto en mi navegador y haga clic con consigo opciones proporcionadas por el navegador que incluyen cosas como "Búsqueda en Google de este texto". En una aplicación flash, esas opciones ya no son .
  • Si hago clic derecho en un enlace o una imagen obtengo un conjunto diferente de opciones que no están disponibles en una aplicación flash .Esto puede ser muy frustrante para un usuario que no es "flash savvy".
+0

Así me sentía yo también, pero creo que lo expresaste mejor de lo que podría haberlo hecho. Para la mayoría de los proyectos, tiendo a alejarme de Flash como una solución y usaré JavaScript donde pueda. Grandes ejemplos, por cierto. – VirtuosiMedia

+0

Lo más importante para mí es que, como el contenido de esos ejemplos es solo html, los anclajes son anclajes. Cada navegador tiene diferentes funciones asociadas a los enlaces. No hay forma en flash de obtener esa funcionalidad para un enlace, el elemento más fundamental de la web. – Prestaul

+0

No es del todo cierto ... Flex 3 ha agregado soporte para interacción tipo HTTP, cosas como enlaces profundos y acceso a Javascript. – mmattax

14

Recientemente comencé a desarrollar aplicaciones Flex, y personalmente considero que es un marco refrescante para la web.

Obtiene una aplicación completa que se ejecuta completamente en el lado del cliente. No tiene que preocuparse por la portabilidad de navegador cruzado que hace con JavaScript, y obtiene cosas realmente interesantes como efectos, gráficos y componentes de interfaz de usuario enriquecido.

Flex también hace que sea fácil comunicarse con los servicios web y el análisis XML a través de ECMA es terriblemente poderoso y simple.

Me alegro de haber hecho el cambio. En cuanto a lo popular que es ... no estoy muy seguro, pero estoy bastante seguro de que la base de desarrolladores se está expandiendo rápidamente.

La única desventaja real que puedo pensar es un requisito de Flash Player, pero diría que es bastante seguro asumir que la mayoría del soporte del navegador reproductor flash; incluso konquerer en Linux es compatible; mucho más entonces un tiempo de ejecución Silverlight (que NUNCA planeo instalar)

+0

Supongo que la mayoría de los usuarios obtendrán Silverlight con IE8 o Windows Update, automáticamente de la misma manera que obtiene GoogleGears si instala Chrome. –

+0

Para agregar a esto, Flex es una buena opción cuando se realizan aplicaciones * ricas * como pesadas en medios o gráficas pesadas (es ahí donde brilla), sería excesivo para algo basado principalmente en texto. Pero, una vez más, Flash Player 10 también tiene algunas características de diseño de texto kick-ass :) –

+0

Flash funciona mal con Linux y no funciona bien con BSD hasta el punto de que la mayoría de nosotros no nos molestamos. Javascript se ejecuta en todas partes, incluido el móvil. – Rob

1

GWT le permite hacer lo mismo que Flex en su mayor parte, y maneja todos los problemas de compatibilidad del navegador, Y le permite codificar/depurar en Java con tu IDE favorito

Todo sin tener que aprender un nuevo idioma (o pagar Adobe $$$ por el IDE flexible que necesitará para hacer algo real).

Flex tiene algunos widgets de interfaz de usuario más bonitos que los que GWT tiene instalados, pero hay muchos widgets de terceros (como GWT-EXT-JS) que puedes usar o puedes usar tus widgets JS favoritos con GWT.

verlo si no lo ha hecho: http://code.google.com/webtoolkit/

+0

Solo uso el SDK de Flex de código abierto y puedo hacer que las "aplicaciones reales" suenen como si dependiera demasiado de un IDE ... y el OP no preguntaba por GWT. – mmattax

1

no puedo estar seguro de si era yo, o alguna otra persona que hizo esa declaración, pero sin duda será uno de decir 'utilizar la herramienta adecuada para el trabajo'.

Flex tiene una gran comunidad detrás y está muy publicitada por el equipo de evangelismo de plataformas de Adobe. Ahora, en cuanto a reemplazar JavaScript, parece un punto de discusión de amplio espectro. Flex es no un reemplazo para JavaScript. Lo que hace, lo hace bien, sin embargo. Es decir, 3D, dibujo y representación de datos, ya sea en forma de gráfico o tabla. Flex también tiene el poder de ActionScript 3 que le permite hacer mucho de lo que Flash hace en cooperación con los componentes frontales MXML sin tocar la línea de tiempo o fotogramas clave.

En cierto modo, Flex es el .NET de Flash y el desarrollo de Rich Internet Application. Utiliza los mismos conceptos de origen de datos y estructuras de diseño enfocadas en componentes que hacen que sea más fácil y rápido desarrollarlo.

La verdadera pregunta es, ¿qué estás tratando de lograr? ¿Cuál es el objetivo final?

En cuanto al punto de depuración, Flex tiene un depurador y un generador de perfiles verdaderos dentro de Flex Builder IDE. JavaScript, desafortunadamente, tiene una sintaxis y ejecución diferentes entre los navegadores debido a la naturaleza de los motores de JavaScript en los navegadores modernos. Flex, porque es esencialmente Flash, utiliza el mismo motor de representación en todos los navegadores debido al uso del complemento de Flash.

Espero que aclare algunas cosas. :)

+0

Gracias por la información. Ayuda. – VirtuosiMedia

1

Flex tiene una gran cantidad de sobrecarga adicional:

  • Nuevo idioma deben tener instalado Flash
  • Clientes (puede que tenga que instalar, podría no ser capaz de)
  • Los clientes deben descargar estructura de Flex (pocos cientos de kilobytes)
  • contenido de Flex no está indexado por los motores de búsqueda (al contrario de lo que podría reclamar Google)

Flex tiene una ventaja principal: - Mejor en la creación de interfaces ricas (consulte Picnik.com, etc.)

Por ejemplo, en Flex, es fácil crear un cuadro de diálogo personalizado, con sombras paralelas, brillo interno , animado abierto, lo que sea que quieras.

En resumen, use Flex si necesita la riqueza extra.

+0

Gracias. No sabía que Picnik estaba escrito en Flex o que los clientes tienen que descargar el marco Flex. – VirtuosiMedia

+1

Al 'descargar el marco', quiere decir que se agrega mucho a la descarga del archivo Flash. No se requiere una descarga por separado. – willasaywhat

0

Aparte de lo que ya se ha mencionado aquí, otra gran diferencia es que JavaScript se tipea dinámicamente y ActionScript está tipado estáticamente. Si eso es bueno o malo dependerá de tu punto de vista :).

0

Si desea que su aplicación web parezca que no es una aplicación web, Flex es bastante buena. También puedes soslayar todo el desorden de hacer que HTML + JS parezca una aplicación real. Para algo que es esencialmente un sitio web, Flex podría no ser la mejor opción, pero si realmente desea escribir una aplicación a la que se accede mediante el navegador, es rápida de desarrollar y ofrece excelentes resultados.

14

Aquí está mi experiencia: realmente necesita considerar 2 cosas por separado: el desarrollo y la experiencia del usuario final. Flex brilla en la primera área:

  • ActionScript es una mezcla agradable de Java y Javascript para que pueda obtener un lenguaje familiar con un fuerte apoyo para la programación orientada a objetos
  • depuración es mucho más fácil de lo que puede lograr en JavaScript
  • estructura de Flex es un componente orientado y dirigido por eventos que ayuda en la creación de interfaces de usuario (HTML no fue realmente creada para apoyar a los escenarios de aplicación de interfaz de usuario)

por otro lado, la experiencia del usuario final es peor cuando se ejecuta una Aplicación Flex en comparación con una aplicación AJAX pag. En primer lugar, debe tener instalado Flash Player, pero probablemente esto ya no sea un problema para la mayoría de las computadoras. Los problemas más grandes son con facilidad de uso: Flash Player maneja todas las interacciones de UI (en lugar de un navegador) para que el administrador de contraseñas no funcione, los campos de texto no recuerden las entradas anteriores, Ctrl + T y medio no funciona, búsqueda de texto no funciona etc. etc.

Mi consejo sería - si está desarrollando una aplicación (interfaz de usuario rica, relativamente separada del resto de la web), vaya a Flex, ya que le ahorrará tiempo, dinero y hará más felices a los usuarios al proporcionar una funcionalidad más rica y períodos más cortos entre las nuevas versiones. Por otro lado, si su aplicación necesita estar estrechamente integrada con la web y desea que sus usuarios puedan usar las características de sus navegadores, vaya con AJAX.

Buen ejemplo es Google Docs vs Buzzword. La palabra de moda es mucho más rica en características (por ejemplo, el texto puede fluir alrededor de una imagen desde ambos lados, algo que nunca se podría lograr en DHTML), pero Google aún decidió buscar una versión de AJAX porque son la "compañía web". No es correcto o incorrecto hacerlo de una u otra forma, es simplemente diferente y es importante considerar quiénes son sus usuarios finales.

0

Debería probar Google Gears en su lugar. Cree su aplicación, agregue algunos Gears a ella, y puede aumentar en gran medida la velocidad (y confiabilidad) de su aplicación.

http://gears.google.com/

Esencialmente engranajes Google le da acceso a dos cosas útiles para cualquier aplicación: almacenamiento de datos fuera de línea, y el control de roscado nativa (que permite actualizaciones/cálculos se ejecuten en segundo plano y no ralentizan el ordenador del usuario).

Lo realmente bueno es que puede usar cualquier Marco que desee para su aplicación, siempre que el almacenamiento/recuperación de datos y la comunicación del lado del servidor se manejen con JavaScript.

También le permite almacenar en caché los archivos del lado del cliente que desee, lo que es especialmente útil cuando quiere evitar ese aspecto "parpadeante" en el navegador mientras el navegador está descargando alguna imagen necesaria.

0

Algunas razones para considerar Flex:

  1. biblioteca El control es mucho más rica en Flex que nada se puede hacer con JS/DHTML. Los controles de gráficos son determinantes para las aplicaciones de negocios y cosas como DataGrid/AdvancedDataGrid están muy por delante de cualquier cosa que puedas hacer con HTML.

  2. El marco de Flex fue diseñado para aplicaciones de construcción. Se abstrae de los conceptos "basados ​​en cuadros" en Flash Player para realmente facilitar la creación de aplicaciones. Tiene una jerarquía de componentes bien diseñada que facilita la extensión de cualquiera de los controles estándar. También cuenta con un modelo de eventos bastante intuitivo para manejar las entradas de los usuarios y facilita que cualquiera de sus controles distribuya eventos personalizados que pueden convertirse en componentes principales o enrutarse a través de un despachador central de eventos. Si bien es posible hacer esto con JS/DHTML, no creo que sea tan fácil y ciertamente no fue diseñado para eso.

  3. Puede tener una aplicación Flex y desplegar rápidamente al escritorio con la ejecución de AIR. AIR también ofrece API adicionales para cosas como el acceso al sistema local, SQLite DB incrustado, etc. Gears ofrece algo similar, pero requiere un navegador. De acuerdo, AIR requiere el tiempo de ejecución de AIR, pero al menos está destinado a la creación de aplicaciones de escritorio.

  4. Se puede construir una interfaz de usuario muy rica, muy atractiva que lo dejarán usuarios off. Como programadores, puede que no nos interese UX, pero nuestros usuarios sí. Parte de la razón por la que Apple está teniendo mucho éxito últimamente es porque realmente valoran el UX y los usuarios/consumidores están tomando nota de esto.

Creo que si realmente está acostumbrado a Java o C#, el lenguaje ActionScript le parecerá un poco limitante. Si lo está comparando con JavaScript, está a la par o tal vez un poco mejor.

Mucha gente va carril en Flash Player (o aire) porque no es "estándar basados". Si solo estuviéramos dispuestos a usar sitios que fueran 100% compatibles con los estándares y sin complementos, hoy no tendríamos YouTube. O casi cualquier otro sitio que haga una visualización de datos interesante que no se puede hacer con HTML/JS (o al menos, no con un buen nivel de esfuerzo). Adobe ha sido bastante progresista en la apertura del framework Flex, Blaze DS (para el desarrollo de backend Java), publicando las especificaciones AMF e iniciando Open Screen Alliance para llevar Flash Player a dispositivos móviles. Flash Player, Flex, Flex Builder y Blaze DS tienen rastreadores de errores JIRA públicos. Diría que hay muchas posibilidades de que Flash Player sea de código abierto en los próximos 2-3 años. Creo que Adobe sigue avanzando para ser muy abierto y que las críticas de que la plataforma sea "cerrada" y "propietaria" son cada vez menos relevantes. Creo que si los desarrolladores se acercan a Flex/FP con la mente abierta, quedarán realmente impresionados con la forma en que todo encaja.

Cuestiones relacionadas