Quelle est la signification de l'indépendance de la plateforme?
Je prends le cas de Java. Puis-je exécuter une application Java sur Linux basée sur la plate-forme Windows? Ou l'inverse?
Puis-je utiliser un même algorithme de programmation (ou exact) sur les deux systèmes d'exploitation?
À mon avis, les types de fichiers sont indépendants de la plate-forme, comme les vidéos, les images, les documents, etc.
L'indépendance de la plate-forme dans le logiciel signifie que vous pouvez exécuter le même code avec peu ou pas de modification sur plusieurs plates-formes.
Le diable est dans les détails:
File.pathSeparator
in Java alors votre code ne fonctionnera pas sur Windows et Linux. En tant que programmeur, vous devez faire attention à ces choses, en utilisant toujours l'option indépendante de la plateforme où possible et testez correctement sur différentes plates-formes si vous vous souciez de la portabilité.Dans le cas spécifique de Java:
Java code est indépendant de la plateforme dans le sens où la même application Java Java ou des algorithmes (généralement compilés en Java bytecode et empaquetés dans un fichier .jar) fonctionneront de manière identique sur Windows et Linux.
Les bibliothèques Java (par exemple, tous les ensembles d'outils open source Nice) sont généralement indépendantes de la plate-forme, tant qu'elles sont écrites en Java pur. La plupart des bibliothèques essaient de s'en tenir à Java afin de maintenir l'indépendance de la plate-forme, mais il y a des cas où cela n'est pas possible (par exemple si la bibliothèque doit s'interfacer directement avec un matériel spécial ou appeler un Bibliothèque C/C++ qui utilise du code natif).
L'environnement de plate-forme Java/d'exécution est indépendant de la plate-forme dans le sens où les mêmes bibliothèques (images, réseau, File IO, etc.) sont disponibles et fonctionnent de la même manière sur toutes les plateformes. Ceci est fait délibérément afin de permettre aux applications qui utilisent ces bibliothèques de pouvoir s'exécuter sur n'importe quelle plate-forme. Par exemple, les bibliothèques Java qui accèdent au système de fichiers savent que Windows et Linux utilisent des séparateurs de chemin de nom de fichier différents et en tiennent compte pour vous. Bien sûr, cela signifie que sous le capot, le l'environnement d'exécution utilise des fonctionnalités spécifiques à la plate-forme, vous avez donc besoin d'un JRE différent pour chaque plate-forme. Vous pouvez voir une liste de certaines des plates-formes disponibles sur le Java: - http://www.Oracle.com/technetwork/Java/javase/downloads/jdk-6u26-download-400750.html
La JVM elle-même (c'est-à-dire la machine virtuelle Java qui est responsable de la compilation et de l'exécution de JIT Java bytecode) est indépendant de la plate-forme dans le sens où il est disponible sur de nombreuses plates-formes (tout, des ordinateurs centraux aux téléphones mobiles). Cependant des versions spécifiques de la JVM sont nécessaires pour chaque plate-forme sous-jacente afin de prendre en compte les différents codes d'instructions natifs et les capacités de la machine (vous ne pouvez donc pas exécuter une JVM Linux sur Windows et Vice Versa). La JVM est fournie dans le cadre du Java plateforme/environnement d'exécution comme ci-dessus.
Dans l'ensemble, Java est probablement aussi proche de la véritable indépendance de la plate-forme que vous pouvez l'obtenir, mais comme vous pouvez le voir, il y a encore pas mal de travail spécifique à la plate-forme effectué sous le capot.
Si vous vous en tenez à 100% pur Java et bibliothèques, mon expérience est que vous pouvez compter sur Java comme étant "effectivement" indépendant de la plate-forme et généralement est à la hauteur de la promesse Write Once Run Anywhere. Mais vous devriez quand même la tester !!
Vous avez raison, l'indépendance de la plate-forme signifie que le même programme fonctionne sur n'importe quelle plate-forme (système d'exploitation) sans aucune modification.
Dans le cas de Java l'application s'exécute dans une machine virtuelle Java qui elle-même n'est pas indépendante de la plate-forme. Cela doit être l'interface entre la machine réelle ( système d'exploitation) et le code Java que vous avez écrit.
Dans le cas des vidéos, des images, etc., ce sont des documents et sont données pour les applications, ils sont donc généralement indépendants de la plate-forme par nature.
En fait, la technique pour atteindre l'indépendance de la plate-forme est
Ou vous pouvez écrire du code et compiler pour chaque plate-forme (C/C++). À mon avis, c'est aussi une sorte d'indépendance de plateforme. Et les algorithmes peuvent ainsi être indépendants de la plateforme.
Vous avez raison en termes de véritable indépendance de la plate-forme pour les types de fichiers. Mais le terme indépendance de la plate-forme n'est généralement pas appliqué aux fichiers.
Java est un langage de programmation indépendant de la plateforme orientée objet. Le compilateur javac
compile le code source et produit le langage de code Byte (langage universel).
Ce langage n'est compréhensible par aucun système d'exploitation, il doit d'abord être traité, et c'est là qu'un programme exécutable spécial (JVM) entre en scène. Un interprète de la machine virtuelle Java lit le bytecode ligne par ligne et convertit les instructions de code octet en langage compréhensible spécifique à la machine (en fin de compte code binaire). Ainsi, le code d'octet est indépendant de la plate-forme mais le code interprété est spécifique à la machine et s'exécutera sur l'environnement sur lequel la JVM est installée. Java les programmes sont indépendants de la plate-forme signifie que Java est indépendant de la plate-forme).
Le slogan de Sun MicroSystems était WORA : Write Once Run Anywhere.
Étant donné que la JVM nécessite un hôte, je peux vous dire qu'un programme Java n'est pas indépendant de la plate-forme. De plus, le langage Java de par sa conception a des exigences sur le système de fichiers). résultant en des noms de classe courts si le système utilise une partition FAT16:
class FOOBAR
est le même que
class Foobar
et le nom
class AbstractPrinterFactory
est impossible.
À titre de comparaison, C a très peu d'exigences d'exécution et peut donc offrir une portabilité plus élevée. Il est toujours possible de rétroporter des programmes C plus petits vers des appareils vraiment bas de gamme.