Что подразумевается под переносом приложения X на платформу Y? - PullRequest
0 голосов
/ 30 марта 2010

Довольно ясно из самого названия, что подразумевается под переносом приложения X на платформу Y?

Скажем, например, у меня на одной ОС запущено приложение X, скажем Y, что мне делать, чтобы перенести это приложение на другую ОС, скажем Z?
Означает ли это, что необходимо переписать новое приложение A для операционной системы Z, которое обязательно имитирует поведение приложения X в операционной системе Y.

Пожалуйста, объясните.

Ответы [ 3 ]

3 голосов
/ 30 марта 2010

Нет точного способа сделать это. В некоторых случаях требуется полная перезапись. В других случаях это может быть вопросом компиляции для другой ОС или процессора. Это действительно зависит от приложения, исходной платформы и целевой платформы. Что бы ни работало!

1 голос
/ 30 марта 2010

Я согласен с Питером.

«Портирование», когда говорят нетехническими типами, обычно означает: «Я хочу использовать X на моей системе - как я могу это сделать?» Это может быть так же просто, как скопировать один и тот же код (скажем, Java или .Net) и запустить его (та да!), Или это может быть так же сложно, как взять X в качестве основы спецификации и перестроить с нуля (полное переписывание за Петра).

«Портирование» для технических пользователей обычно означает перемещение части функциональности из одной системы в другую. Это может быть операционная система (ОС), инфраструктура (например, Java для .Net), технология (например, Flash для JavaScript + CSS + xHTML) ...

В любом случае вам нужна дополнительная информация для предоставления рекомендации / решения.

1 голос
/ 30 марта 2010

Некоторые программы, вы можете просто перекомпилировать для новой платформы, без проблем. Если это очень простая программа, не использующая ничего конкретного для этой ОС, вам, возможно, удастся сойти с рук. По сути, взятие исходного кода, перемещение его в другую ОС и использование там компилятора. Однако даже если есть определенный код, вы можете использовать флаги времени компиляции или константы в своем коде, чтобы заставить компилятор работать по-другому. Я разбираюсь в синтаксисе C ++, но думаю, это должно показать, что я имею в виду:

#if OS == WINDOWS
root = "C:\\";
#elseif OS == LINUX
root = "/";
#endif

Другой способ - запустить программу на виртуальной машине, например на Java. Эта виртуальная машина будет работать на разных платформах, и ваш исполняемый файл должен иметь возможность беспрепятственно работать с чем угодно, используя ее. Возможно, вам придется выполнить перекомпиляцию с несколькими небольшими изменениями, если был специфичный для ОС код, но если вы собираетесь с самого начала на порт, то вам, вероятно, не стоит беспокоиться об этом.

Третий способ - это сочетание двух, и, если я правильно помню, то, что делает Firefox. Большая часть кода остается той же самой, но она использует базу для запуска, которая скомпилирована специально для этой ОС, которая определяет разные вещи, создает определенные типы переменных, такие как nsInt (некоторое время назад, с тех пор как я посмотрел в коде FF, так что я, скорее всего, ошибаюсь, но я знаю, что перед ними стоит указать ns, который вы бы использовали вместо int, так как он был бы специально разработан таким же образом на разных платформах.

Когда вы компилируете, для базы выбирается правильная платформа, тогда вся программа компилируется с использованием этого.

...