tipos - ¿Hay una API Core Linux análoga a Windows WINAPI, en particular para crear aplicaciones GUI?
tipos de servidores linux (7)
Me estoy moviendo de la programación de Windows (por la programación de Windows me refiero al uso de la Windows API
) a la Programación de Linux.
Para programar Windows, la opción que tenemos es Win32API (MFC es solo un contenedor de C ++ para el mismo).
Quiero saber si hay algo así como la Linux API
(equivalente a WINAPI) que está expuesta directamente al programador? ¿Dónde puedo encontrar la referencia?
Con mi poco conocimiento de la biblioteca POSIX, veo que envuelve parte de la Linux API
de Linux API
. Pero, ¿qué hay de crear aplicaciones GUI? POSIX no ofrece eso. Sé que hay toneladas de kits de herramientas de widgets de terceros como gtk, Qt, etc. Pero no quiero usar las bibliotecas que encapsulan la API de Linux. Quiero aprender usando la "API Core Linux".
Si hay algo que debería saber, infórmelo. Cualquier programador que esté familiarizado con la programación de Windows y Linux, mapee las terminologías del mundo de Linux para poder avanzar rápidamente.
Cualquier recurso (libros, tutoriales, referencias ) es muy apreciado.
Creo que estás buscando algo que no existe exactamente. A diferencia de la API de Win32, no existe una "API de Linux" para realizar aplicaciones de GUI. Lo más cercano que se puede obtener es el protocolo X en sí, que es una forma bastante baja de GUI (es mucho más detallado y arcaico que Win32 GDI, por ejemplo). Es por eso que existen wrappers como GTK y Qt que ocultan los detalles del protocolo X.
El protocolo X está disponible para los programas C que usan XLib .
Eche un vistazo a El Cairo . Esto es más o menos similar a GDI + y está bajo el capó de algunos de los pocos programas de GUI utilizables para Linux, es decir, Firefox o Eclipse (SWT). Envuelve la mayoría de las cosas natsy y antiguas de Linux en una buena API que se ejecuta en la mayoría de las instalaciones de Linux sin bloquearlo en un subsistema completo como GTK o QT.
Esto va a sonar loco ya que estás preguntando por cosas "serias" como C ++ y C (y la "API central de Linux"), pero es posible que desees considerar desarrollar otra cosa. Por ejemplo:
- Java Swing (¡a muchas personas les encanta! Otros lo odian y lo llaman obsoleto)
- Mono GTK # (C # o VisualBasic o lo que quieras, mucha gente dice que es genial, pero no son tantas)
- Adobe AIR (ActionScript, puede que lo odies)
- Titanio (totalmente nuevo y no comprobado, pero al mismo tiempo tiene mucho revuelo en el mundo del iPhone)
Y muchas otras posibilidades, algunas de las cuales le permiten trabajar en múltiples plataformas a la vez.
Lo siento si esta respuesta no es para nada lo que estás buscando. Las respuestas "reales" en Linux son "elegir un kit de herramientas", que tampoco es ninguna respuesta :)
Linux y win no son tan diferentes como parece.
En ambos sistemas existe un kernel que no es gráfico.
Es solo que Microsoft no documenta este kernel y publica una API que hace referencia a varios componentes diferentes.
En Unix, es más transparente. Realmente hay una API del núcleo (que no es GUI) y está publicada. Luego, hay servicios que se ejecutan en la parte superior de este, opcionalmente, y sus interfaces se publican sin un intento de fusionarlos en una capa imaginaria que realmente no existe.
Entonces, el nivel más bajo de la GUI es un Sistema X Window y tiene una biblioteca de nivel más bajo llamada Xlib . Hay varias bibliotecas que se ejecutan encima de esta, como ha notado.
Lo que debes entender es que Linux es muy simple en cuanto a lo que contiene. La API de Linux "Core" es POSIX y glibc. Linux NO es gráfico por defecto, por lo que no hay una biblioteca de gráficos central. Realmente, Windows podría desmantelarse para que no tenga gráficos también y, por lo tanto, no tenga partes de la API win32 como GDI. Esto debes entenderlo. Linux es muy liviano en comparación con Windows.
Para Linux hay dos kits de herramientas gráficas principales, GTK y Qt. Yo prefiero GTK, pero investigaría ambos. También tenga en cuenta que GTK y Qt existen para Windows, porque son solo envoltorios. Si vas a echar un vistazo al código de protocolo X para decir xterm
, verás por qué nadie intenta crear aplicaciones gráficas en la parte superior.
Oh, también SDL es bastante agradable, es bastante simple, pero es bueno si solo necesitas un framebuffer para una ventana. Es portátil entre Linux y Windows y muy fácil de aprender. Pero solo se extenderá hasta ahora ...
Recomiendo encarecidamente consultar el marco de la interfaz de usuario de QT / C ++ , posiblemente el conjunto de herramientas de interfaz de usuario más completo para cualquier plataforma.
Lo estamos usando en el trabajo desarrollando aplicaciones multiplataforma que se ejecutan en Windows, OSX y Linux.
También se ejecuta en el sistema operativo de teléfonos inteligentes Nokia Maemo, que recientemente se ha fusionado con el sistema operativo Moblin Linux de Intel, ahora llamado MeeGo.
También están los documentos para las dos plataformas de escritorio diferentes: Gnome y KDE que pueden ayudarlo en ese camino.