12
votes

Quelles langues permettent de créer des exécutables natives multiplateformes?

Je suis frustré de découvrir que Java manque de solution acceptable pour la création de programmes qui s'exécutent en double-clic. Autre que .NET pour Windows, quels langages de programmation modernes et de haut niveau puis-je écrire du code dans lequel peut être compilé pour différentes plates-formes et exécuter en tant que native / binaire dans chacune (Windows, Linux, OSX (en option))

En supposant que je voulais écrire du code dans Python, par exemple, existe-t-il une manière cohérente que je pourrais distribuer mon logiciel qui ne nécessiterait pas que les utilisateurs fassent quelque chose de spécial pour le faire fonctionner? Je souhaite écrire et distribuer des logiciels pour ordinateur-illithate et Java s'est avéré être une vraie douleur à cet égard.

Clarification : Quand je dis une plate-forme croisée, je veux dire qu'il existe des moyens de compiler mon code source en utilisant différents compilateurs pour chaque système cible. Je n'ai pas besoin d'une solution de compilée, une fois que je veux juste une expérience simple pour les utilisateurs du logiciel, même si je dois la compiler et de travailler sur des problèmes de code pour chaque plate-forme cible.


3 commentaires

Les programmes Java peuvent fonctionner avec double-cliquez sur Windows, Linux et Mac.


Modifier Vous le faites mal. Être plate-forme croisée ne signifie pas, codage aveugle. Bien que Wora fonctionne pour les petites applications, les grandes applications ont besoin de réglage pour chaque plate-forme cible. Les excellents exemples sont les IDE's's's's's's's Double-cliquez pour installer et exécuter, par exemple "Netbeans, Eclipse, Intellij Idea (ou Limewire si vous voulez une application de rue référence), vous pouvez aller sur un site Web et vous "LL Trouver une installation installable et peut être exécutée par ordinateur-analphabètes mais Vous devez travailler plus fort qu'un simple helloworld.jar


Essayez de rouille. Tu l'adoreras! Voir ma réponse détaillée ci-dessous.


9 Réponses :


7
votes

c est le plus proche que vous allez obtenir.

Les langues offertes à la meilleure exécution croisée à la plate-forme vont être celles qui font pas code de native, comme la plate-forme Java et la structure .NET. Vous pouvez également utiliser un langage interprété plutôt que compilé.

J'ai expérimenté Mono et C # avec Winforms. Il s'est avéré être une assez bonne combinaison jusqu'à présent. Sous Windows, l'exécutable peut être exécuté en double-cliquant sur l'exécutable directement ou en créant un raccourci pour celui-ci pouvant être double-cliqué. Sous Linux, l'exécutable peut être exécutée à partir d'une icône qui exécute un petit script et l'expérience utilisateur est essentiellement la même.

Je pense que vous pouvez vous attendre à une expérience similaire avec Python.


2 commentaires

Une expérience similaire à la mienne avec Java ou à vous avec C #?


Le mien avec c #. Les mono-filles ont créé une bibliothèque essentiellement compatible avec Winforms, de sorte que quiconque a fait ce type de programmation avant est tout à fait à l'aise à Mono. Mais si vous êtes à l'aise avec Java, il n'y a aucune raison de penser à la raison pour laquelle vous ne pouvez pas créer de programmes directement à partir d'une icône sur le bureau sur Linux ou Windows.



1
votes

J'ai eu une très bonne expérience avec Delphi de Borland compilée dans Windows, il fonctionnait parfaitement en utilisant du vin, Delphi par défaut compile tout dans un exe. Évitez simplement d'utiliser la bibliothèque Win32-Voodoo.

L'autre option pour croiser la compilation Il est C \ C ++, Eclipse et GCC, vous pouvez également compiler des architectures différentes par i386


0 commentaires

3
votes

Si vous êtes habitué à Delphi, alors Lazarus peut fournir un environnement similaire, mais permettre à la plate-forme multiples compilation. Malheureusement, vous ne pouvez pas simplement prendre vos composants VCL et les déposer, car ceux-ci ont tendance à être spécifiques à Windows / -Centric. Certains fournisseurs de composants VCL fournissent également des versions LCL.


0 commentaires

4
votes

C ++

Prenez Google Chrome. C'est un nouveau navigateur Web et un excellent exemple d'application multiplateforme native et il est écrit en C ++.

Bien sûr, ils doivent "Problèmes de code de travail pour chaque plate-forme cible" comme vous l'avez dit, mais cela fonctionne certainement!


1 commentaires

Avec Qt, la rédaction d'une application Cross Platform C ++ peut être assez enrichissante.



1
votes

Il est possible et assez facile de «compiler» des programmes Java à différentes plates-formes. Vous pouvez les convertir en fichiers exécutables .jar, ou vous pouvez utiliser un programme tel que JSMooth.

Si vous devez pouvoir le compiler pour différentes plates-formes, vous pouvez utiliser une langue interprétée comme Perl et la compiler au code C. Étant donné que C peut être facilement compilé sur la plate-forme cible, l'utilisateur n'a pas besoin d'un interprète.


1 commentaires

Cyron est intéressant. Le binaire est beaucoup plus petit qu'un binaire Golang



0
votes

Comme indiqué par d'autres, votre meilleur choix pour excepty ce que vous demandez est C, il compilera sur presque n'importe quelle plate-forme, comme son "assembleur de haut niveau".

Cela dit, pour atteindre l'objectif que vous voulez, une langue gérée va être votre meilleur choix. Quelque chose comme Silverlight for Windows / OSX (et Moonlight for mono sur Linux) sera votre meilleur choix, il fournira en outre un code - une fois déploié partout.

Adobe Flash / Flex / Air serait une autre option, qui vous donnera une compilation une fois déployée n'importe où, je sais que ce n'est pas ce que vous avez demandé, mais c'est la fermeture de la réalisation de l'objectif d'une simple expérience de l'utilisateur.


0 commentaires

8
votes

Ajout Go à la liste.

Pour activer la compilation croisée en déplacement, vous devez Re-compiler la bibliothèque d'exécution et la bibliothèque standard : < / p> xxx

puis spécifie le système d'exploitation cible avant de compiler: xxx


1 commentaires

Bien que j'ai recommandé la rouille comme l'une des réponses ici, je suis tombé amoureux d'aller bientôt après. J'irais aller au-dessus de la rouille en raison de sa GC, ce qui facilite la vie, mais c'est juste moi. Upvote btw.



5
votes

rouille devrait être dans cette liste.

  1. Installez la trappe de rouille de https://www.rust-lang.org/en- US /
  2. cargo nouveau "my_first_rust_progam" --bin
  3. cd my_first_rust_progam
  4. gui de la cargaison

    Non vraiment c'est tout. Aucune condition préalable à l'installation des actionnaires ou des cadres pour les utilisateurs finaux. C'est vraiment aussi simple. Vous venez d'écrire et de compiler un minuscule «World Hello World» à un binaire natif et exécuté aussi.

    Il y a une belle documentation chez https://doc.rust-lang.org/ pour vous obtenir commencé. Apprendre la rouille aujourd'hui!


1 commentaires

Peu de temps après avoir écrit cette réponse, j'ai pris le temps d'apprendre partir. Je dirais qu'il est meilleur en termes de productivité si vous ne développez pas les applications de systèmes. J'irais juste avec Golang sur la rouille pendant environ 99% des cas d'utilisation du serveur que j'ai rencontré dans toute ma carrière. Apprendre les deux. Vous ne pouvez pas vous tromper: D



-2
votes

JavaScript toujours. C'est une langue interprétée, une plate-forme croisée et le code source est directement convertie en code machine avec l'utilisation de l'interprète. Toute utilisateur de fond de science non informatique peut l'utiliser simplement en double-clic avec une configuration supplémentaire.


1 commentaires

peut l'utiliser juste en double-cliquez sur - si l'ordinateur dispose d'un interprète JavaScript configuré qui exécutera le fichier. Pas très différent d'une exigence d'exécution Java.