web-dev-qa-db-fra.com

Est-ce que Java est multi-plateforme?

Je souhaite développer une application multiplateforme.

Est-ce que Java est multi-plateforme? Je veux dire, puis-je développer une application Java sous Windows et l'utiliser sous Mac OS X et Linux?

Si oui comment?

Je trouve l'application écrite en Java, a deux fichiers d'installation un pour Windows et l'autre pour Mac. Cela me confond.

Toute illustration ou suggestion sera très appréciée.

23
AMH

Java est-il une multiplateforme?

Java est multiplateforme dans le sens où un programme Java compilé s'exécute sur toutes les plates-formes pour lesquelles il existe une machine virtuelle. (Ceci est valable pour tous les principaux systèmes d'exploitation, y compris Windows, Mac OS et Linux.)

je veux dire que je peux développer une application Java sous Windows et l'utiliser sous Mac et Linux?

Oui, c'est possible.

Ceci (et l’aspect sécurité) est l’un des principaux avantages de l’exécution des programmes sur une machine virtuelle.

Si oui comment?

  • Écrivez votre application en Java (fichiers .Java)
  • Compilez votre application en utilisant Eclipse ou javac (dans des fichiers .class)
  • (Facultatif) Associez vos fichiers .class à un exécutable (fichier .jar)

Le même fichier .jar peut être distribué et exécuté sur les systèmes Windows, Mac, etc.

Je trouve une application écrite en Java, qui contient deux fichiers d’installation, l’un pour Windows et l’autre pour Mac. Cela m’embrouille.

En effet, certaines applications s'appuient sur des fonctionnalités spécifiques à la plate-forme. Ils sont ensuite regroupés avec différentes bibliothèques spécifiques à la plate-forme.

Sauf si vous développez une application qui repose elle-même sur des fonctionnalités propres à la plate-forme (telles que les appels système de bas niveau, par exemple), vous devriez être en mesure de vous débrouiller avec Java.

Commentaire important by @Peter Lawrey :

Cela peut être tant que l'application est indépendante de la plate-forme, mais pas le programme d'installation. Par exemple, IntelliJ a trois programmes d'installation spécifiques à la plate-forme qui ne sont pas écrits en Java, mais qui ont un fichier Zip que vous pouvez décompresser sur n'importe quelle plate-forme et cela fonctionnera.

43
aioobe

Vous pouvez exécuter des applications Java sur chaque périphérique doté d'une machine virtuelle. Si ce n'est pas le cas, vous n'avez pas de chance.

Le commentaire de Oded est important. C et C++ ont des compilateurs sur de nombreux périphériques. 

Le code d'octet Java n'a pas besoin d'être recompilé lorsque vous changez de plate-forme. 

C et C++ nécessitent que le développeur recompile l'application avant de la distribuer sur le système cible, mais une fois que cela est fait, les clients pourront s'exécuter sans problème.

Le problème des personnalisations et des paramètres spécifiques à la plate-forme doit être traité quelle que soit la langue choisie. Plus votre application dépend de fonctionnalités spécifiques à la plate-forme, moins elle sera portable.

METTRE À JOUR: 

Revenons aux mots originaux de la question:

Je souhaite développer une application multiplateforme.

Voici l'objectif - une citation directe. Aucun détail sur les applications Web, mobiles ou de bureau.

Est-ce que Java est multi-plateforme? Je veux dire, puis-je Développer une application Java sous Windows Et l'utiliser sous Mac OS X et Linux?

Définir "plateforme croisée". On dirait que le biais ici est "la portabilité du code d'octet". C/C++ ne peut pas faire cela, mais la "portabilité du code source" est certainement possible tant que vous vous en tenez à ANSI C/C++ et que vous vous abstenez d'utiliser les extensions du fournisseur.

La renommée de Java depuis le début a toujours été la portabilité du code octet. C'est ce que la JVM vous procure. Cela ne signifie pas que toute votre application sera portable, car vous pourriez ne pas avoir bien géré les autres dépendances.

Si je substitue "C/C++" à "Java dans ce bloc, alors multiplateforme veut dire quelque chose de différent. Je ne peux pas récupérer un fichier .exe ou .so compilé pour une plate-forme et m'attendre à l'exécuter sur un autre, mais si je crée un. exe ou .so pour chaque plate-forme et les rendre disponibles, il est certainement possible de rendre le même code source exécutable sur plusieurs plates-formes. 

Si oui comment?

Si vous avez packagé votre application Java sous forme de fichier JAR, vous pouvez le placer sur la plate-forme de votre choix. 

Si vous avez plusieurs fichiers .ex C/C++ pour les plates-formes qui vous intéressent, vous pouvez certainement les exécuter quand vous en aurez besoin.

3
duffymo

Il y a une mise en garde importante concernant la portabilité de Java. La "logique métier" est assez portable, mais il existe au moins une demi-douzaine de paradigmes d'interface utilisateur différents (et incompatibles) pour Java. JVM incompatible) ne fonctionnera pas sur un téléphone Nokia et le code de l'un ou l'autre ne sera pas exécuté sur un PC de bureau.

Mais il n'y a pas d'autre langue qui fait mieux, à ma connaissance.

1
Hot Licks

Java n'est pas vraiment multi-plateforme car il s'agit simplement d'une conception. Certaines implémentations Java peuvent être multi-plateformes, mais cela dépend vraiment de l'implémenteur Java.

Sun/Oracle réalise l'implémentation standard Java pour Windows, MAC et Linux et si vous construisez des programmes avec leur JDK, vous devez les exécuter avec leur JRE. Si vous essayez de l'exécuter avec d'autres JRE, des problèmes de compatibilité peuvent survenir.

Cela se voit davantage sur le mobile, certains fabricants de téléphones ne font pas une implémentation complète de Java à cause de limitations matérielles ou parce qu'ils veulent contrôler le logiciel du périphérique, ils portent le logo Java mais vous devez utiliser leur propre JDK et ces programmes pourraient ne pas exécuter en dehors de leur implémentation JVM.

Un autre problème avec Java est que certaines fonctionnalités pourraient être obsolètes et que ce qui était exécuté dans une version spécifique de JRE ne pouvait pas s'exécuter dans des versions plus récentes ni s'exécuter de manière différente.

0
user3658739

Oui, Java écrit et compilé sur un système d'exploitation peut s'exécuter sur un autre système d'exploitation. Des machines virtuelles sont disponibles pour de nombreux systèmes d'exploitation modernes.

0
Isaac Truett

Les applications Java sont présentées sous forme de fichiers .jar. Celles-ci peuvent s'exécuter sur tout système d'exploitation implémentant le bon environnement d'exécution Java pour l'application, à condition que l'utilisateur ait installé ce JRE (les JRE sont fournis gratuitement aux utilisateurs).

La procédure précise d'exécution de l'application est différente pour chaque système d'exploitation.

Java Development Kit fournit des bibliothèques permettant d’appeler des fonctions système (opérations de fichiers, interfaces utilisateur, par exemple) devant fonctionner sur tous les systèmes d’exploitation. Cependant, le comportement précis peut varier (de la même manière qu'un site Web peut avoir une apparence différente selon les navigateurs). En outre, les applications Java peuvent avoir une "apparence" qui ne correspond pas exactement à celle des applications conçues spécifiquement pour ce système d'exploitation.

0
Jim Blackler

Cela dépend de ce que vous entendez par "multiplateforme". Le code Java peut être compilé en fichiers de classe binaire ou jar codés en octet sur tout système d'exploitation prenant en charge le JDK et s'exécuter sur toute plate-forme prise en charge par le JRE. Cependant, la plupart des langages compilés peuvent être compilés sur n’importe quelle plate-forme à condition que les concepteurs s’y soient attelés. Java est plus facilement portable que, par exemple, C++, mais cela ne signifie pas que le code C++ ne pourra pas être compilé sur aucune plate-forme.

En d'autres termes, ne choisissez pas votre langue avec cette seule fonctionnalité. Choisir la meilleure langue pour votre application serait une meilleure façon de s'y prendre. Peut-être un langage de script serait mieux pour vous. Peut-être postez-vous une autre question demandant quelle langue utiliser pour résoudre votre problème spécifique.

0
alpian

J'ai écrit un petit jeu en Java avec son. J'ai utilisé une bibliothèque standard (classes AudioInputStream et Clip). Le programme fonctionne très bien avec Windows XP, MAIS je n'ai pas les sons. avec Windows Seven ou Linux Ubuntu.

Java 6 a été installé pour tous ces systèmes d’exploitation et j’ai compilé le programme avec le compilateur standard JAVAC.

Donc, Java n'est pas si "multiplateforme".

0
Gugelhupf

Le gros problème concerne les applications mobiles. Pour les ordinateurs de bureau, Java peut fonctionner parfaitement, mais pour les appareils mobiles, les développeurs ne peuvent pratiquement créer que pour Android. Il existe des outils tels que Totalcross qui aident les développeurs Java à créer des applications pour iOS et Android. L'objectif est de maintenir l'hypothèse WORA sur toutes les plateformes, même mobiles.

0
Bruno Muniz