Est Java de la croix-plate-forme?

Je veux développer une application multi-plateforme.

Java est-il 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 d'autres pour Mac. Cela me confond.

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

22
demandé sur Paul Lefebvre 2011-05-12 16:30:12

9 réponses

Java est-il une plate-forme croisée?

Java est multi-plateforme en ce sens qu'un programme Javacompilé s'exécute sur toutes les plates-formes pour lesquelles il existe une JVM. (Cela vaut 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 la sécurité aspect) est l'un des principaux avantages de l'exécution des programmes dans une machine virtuelle.

Si oui, comment?

  • écrivez votre application en Java (dans les fichiers .java)
  • compilez votre application en utilisant Eclipse ou javac (dans les fichiers .class)
  • (en option) Regrouper votre .classez les fichiers dans un fichier exécutable (.jar file)

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

je trouve l'application écrite en Java, a deux fichiers d'installation un pour windows et d'autres pour mac. Cela me confond.

En effet, certaines applications reposent 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 spécifiques à la plate-forme, (comme par exemple les appels système de bas niveau), vous devriez être capable de faire très bien avec ordinaire Java.

Commentaire Important par @Pierre Lawrey:

Il peut être alors que l'application est indépendante de la plateforme, le programme d'installation n'est pas. par exemple, IntelliJ a trois installateurs spécifiques à la plate-forme qui ne sont pas écrits en Java, mais ont un zip que vous pouvez simplement décompresser sur n'importe quelle plate-forme et cela fonctionnera.

41
répondu aioobe 2017-05-23 12:02:38

Vous pouvez exécuter des applications Java sur chaque périphérique disposant d'une JVM. 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 beaucoup de 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écessiteront que le développeur recompile l'application avant de la distribuer au système cible, mais une fois cela fait, les clients pourront s'exécuter sans problème.

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

Mise à jour:

Revoyons les mots originaux dans la question:

Je veux développer une application multi-plateforme.

Voici l'objectif - une citation directe. Aucun détail sur l'application web, mobile ou de bureau.

Est Java croix plate-forme? Je veux dire, je peux développer une application Java dans Windows et l'utiliser sous Mac OS X et Linux?

Définir "plateforme croisée". On dirait que le biais ici est "portabilité du code 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 des extensions de fournisseur.

La prétention de Java à la renommée depuis le début a toujours été la portabilité du code octet. C'est ce que la JVM vous obtient. Cela ne signifie pas que votre toute l'application sera portable, car vous n'avez peut-être pas bien géré les autres dépendances.

Si je remplace" C / C++ "par" Java dans ce bloc, alors cross platform signifie quelque chose de différent. Je ne peux pas ramasser une .exe ou. so compilé pour une plate-forme et s'attendre à l'exécuter sur une 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 empaqueté votre application Java en tant que pot, vous pouvez le mettre sur n'importe quelle plate-forme que vous aimez.

Si vous avez plusieurs C / c++ .exe pour les plates-formes qui vous intéresse, vous pouvez certainement l'exécuter lorsque vous en avez besoin.

3
répondu duffymo 2011-05-12 16:10:29

Il y a une mise en garde importante en ce qui concerne la portabilité Java. "Business logic" (trucs non-UI) est assez portable, mais il y a au moins une demi-douzaine de paradigmes d'interface utilisateur différents (et incompatibles) pour Java, donc, par exemple, le code Java écrit pour fonctionner sur un Android (même en ignorant la JVM incompatible D'Android) ne fonctionnera pas sur un téléphone Nokia, et le code pour l'un ou l'autre ne

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

1
répondu Hot Licks 2011-05-23 22:46:24

Oui, Java écrit et compilé sur un système d'exploitation peut fonctionner sur un autre système d'exploitation. Il existe des JVM disponibles pour de nombreux systèmes d'exploitation modernes.

0
répondu Isaac Truett 2011-05-12 12:33:26

Les applications Java sont empaquetées comme .les fichiers jar. Ceux-ci peuvent s'exécuter sur n'importe quel système d'exploitation qui implémente L'environnement D'exécution Java correct pour l'application, à condition que L'utilisateur ait installé ce JRE (les JREs sont fournis gratuitement aux utilisateurs).

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

Le kit de développement Java fournit des bibliothèques qui permettent d'invoquer des fonctions système (par exemple des opérations de fichiers, des interfaces utilisateur) qui devraient fonctionner sur N'importe quel système d'exploitation. Cependant, le comportement précis peut varier (de la même manière qu'un site web peut être différent dans différents navigateurs). En outre, les applications Java peuvent avoir un "look and feel" qui ne correspond pas précisément à l'apparence des applications conçues spécifiquement pour ce système d'exploitation.

0
répondu Jim Blackler 2011-05-12 12:34:55

Cela dépend de ce que vous entendez par "multi-plateforme". Le code Java peut être compilé en classe binaire byte-code ou en fichiers jar sur N'importe quel système d'exploitation supportant le JDK et exécuté sur n'importe quelle plate-forme supportant le JRE. Cependant, la plupart des langages compilés peuvent être compilés sur n'importe quelle plate-forme à condition que les concepteurs l'aient pris en charge. Java est plus facilement portable que, disons, C++, mais cela ne signifie pas que le code C++ ne sera pas capable de compiler sur n'importe quelle plate-forme.

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

0
répondu alpian 2011-05-12 12:36:03

J'ai écrit un petit jeu en Java avec du son. J'ai utilisé la 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 "multi-plateforme".

0
répondu Gugelhupf 2013-05-16 17:35:19

JAVA N'est pas vraiment multi-plateforme car c'est juste un design, certaines implémentations JAVA peuvent être multi-plateforme mais cela dépend vraiment de L'implémenteur JAVA.

SUN / Oracle fait l'implémentation standard JAVA pour Windows, MAC et Linux et si vous construisez des programmes avec leur JDK, vous devriez exécuter les programmes avec leur JRE, si vous essayez de l'exécuter avec d'autres JRE, il pourrait y avoir des problèmes de compatibilité.

Cela peut être vu plus dans le mobile, certains fabricants de téléphones ne feront pas un plein implémentation de JAVA parce que les limitations matérielles ou parce qu'ils veulent contrôler le logiciel de l'appareil, ils portent le logo JAVA mais vous devez utiliser leur propre JDK et ces programmes ne pouvaient pas s'exécuter en dehors de leur implémentation JVM.

Un autre problème avec JAVA est que certaines fonctionnalités peuvent être obsolètes et que ce qui s'exécute dans une version spécifique du JRE ne peut pas s'exécuter dans des versions plus récentes ou d'une manière différente.

0
répondu user3658739 2015-11-04 15:04:31

Le gros problème est quand nous parlons d'applications mobiles. Pour les ordinateurs de bureau OS, java peut fonctionner parfaitement, mais pour les appareils mobiles, les développeurs ne peuvent, pratiquement, créer que pour Android. Il existe des outils comme Totalcross qui aide les développeurs java à créer des applications pour iOS et Android. L'objectif est de maintenir L'hypothèse WORA à chaque plate-forme, même mobile.

0
répondu Bruno Muniz 2017-04-27 20:18:15