web-dev-qa-db-fra.com

Application de bureau multiplateforme - Windows + Mac + Linux

Je crée une application pour plusieurs plates-formes de bureau: Windows, Mac et peut-être plus tard pour Linux.

Je me demandais quel langage de programmation et quelle combinaison IDE serait le meilleur pour moi:

  1. Le langage de programmation doit être soit C # (préféré) ou Java.
  2. Les bibliothèques de base doivent être partagées entre toutes les plates-formes, ce qui signifie que toutes les plates-formes doivent être liées à une seule bibliothèque de base (par bibliothèque, je veux dire une liste de classes et de fonctions).
  3. Windows et Mac sont prioritaires, l'application Linux est destinée aux futures planifications.
  4. La conception de l'application est entièrement personnalisée, elle ne suit aucune directive de chaque plate-forme.

Je suis coincé entre ces trois solutions:

  1. Utilisez Xamarin.Mac + Visual Studio pour Windows et liez les classes principales entre elles.
  2. Utilisez GTK # pour l'ensemble du projet et compilez plusieurs versions pour chaque plate-forme.
  3. Utilisez Java pour l'ensemble du projet et compilez plusieurs versions pour chaque plate-forme.

Pour les # 2 et # 3, j'ai besoin d'un conseil sur la langue qui me convient le mieux, compte tenu de la conception de mon application. Je veux dire, lequel a une meilleure capacité de création d'interface graphique pour mon objectif?

BTW GTK # utilise différentes bibliothèques pour chaque plate-forme, ce qui devrait être un encombrement pour mon architecture principale, ou non?!

18
Hossain Alhaidari

Trois ans plus tard, Javascript est désormais également un concurrent sérieux dans ce débat.

Il y a plusieurs options dans l'espace.

Et d'autres

Même Microsoft a fourni Visual Studio Code, la version multiplateforme de leur environnement de développement, qui est écrite en Javascript.

Sur quoi est basé l'éditeur de code Visual Studio

Les avantages incluent l'utilisation des nombreuses bibliothèques Web disponibles et la création/utilisation de vos compétences en développement Web.

10
GrahamMc

Cela ressemble à un travail pour Xojo ou quelque chose de similaire: http://www.xojo.com

Constructions Mac, Windows, Linux avec une conception graphique simple et des applications natives. L'interface utilisateur personnalisée se fait facilement également, et vous auriez alors une base de code pour les trois plates-formes. Vous pouvez télécharger et utiliser le logiciel gratuitement pour développer et tester, ne nécessite une licence qu'une fois que vous décidez de créer votre application.

7
mjdth

"GTK # utilise des bibliothèques différentes pour chaque plate-forme", voulez-vous dire différents backends de rendu (comme X11, Cairo)?

Vous n'avez besoin de créer votre application GTK # qu'une seule fois. Cependant, vous devez regrouper le runtime GTK # (qui est différent pour Windows et Mac) avec votre application. Banshee est un bon exemple que vous pouvez suivre.

3
Lex Li

Vous pouvez également considérer le Livecode

Livecode: http://livecode.com Pour toute plate-forme à l'exception du Web, il est open source et comprend également des cibles mobiles, si votre code est suffisamment flexible pour ne pas être C # ou Java.

Une option consiste à créer la logique de base dans une bibliothèque compilée à l'aide de l'indépendance C # et GUI, puis de la brancher sur le livecode, laissant le travail de l'interface utilisateur pour cet outil.

2
merlucin

Votre meilleur pari est probablement d'utiliser Nevron Open Vision . Il s'agit d'une plate-forme d'interface utilisateur multiplateforme basée sur C #, qui implémente la plupart des contrôles dont vous avez besoin pour créer des applications prêtes pour l'entreprise. C'est le cadre de MyDraw (www.mydraw.com) - un programme de dessin professionnel similaire à Visio. MyDraw est entièrement construit avec Nevron Open Vision et ne nécessite aucune autre bibliothèque tierce. Nous le développons principalement sous Windows et le compilons simplement sur Mac. Nous allons bientôt ajouter la prise en charge des hôtes Linux et WebAssembly.

0
Ivaylo Milanov