Estoy tratando de entender las diferencias entre una app y un programa en Windows 10.
La diferencia entre los dos es principalmente la plataforma(s) de programación:
-
Las «Apps» utilizan la Plataforma Universal de Windows (UWP), introducida con Windows 10.
-
Las aplicaciones clásicas de «Escritorio» suelen utilizar la tradicional API Win32/COM o, posiblemente, la más reciente .NET Framework (aunque Microsoft incluye técnicamente la UWP en esta lista).
Consideraciones prácticas
En comparación con las Apps, los programas tradicionales de escritorio suelen ser más potentes y no tienen restricciones en su conjunto. Debido a que las Apps están pensadas para ser multiplataforma entre los productos de Microsoft (PC/Xbox/Tablet/Phone) y a que las consideraciones de hardware/seguridad son tan diferentes entre estos dispositivos, hay limitaciones incorporadas en la plataforma UWP que potencialmente restringen lo que las Apps pueden hacer y lo bien que pueden hacerlo.
Esto importa menos con ciertos tipos de programas ligeros y ser multiplataforma puede incluso ser un beneficio en algunos casos. Por ejemplo, cuando Microsoft eliminó los Gadgets de escritorio en Windows, el Gadget de Radio Pandora fue esencialmente resucitado como una App pensada para teléfonos que también podía ser utilizada en Windows 10.
Sin embargo, con aplicaciones de escritorio más «serias» (piensa en los juegos de PC), UWP comienza a perder sus ventajas e incluso puede comenzar a crecer algunas espinas. El nivel de control y poder de programación disponible para un motor de juego especializado basado en Win32 no es fácilmente replicado por una App porque las plataformas UWP y Win32 se implementan de manera muy diferente.
Además, está el problema potencial de los «compromisos» de la App.
Las Apps que utilizan la UWP pueden ser «extendidas» para aprovechar la potencia de un hardware diferente… pero esto no siempre es deseable. Es posible acabar con programas que funcionan de forma muy diferente cuando se ejecutan, por ejemplo, en un ordenador de sobremesa o en una tableta, a pesar de ser (posiblemente) la «misma» aplicación.
Como remedio a este tipo de cosas, conseguir que un programa funcione bien en el hardware menos potente/más restringido suele ser una prioridad. Así que un programa implementado como una App podría limitar su fidelidad gráfica en general para minimizar las diferencias visuales. Del mismo modo, tal vez un conjunto de controles en pantalla diseñados para una interfaz táctil podría no funcionar tan bien con un ratón (tos… Charms de Windows 8… tos).
Las aplicaciones de escritorio a menudo se enfrentan a menos de estos problemas en que las especificaciones del PC (portátil o de otro tipo) tienden a variar menos dentro de una determinada generación de hardware.
Otras cosas
Hay un par de cosas más que vale la pena señalar.
En primer lugar, a pesar de estar disponibles en un PC tradicional o incluso en una consola, las Apps están directamente dirigidas al espacio móvil. Microsoft ha hecho un esfuerzo concertado para que sólo estén disponibles en su tienda, al igual que hace Apple con sus productos o el monopolio de facto que tiene Google en Android. En cambio, los programas de escritorio siguen estando disponibles en diversas fuentes.
En segundo lugar, aunque parezca poco, los iconos marcan la diferencia. No sólo con los live tiles y el lugar en el que viven los iconos de forma natural, sino también con la posibilidad de eliminarlos en determinadas circunstancias. Las aplicaciones de escritorio pueden tener sus iconos eliminados desde el menú Todas las aplicaciones, mientras que las Apps no pueden. Si quieres eliminar el icono de una aplicación del menú Todas las aplicaciones, debes desinstalarla.
Más ampliamente, las aplicaciones en general se instalan y viven en carpetas fijas completamente separadas a las que posiblemente no se pretende que los usuarios tengan acceso. Los programas Win32, por otro lado, conservan la capacidad de ser instalados en casi cualquier lugar y son más fácilmente accesibles por quien está utilizando un determinado dispositivo.