Esta es una pregunta interesante, que ha aparecido con bastante frecuencia en varios grupos de mensajes, twitter, e incluso IRC. Hay un par de maneras de evaluar SproutCore versus Cappuccino, pero, tal vez, algunas de las habilidades inmediatas que la gente observa son las siguientes:
1) Su característica respectiva establece
2) Facilidad de uso
3) El apoyo comunitario y documentación
Veamos el primer punto - no conjunto de características correspondiente. Por "conjunto de características" hay un par de maneras de verlo. De la cantidad de widgets de UI que tienen; el soporte fundamental para conectar cosas y comunicarse con algún tipo de back-end; el enfoque arquitectónico general del marco, aunque no necesariamente una "característica", pero aún importante; y, sí, incluso el idioma que puedes usar.
En cuanto al idioma, creo que es importante que no descarte lo que se está utilizando (JS versus Obj-J). ¿Por qué? Debido a la adopción y de dónde vienes. SproutCore vino desde la perspectiva de que JavaScript es de hecho el lenguaje de la web, por lo que es lo que usas para programar contra el marco. Cuando JavaScript carece de la completitud de OO del lenguaje (herencia adecuada de objetos y objetos, etc.) lo compensa en el marco (por ejemplo, MyApp.Foo = SC.Object.extend ({...})). Cappuccino viene desde un ángulo diferente. Usan Obj-J como una mejora del lenguaje principal para JS con el fin de inyectar características de lenguaje que JS no encuentra; esto en lugar de inyectar esas características del lenguaje directamente en el marco (Cappuccino). Por supuesto, como la gente de Cappuccino ya ha notado antes, todavía puedes usar JS para programar contra Cappuccino, pero, luego, te pierdes lo que Obj-J ofrece. Nota para la comunidad Cappuccino: Por favor corrígeme si me equivoco :-). Finalmente, si eres alguien que ya está familiarizado con Obj-C, entonces Obj-J puede ser más una taza de té. Oye, incluso Sony aparentemente se está subiendo a todo el carro de Obj-C para desarrollarse contra su plataforma móvil :-P.
Mirando la arquitectura de los dos marcos, ambos miraron el marco de Cocoa de Apple en busca de orientación/inspiración de una forma u otra. Cappuccino tomó Cocoa completamente en su corazón y básicamente portó Cocoas API. De nuevo, si vienes de desarrollar aplicaciones en Apple usando Cocoa, entonces probablemente te sientas como en casa. SproutCore por otro lado se inspiró en Cocoa donde se sintió bien. En cuanto a la arquitectura pura, ambos siguen MVC, ambos utilizan enlaces de estilo Cocoa, ambos tienen un mecanismo de almacenamiento de datos, y ambos tienen su propio estilo de representación y composición de widgets/vistas de IU.
La representación de vistas es, para mí, un área particular de importancia. Ambos marcos tienen una cierta abstracción de nivel con el fin de eliminarlo de tratar directamente con CSS y HTML, aunque al final del día tienen que procesar lo que el navegador web finalmente entiende.
En el lado Cappuccino, abstraen completamente CSS y HTML de usted. En su lugar, utiliza las diversas primitivas de representación del marco para "dibujar" sus vistas. Debido a este nivel de abstracción, Cappuccino puede utilizar el mejor enfoque de representación disponible en lugar de acoplarse, en cierta medida, con CSS y HTML.
En cuanto a SproutCore, está apareciendo más cerca del "metal" por así decirlo. Cuando realiza una representación pura de una vista, utiliza un objeto de contexto de representación que proporciona un cierto grado de abstracción, pero, en última instancia, está inyectando directamente HTML y agregando nombres de clase para aplicar CSS. Incluso después de que se visualice su vista y desee manipular ciertas partes de la vista en función de un evento, puede acceder directamente a los elementos DOM y manipular sus propiedades. Dependiendo de dónde vienes, esto puede parecer bueno o malo. Bueno para aquellos que están acostumbrados a trabajar con CSS y HTML y les gusta el control más directo sobre cómo se representan y diseñan las vistas. Es malo si desea generar genéricamente una vista para utilizar el mejor enfoque de renderizado según lo que permita el navegador (HTML/CSS, SVG, lienzo HTML5, etc.). Pero, tenga en cuenta que hay planes futuros para hacer que SproutCore tenga un enfoque de representación más abstracto pero que le permita trabajar directamente con HTML y CSS, si así lo desea. Entonces eventualmente obtendrás lo mejor de ambos mundos.
Ahora, en cuanto a los widgets/vistas de UI de stock, vienen los dos frameworks: ambos tienen mucho que sacar de la caja para que funcione. Botones, etiquetas, listas, vistas segmentadas, botones de opción, desplazadores, etc., están todos allí. Por lo tanto, es seguro decir que estás bien en ambos campos.
Yendo todo el camino de regreso, veamos ahora la facilidad de uso. Para mí, la facilidad de uso se basa en su propia experiencia personal trabajando con JavaScript, HTML, Obj-C, Cocoa, otros frameworks MVC, documentación y soporte de la comunidad. Si nunca has trabajado con Cocoa, o nunca has desarrollado una aplicación tipo mazo o iPad, entonces es justo decir que vas a tener un poco de curva de aprendizaje sin importar el marco que elijas. Dicho esto, lo que no sabe y quiere aprender puede adquirirse a través de la comunidad y los documentos respectivos de cada marco. Ambos tienen comunidades activas en una u otra, por lo que no te quedarás a la intemperie si te quedas atascado en alguna parte. En cuanto a los documentos, Cappuccino, sin duda, tiene la sartén por el mango. Los documentos para SproutCore son deficientes, pero la base del código está al menos completamente comentada. La comunidad de SproutCore está completamente al tanto de los documentos que necesitan ser actualizados, y actualmente es algo que se está tratando, así que sigue comprobando.
Por último, mencionó el pronóstico a largo plazo para los dos marcos. Es de conocimiento público que Motorola compró el marco Cappuccino, por lo que sin duda tiene una gran compañía que respalda su crecimiento y longevidad, o al menos así parece por ahora. En cuanto a Apple y SproutCore, personalmente no puedo hablar por ellos, pero Apple no es el propietario del framework. Hay muchas compañías y varias personas que usan y contribuyen de alguna manera al marco.Eso podría darles a algunas personas y compañías una pausa o incomodidad para aquellos que están mirando a SproutCore debido a la naturaleza más orgánica del desarrollo del framework, pero no lo veo como un problema. Tengo la sensación de que ambos marcos estarán vigentes por mucho tiempo, especialmente ahora que más están buscando desarrollar aplicaciones de escritorio y iPad de próxima generación utilizando marcos de código abierto. Y, oye, la competencia entre los marcos es buena: mantiene a todos en sus respectivos dedos :-).
Espero que esta información te ayude con tu decisión.
Saludos,
Mike
¿quizás esto debería ser una wiki? no estoy seguro de cómo puedo convertirlo en uno? –
Dada la edad, el número de upvotes, el estado protegido de la pregunta y la popularidad de la respuesta aceptada, una recompensa por "información actualizada" parece más apropiada como una nueva pregunta, como lo haría el contexto proporcionado en dicha recompensa. en esencia, cambia la naturaleza de la pregunta y la respuesta. – Claies