it-swarm-fr.com

Est Java (toujours) le langage de choix de la plate-forme croisée?

Quand j'ai commencé à utiliser Java dans les années quatre-vingt-dix, c'était tout " écrire une fois, exécutez n'importe où! " Dès le premier jour . C'était probablement tout vrai alors et je faisais également partie de la chorale.

Je ne sais pas quoi penser à cela plus, en tenant compte de toutes les autres langues à l'aide des roulements multiples plate-forme (Python, Flash, Perl, HTML, PHP ...). Mais je vois toujours beaucoup d'arguments qui dit que vous devriez utiliser Java car il est soi-disant meilleur pour le développement de la plate-forme croisée.

Donc, est-ce que c'est toujours vrai aujourd'hui? Est Java toujours la langue de choix pour le développement multi-plateforme?

  • Veuillez être spécifique avec l'accent sur les aspects croisés de la plate-forme.
  • Je ne demande pas de comparaisons de caractéristiques de la langue générale.

Mise à jour: de grandes réponses jusqu'à présent! La plupart des réponses semblent favoriser Java ou Web. Toute entrée de la foule de script?

20
Martin Wickman

des langages de style de script tels que python aussi facilitent le développement de la plate-forme croisée. Maintenant, si vous aimez Python (ou d'autres langues telles que ces langues) dépend de vous et nous avons probablement Vous n'avez pas besoin de commencer ce débat ici.

Java essaie de vous forcer à écrire du code qui sera exécuté de manière portante, tandis que python vous permet d'écrire un code portable. Le python Language sera exécuté. Les bibliothèques externes peuvent ou non. De plus, python== donnera librement accès aux services spécifiques à la plate-forme.

Est-ce que Java un avantage là-bas? Je pense que dans les deux cas, vous pouvez écrire le code portable avec une facilité similaire. C'est-à-dire que vous pouvez écrire du code et il fonctionnera généralement sur différentes plates-formes. Mais vous ne pouvez pas obtenir loin avec juste un code d'écriture et en supposant que cela fonctionnera partout. J'ai travaillé sur un python projet qui a produit la version pour Windows, Linux et Mac et nous avons rencontré très peu de problèmes de plateformes croisées. Le seul que je me souvienne était due à un bogue dans la bibliothèque que nous utilisions Pygame, qui a provoqué des problèmes de dessin sur Linux. Cela a été corrigé en améliorant la version de Pygame que nous avons utilisée)

Un autre problème est le déploiement. Si vous souhaitez distribuer des programmes autonomes qui exécutent votre code, vous devrez produire différentes versions pour différentes plates-formes. Pour Java Vous pouvez distribuer une version et supposer que l'utilisateur a Java installé ou peut l'installer. Dans ce cas Java = gagne probablement dans la simplicité du département de déploiement.

En fin de compte, je pense que cela revient à quelle langue vous aimez travailler et quel type de déploiement vous devez effectuer.

10
Winston Ewert

C'est aussi vrai aujourd'hui qu'il était à l'époque - c'est-à-dire non entièrement. =Java== Ecrivez une fois, testez et déboguez partout. Bien sûr, c'est bien moins de travail qu'un port complètement frais, mais c'est généralement plus de travail que le battage médiatique initial nous a cru.

Notre produit a un Java Server qui s'exécutera sur Windows ou Linux, mais nous avons vu des problèmes spécifiques au système d'exploitation et assurez-vous que nous disposons des serveurs Linux et Windows disponibles pour supporter/tester si nécessaire. Java UIS a tendance à avoir plus de problèmes que les serveurs (bien que beaucoup soient cosmétiques et peuvent donc être ignorés en fonction de l'application).

Bien que pas strictement une langue pour moi, le Web est la plate-forme de choix croisée croisée. Un front frontal HTML/JavaScript signifie que votre application s'exécutera à peu près n'importe quelle plate-forme client et dans la plupart des cas, ce qui était le véritable objectif - ne pas avoir à s'inquiéter s'il s'agissait d'un Mac ou d'un PC, quelle version du système d'exploitation et ainsi de suite.

Bien sûr, vous allez généralement dicter la plate-forme de serveur, mais lorsqu'il s'agit simplement que les gens deviennent beaucoup plus flexibles, en particulier ces jours-ci lorsque la plupart des entreprises prennent déjà en charge un mélange de serveurs Windows et Linux.

14
Jon Hopkins

Personnellement, je dirais que Java est toujours le langage de choix croisé de la plate-forme croisée et de rester là-bas pendant un certain temps (aux côtés d'applications Web). J'en ai écrit plus sur le sujet de ce post sur Java comme une plate-forme de choix , mais sur le front de la plate-forme croisée en particulier:

  • Tant que vos dépendances sont prudentes avec vos dépendances (par exemple, éviter les bibliothèques qui utilisent JNI pour interfacer avec code natif), alors Java peut être écrit à l'écriture non modifiée sur toutes les principales plates-formes JVM

  • Beacuse Java est généralement distribué en tant que bytecode indépendant de la machine, vous pouvez exécuter sans recompilation sur n'importe quel JVM (puisque le JVM local lui-même gère Jit-compilation au code natif). Par exemple, j'ai réussi à obtenir une application d'interface graphique complexe raisonnable pour exécuter la première fois sur un Mac après le développement de Windows - avec le Même fichier JAR . Contrairez à la plupart des autres langues multiples-plate-forme, qui nécessitent généralement différentes bibliothèques ou un recompilement pour une plate-forme différente.

  • Beaucoup de bibliothèques principales dont vous avez besoin (interface graphique, mise en réseau, IO, etc.) font partie du temps d'exécution standard et écrit sous une manière continue. Donc, vous n'avez pas besoin de chasser et de tester des bibliothèques multi-plateformes, vous êtes assuré que tout ce dont vous avez besoin est déjà là dans l'environnement d'exécution.

9
mikera

Je pense que vous avez ces choix:

1) Utilisez soit un

  • compilé ou
  • langage interprété.

2) Comment allez-vous coller et livrer votre code?

  • Une "front-end", un binaire/script?
  • Une "front-end", plusieurs binaires/scripts?
  • Plusieurs "fronts", plusieurs binaires/scripts?

Ces choix affectent la performance, la visibilité et la distribution du code Soure.

Ça vous dérange de donner votre code source? Les langues compilées pourraient être pour vous. Les langues compilées semblent mieux performer dans les micro-repères que les langues interprétées (même disciplinées). En outre, si vous dépendez d'un environnement d'exécution comme Java, Python, Ruby, etc. Votre code pourrait être plus difficile à distribuer.

J'ai trouvé que les applications de bureau croisé-plate-forme les plus populaires utilisent des fichiers binaires multiples "un front-end, utilisant C/C++ et une bibliothèque de widget de plate-forme de croisement, Egaudaccalactuel, Blender, Firefox, Google Earth, OpenOffice, Skype, Songbird, Stellarium , Vlc.

3
LennyProgrammers

Je vais dire non. =python et =Ruby==== est utilisé beaucoup et donc est JavaScript pour le côté client et serveur. J'utilise personnellement .net et n'ai aucun problème à faire fonctionner Mac et Linux (tout en développant des fenêtres)

-Edit- J'entends LLVM devient populaire mais reste extrêmement petit. Cela vous permettra d'utiliser la plate-forme transversale C++ dans un seul binaire. Apparemment, il sera exécuté sur le navigateur, mais je n'ai pas vu un exemple où il vous permet de modifier le DOM ou d'appeler JavaScript.

0
user2528