curiosidad de aplicaciones web

buenas amigos, es la primera vez que escribo aqui, hace 1 mes que escubr xojo y tengo una curiosidad, me encanta la facultad de poder compilar un servidor junto a una app web, es decir que sea autonoma, el caso esque yo normalmente trabajo en c++ y queria saber si xojo usa c o c++?, podrian decirme donde encontrar documentos que me permitan averiguar como integrar un pequeo servidor creado por mi que permita correr su propia app? gracias

Juan, XOJO utiliza una linguagem propia. En XOJO home page hay el tpico de documentaciones.

si pero el ejecutable final es de visual c++ 2010

juan, el ejecutable es un binario con alias .exe .app .cgi etc…
el ejecutable no contiene cdigo byte como los de c++, .net.java, etc… no se puede descompilar. los ejecutables en xojo son cdigo maquina.
en xojo puedes compilar para mac, windows, linux, web (.cgi) y prximamente iOS todo nativamente.

atento a tus comentarios,
saludos

he usado 12 detectores y todos indican vc++ 10 solo es curiosidad nada mas

Me estuve documentando sobre los binarios de Xojo. Para conseguir un ejecutable en cdigo mquina al final debe pasar necesariamente o por cdigo en C++, o por cdigo en ensamblador directamente, o con fragmentos de ambos lenguajes, pero se podra usar el mismo compilador. Los compiladores de C++ aceptan cdigo en ensamblador. Todo depender del nivel de optimizacin al que hayan llegado, pero no me extraa que se compile finalmente con un compilador C++.

Bastara con cualquier servidor web que soporte CGI. Mongoose es un servidor web liviano al estilo de lo que comentas, lstima que de error porque el CGI tiene un tamao muy grande.

quieres decir que el codigo html javascript css es ensamblador? mmmmm me cuesta creer que se pasen horas y horas programando en ensamblador para un simple hola mundo, ahora en cuanto a las cgis ¿pueden ser autonomas?, debera incluir apache ya integrado, lo cual me da a entender que usan c ya que apache es c puro.

El deploy de la aplicacin se realiza a travs de un ejecutable CGI, pero no lleva ms que un .exe detrs. Es ms, el .cgi lo que hace es desde cdigo fuente perl llamar al ejecutable creado.

Internamente tendrn un traductor de lo que se desarrolla en el IDE al lenguaje finalmente elegido para compilar (estoy de acuerdo en que lo lgico es que sea C++)

El modo Standalone permite desplegar directamente el ejecutable como un servidor web. A m es lo que ms me interes de todo esto, lo sencillo que es desplegar una aplicacin web.

ami me sorprende esto, es ingenioso y por eso queria saber como, si es un servidor ejecutando codigo c++ traducido a prl o que.

buen, entonces si es compilacin de c++…
como trabaja en mac?? si los lenjuages que trabajan con c++ en mac son : Xcode y Zinjai. En donde entra xojo en mac?
yo pienso que si son binarios puros, ya que no requieren de ningn tipo de framework adicional al propia.
windows para su despliegue de cualquier aplicacin requiere de framework.net x.x, sin embargo al crear una app con xojo no requieres de ninguna instalacin adicional para el despliegue. he probado esto en un windos xp sp1 (no contiene framework.net) y funciona perfecto.
creo que lo nico que hace en las compilacin web es iniciar procesos de rutina (perl,http,etc…) por que si vemos el cdigo del .cgi es todo el lenguaje de perl. pero este cgi solo es el vehculo para la verdadera aplicacin que se ejecuta despus.
otra duda, como es posible que las compilaciones para mac y linux en verdad si son funcionales???

atento a sus comentarios.
saludos.

Alberto, la prueba est en la carpeta “Libs” de dependencias: Usa la DLL msvcp100.dll.

Voy a hablar primero de las versiones de escritorio:

Framework.NET es una mquina parecida a Java (salvando las distancias, claro). Es un framework que tiene una serie de libreras que facilitan el desarrollo en .NET, es una capa entre el cdigo mquina y el ejecutable resultante del desarrollo, pero eso no significa que para programar en entorno de escritorio para Windows se necesite obligatoriamente este Framework: Es obligatorio para los ejecutables desarrollados en la tecnologa .NET, que no es la nica que desarrolla aplicaciones para Windows.

En MAC usa Cocoa o Carbon, dependiendo de la versin de Mac, que son Frameworks del estilo del Framework.NET de Windows. Xcode utiliza las libreras API’s de Cocoa para ejecutar aplicaciones Mac. Aqu viene ms informacin:
https://developer.apple.com/technologies/mac/cocoa.html

Para Linux necesita las libreras grficas GTK+ para funcionar, al menos para las aplicaciones de escritorio. No he
podido probar todava aplicaciones Linux, ni CGI, ni de escritorio. Por favor, que alguien que lo haya probado a ver si nos puede aclarar esta parte.

Si volvemos a las aplicaciones Web, si nos fijamos en la carpeta de binarios que se deposita en la carpeta Libs de una aplicacin CGI, vemos que contina grabndose el fichero msvcp100.dll (y msvcr100.dll), pertenecientes a Visual C++, y adems otras libreras adaptadas para el deploy en la Web:

Internet Encodings.dll
SSLSocket.dll

Por tanto, siguiendo la misma lgica, en Mac y Linux debe de hacer igual. Yo no he llegado todava a probarlos. Si alguien lo ha probado que nos ayude a salir completamente de dudas.

entonces tenia razon, vc++ debe tener librerias que permiten imprimir html css javascript y usar funciones para implementar dinamismo, he revisado la library del 2010 y dice que si se puede cgi y fastcgi,cpero esas debe ejecutarse en un servidor.

Voy a contaros una prueba que hice. Cog un ejecutable de aplicacin de escritorio, cog un fichero .cgi y sustitu el fichero ejecutable compilado para CGI con el de escritorio. Sabis lo que ocurri?
Que cada vez que se llamaba a la pgina del cgi, se ejecutaba la aplicacin de escritorio directamente en el servidor, sin verse en el cliente web. Y como en el cliente me daba error, repet una y otra vez la llamada. Cuando me d cuenta tena varias instancias de la aplicacin ejecutndose en el entorno de escritorio, en este caso Windows.

Esto a m me dice lo que cambia se realiza a nivel de compilacin slo para la capa de presentacin, que en el caso de la web, toda la salida grfica la redirige hacia el navegador, y algunas libreras que realizarn esta funcin, las libreras adicionales que estn en la carpeta Libs.

Efectivamente, necesitan un servidor web, con la diferencia de que en modo StandAlone, es la propia aplicacin la que incorpora un servidor propio para su autoejecucin.

Pero para eso seguramente estn las libreras adicionales que incorpora. Por cierto, he comprobado que las libreras de la carpeta Libs son las mismas tanto para aplicaciones desktop como para web, al menos a simple vista. Supongo que es una manera de simplificar la distribucin de los ficheros, pero no sabra decir.

Por aclarar:

Xojo NO es C++ (y, definitivamente, NO es Visual C++). Utilizar el DLL es precisamente porque en cada plataforma se usa el framework de esa plataforma. Xojo compila a cdigo mquina directamente, no pasa a C++ y de ah a binario.

Una aplicacin web de Xojo no es diferente a una de escritorio a la que manualmente le incluyeses un servidor web (si usas esa opcin) o una de consola (si usas CGI). La ventaja de utilizar la versin web es los miles y miles de lneas de cdigo y dolores de cabeza que te ahorraras implementando toda esa funcionalidad.

Una aplicacin web de Xojo es un servidor ejecutable nico (a menos que incluyas helpers en forma de aplicaciones de consola, tiles para aprovechar multiples cores, igual que en una de escritorio) que es a la vez servidor web y aplicacin que interpreta inputs y presenta resultados. La nica diferencia con una de escritorio es que no usa Cocoa o Win32 Controls.

Por aclarar: En Windows hay tres capas de presentacin actualmente (sin incluir Metro(WinRT). WinForms, WPF y Win32 Controls, WinForms y WPF son parte de .NET (WPF es una capa nueva que aprovecha aceleraciones por hardware y dems).

Xojo utiliza Win32, que es la capa de presentacin de ms bajo nivel que hay en Windows. An as, con declares se puede llamar a funciones de otros DLLs, como de WPF. Como sucede con Mac que a travs de Declares se puede acceder a controles no nativos. Obviamente al hacer esto es necesario incluir el DLL correspondiente y en el caso de dibujar los controles requiere msvcp100.dll.

Es importante recordar que msvcp100.dll es la librera de C++ estndar pero ese nombre no significa que se haya usado c++ sino que contiene las funciones que se consideran bajo esa clasificacion: http://en.wikipedia.org/wiki/C%2B%2B_Standard_Library

En el caso de aplicaciones web el resultado final se presenta como html, css y javascript. No hay Perl o Ruby o Python de por medio.

Todo esto est documentado. Xojo lleva desde 1995 y se conoce la parte tcnica de cmo han funcionado sus distintas versiones. Hubo mucho ruido cuando los ejecutables dejaron de integrar los DLLs y cuando se empez a requerir msvcp100.dll hace unos aos. Me extraa el proceso de investigacin que estis haciendo porque todo esto es conocido (aunque imagino que en Espaol habr poco). No haba entrado por vacaciones al foro en un tiempo, eso s.

y como va a poderse escribir htm en codigo maquina? raro no?

pues la verdad todavia sigo en duda, en la carpeta "Libs, en compilaciones para linux son extensin .so y no aparece el archivo msvcp100.dll (logicamente .dll para windows) pero el archivo no esta, en una compilacin de linux para web que tengo, solo las dependencias…internet encodings, sslsocket, etc…

He realizado pruebas en una mac book pro, verdaderamente funcional sin problemas, de escritorio y web. En linux solo en virtualizacin y de todos modos funciono perfecto.

Aparte xojo contiene solo objetos nativos, pos eso toman la apariencia en cada compilacion para cada OS.
He puesto a prueba a xojo con compaeros programadores, que me dicen lo tan bueno que es C++, Visual Studio, Java, etc…
sin decir ni presentarles a xojo, solo haciendoles comparaciones de; por ejemplo, compila para linux, la respuesta es: no pues no, se tendria que hacer web, ok entonces aslo web, y se empiezan a romper la cabeza de como lo harian…
Hay mucho compiladores o convertidores de app de win-mac win-linux pero ninguno funcional, y lo que xojo hace es verdaderamente una Realidad!!
Todo esto es porque, si somos programadores, si es bueno saber en que estamos trabajando, pero la pregunta a qui es: Y si Funciona? todos conocemos la respuesta si trabajamos con xojo!!

lo de convertir no es necesario, por ejemplo gcc permite compilacion cruzada

No entiendo que se est diciendo aqu. No hay HTML en la aplicacin final. No hay conversin de HTM a Cdigo mquina.

El servidor web es una aplicacin. Muestra datos (texto en su mayora) y recibe datos (texto en su mayora, en formularios).

La aplicacin binaria en cdigo mquina genera texto (igual que lo hara una aplicacin de terminal/consola). Ese texto es HTML y JS.

FileMaker Pro hace algo similar. Permite compartir cualquier base de datos por web y ese servidor web est incorporado en el ejecutable. Transmission, CUPs y hasta el eDonkey tienen servicios similares, donde un servidor web se ejecuta desde el binario.

Una nota: No todos los controles de Xojo son nativos. Un ejemplo perfecto es la listbox, que es un control creado por la gente de Xojo mucho antes de que las tres plataformas contasen con un grid decente.

Se agradecen las aclaraciones con respecto a este tema.

Efectivamente una aplicacin CGI es una aplicacin de consola con la salida de texto hacia un navegador, que interpreta el texto de salida, lo formatea y visualiza.