Hola, 2008/4/30 Manuel Alejandro Cerón Estrada <[EMAIL PROTECTED]>: > > 2008/4/30 Juan Luis Baptiste <[EMAIL PROTECTED]>: > > > > Yo recomendaría QtJambi [1], es una versión de Qt > > en Java, ojo *no* es un binding the Java para Qt, entonces la > > penalidad de comunicarse con Qt con el caso que decían antes de GTK > > no existe. > > No entiendo a que se refieren con lo de "tener que comunicarse con > GTK". Usando el binding adecuado no es necesario tener que comunicarse > ni nada, todo se usa transparentemente. En mi opinión es mucho mejor > usar bindings que librerías nativas ya que el desempeño es mucho > mejor, por eso las aplicaciones SWING parecen tan lentas. >
Un binding nunca va a ser igual de rápido que la implementación nativa, la razón es muy sencilla. Un binding que es ? un wrapper de un lenguaje hecho en otro lenguaje, lo que al final quiere decir que la llamada a una función en el binding tiene que llamar a la equivalente en el otro. Por ejemplo, el llamado a un método en un binding de java tiene que llamar al método correspondiente en la librería gtk (o cualquier otra), para esto tiene que haber algún mecanísmo de comunciación entre los dos objetos por así decirlo. En el caso de java es RMI, lo que ya lo hace inerentemente más lento que una llamada nativa. QtJambi hasta donde tengo entendido no es un binding sino una implementación nativa de la librería menos un pequeño core que sigue estando en C++, el cuál es llamado nativamente desde Java. > > ... > > > empecé a desarrollar en linux hace varios años probé ambas, y se me > > hizo mucho más sencillo la librería qt, más ordenada, más completa, > > con un mejor soporte multiplataforma (por ejemplo la integración con > > cada s.o., look & feel, dialogos de abrir/guardar, etc) y más claro de > > entender el código escrito, Qt utiliza la misma nomenclatura de Java > > CamelCase que llaman, en GTK es algo como > > "pintar_ventana_configuracion_aplicacion" cosas así, que hacen el > > código menos legible en mi opinión > > El estilo de notación es algo que depende del lenguaje en el que se > use GTK+, cuando se usa en C o en Python se usa la > notación_con_guiones_bajos, cuando se usa en Java o C# se usa el > estilo CamelCase, por ejemplo, miren la documentacion de los bindings > de GTK para Java: > > http://java-gnome.sourceforge.net/4.0/doc/api/overview-summary.html De acuerdo, todo depende de la notación que se haya escogido. GTK usa notación con guiones bajos y a lo que yo me refería es que esa notación es menos legible que CamelCase. > > ... Ahhh y más importante aún, GTK es > > > C, no C++ que no tiene mucho sentido para desarrollar aplicaciones > > gráficas, una aplciación visual se modela más claramente como un > > conjunto de objetos, GTK trata de imitar este comportamiento. En este > > caso es mejor usar gtkmm que son los bindings de C++. > > GTK+ esta escrito en C y eso tiene la ventaja de que es muy fácil > hacer bindings para otro lenguajes. En consecuencia, GTK+ tiene más y > mejores bindings en otros lenguajes. Si usted usa GTK+ desde otro > lenguaje usará el modelo de objetos del lenguaje que esté usando. GTK+ > es una librería completamente orientada a objetos, así que se integra > muy bien en lenguajes como Java y C#. > Tienes a la mano una tabla comparativa que demuestre que hay más bindings para otros lenguajes para GTK que para Qt? yo no puedo asegurar eso a menos que tenga una base para decirlo. Lo que sí puedo decir es qué bindings existen para Qt pero sin asegurar que sean más o menos que los de GTK. Los que yo sé que tiene Qt son: java, perl, python, C#, ruby y lua. > > > ... Una consecuencia > > de esto es que el manejo de eventos se hace con callbacks más > > conocidos como apuntadores a funciones, en Qt se hace con un mecanísmo > > llamado "signals and slots", en el cuál un objeto emite señales (ej. > > click en un boton), y estas se conectan a otros objetos para que > > ejecuten un método específico (los slots), todo se hace en una linea > > de código por función. > > De nuevo, esto depende del lenguaje en que use GTK+. Por ejemplo en C > se usan callbacks, pero en C# se usan eventos y delegados. En java se > usan interfaces, en Python se usan objetos función. > > Exactamente, yo estaba hablando de C, no de ninguno de los demás. Cuando te refieres a interfaces en Java debe ser el mismo mecanismo o similar a swing ? de ser así es muy complejo de utilizar. > En resumen creo que una ventaja de GTK+ es que tiene un mejor soporte > para otros lenguajes de programación. Con esto no quiero decir que no > existan bindings de Qt para otros lenguajes, sólo que no para tantos y > no están tan soportados. > Nuevamente, me gustaría que sustentes este punto. > No conozco tanto Qt como para decir sus desventajas, pero una que yo > le veo es que si usted desarrolla con Qt tiene que usar > obligatoriamente la licencia GPL (o QPL que es casi lo mismo) o de lo > contrario pagar una licencia comercial. > No es del todo una desventaja, lo estás poniendo como si el hecho que tener que pagar por la licencia fuera algo malo sólo por el hecho que vale plata. Ese licenciamiento es más bien un servicio en el cual tienes incluido soporte técnico durante el tiempo que sea válida la licencia. Con una liberería gratuíta como GTK no vas a tener este tipo de soporte, sólo el comunitario, lo que para una empresa desarrolladora de software puede que no sea suficiente cuando hay un deadline que cumplir. En estos casos lo que se necesitan son soluciones rápidas y puntuales, el soporte comunitario a veces puede ser muy demorado y en un ambiente corporativo lo más seguro es que no haya ese tiempo para esperar. Además hay estudios (lo leí en un blog hace muuuuchos años, no tengo la referencia en el momento) en los que se demuestra que el costo de este licenciamiento es de al rededor del 1% del costo del proyecto, un costo muy bajo para los beneficios que trae. Entonces bajo esa perspectiva, que inconveniente hay en pagar por soporte técnico? > Una ventaja de GTK es que es ligeramente más popular, esto representa > más ejemplos de programas, más librerías de terceros y más soporte de > la comunidad. > Yo no me atrevería a decir esto sin números para sustentarlo, porque hasta donde recuerdo (y por favor no entremos en el típico flame) de una encuesta que hace algún sitio en internet que en este momento no me acuerdo, KDE tenía al rededor del 35% del mercado y Gnome un poco menos del 30% lo que refutaría lo que tu dices, pero no lo aseguro porque no recuerdo en este momento en donde fué que leí eso. Y si fuera al contrario, que sea más popular no quiere decir que sea mejor, es sólo que han hecho una mejor labor en "marketing", un simple ejemplo de esto es que Windows y sus API's son los más usados del mundo por ende se podría decir que los más populares, pero esto los hace los mejores ? no creo. > En definitivamente ambas librerías son muy buenas. Lo que más le > recomiendo es que, al igual que hicimos Juan Luis y yo, las pruebe > ambas y se quedes con la que más le guste. > > Completamente de acuerdo, aunque son muy similares para lo que sirven, lo mejor es probarlas y hacerse una opinión propia al respecto. Ahh otra cosa que recuerdo en este momento que hasta donde tengo entendido GTK no tiene pero Qt si, es un API muy fuerte para desarrollo de aplicaciones de red y de consola. Un ejemplo muy bacano es Mumble [1], un servidor de voz sobre IP hecho completamente en Qt 4. [1] http://mumble.sourceforge.net/ Saludos, -- Juan Luis Baptiste _______________________________________________ Lista de correo de Colibri Colibri@listas.el-directorio.org http://listas.el-directorio.org/cgi-bin/mailman/listinfo/colibri El Directorio, el sitio del Software Libre en Colombia: http://www.el-directorio.org