Как лучше всего создавать кросс-платформенные приложения?
Я хочу создать высокопроизводительное приложение один раз и запустить его:
- Рабочий стол Windows
- Linux
- Mac OS
- УСВН
- Андроид
Я не хочу менять код для каждой из платформ отдельно.
Я хочу написать один раз и запустить их все.
Он может быть основан на фреймворке или скомпилирован в собственный машинный код для отдельных платформ.
Производительность важна.
Возможно ли это?
Если это невозможно, дайте мне знать, и я прекращу поиски.
Я пишу вопросы очень коротко и просто, чтобы их было легко понять, и мой последний вопрос был закрыт как не простой для ответа, поэтому дайте мне знать, что не так, и я улучшу вопрос.
Я знаю C# и знаю о Xamarin, но Xamarin разделяет код по всему миру, это не один код, работающий поперек, так что это не то, что я хочу.
Leo Chapiro
Просто для понимания: Windows в вашем списке должна быть "Windows Mobile", не так ли? Что такое Linux и MacOS, в чем здесь разница с Android / iOS?
Ziya1995
> должно быть "Windows Mobile", верно?
Нет, это Windows, как Windows 7 или 8.1.
> В чем здесь разница с Android / iOS?
Я хочу, чтобы мое приложение поддерживало Windows desktop, Android, iOS, потому что я получу больше денег, также было бы довольно круто, если бы они поддерживали Windows Store, Play Store, App Store.
Прямо сейчас я немного сбит с толку из-за 2 основных вещей:
Веб-кросс-платформенные технологии медленны, я не хочу HTML/CSS/Javascript - просто исключите их.
Другие путают меня, потому что я не знаю, что они делятся кодом или он полностью пишется один раз, когда запускается где-либо.
Например, я скачал Xamarin, и оказалось, что я не могу поделиться GUI, мне нужно написать GUI отдельно для всех 3 платформ - я этого не хочу.
Сейчас я этого не делаю, но если вы знаете, возможно ли это или максимальный уровень-это общий доступ к коду и нормализация его отдельно для разных платформ - дайте мне знать)
Leo Chapiro
Это зависит от того, какой язык программирования вы можете использовать. Посмотри: https://www.backblaze.com/blog/10-rules-for-how-to-write-cross-platform-code
Ziya1995
Можете ли вы сказать, можно ли написать когда-то простое графическое приложение и запустить его на указанных платформах?
Или мне всегда нужно менять код, чтобы соответствовать платформам отдельно?
Leo Chapiro
Для простого графического приложения вы можете использовать веб-технологии, с HTML/JavaScript это должно быть возможно.
Если вам, напротив, нужна хорошая/лучшая производительность, вам нужно будет использовать специальные технологии: ObjectiveC для iOS, C# для Windows и Java для Android. Xamarian может помочь избежать ObjectiveC, используя только C#, но это!
Ziya1995
&ГТ; но что это!
было бы здорово, если бы вы ответили на мой вопрос:
Могу ли я написать высокопроизводительное приложение один раз (не веб) и скомпилировать его в машинный код для разных платформ?
Xamarin разделяет код, он не запускает один и тот же код на разных платформах.
Вы можете ответить?
Например, я читал о Adobe Air, и он говорит, что это кросс - платформы, но я не могу понять, что это значит-общий доступ к коду?
Richard MacCutchan
Короткий ответ: Нет, вы не можете этого сделать. Вы можете попробовать Java, но даже это не гарантирует неизменной работы на каждой платформе (и не является действительно высокопроизводительным). Лучше вам определить свои требования и выяснить, какие части вы можете сделать общими, а какие должны быть специфичными для конкретной платформы.
super
Вам действительно нужно понять, что один и тот же код для всех платформ означает, что он не годится ни для одной из них, основываясь на производительности. Если вы хотите, чтобы ваши приложения работали наилучшим образом на конкретной платформе, то вам нужно удовлетворить эту цель. В противном случае у вас будут очень раздутые приложения, которые в лучшем случае являются средними на всех платформах.
Ziya1995
Подождите, есть так много технологий, например Adobe AIR.
Он говорит, что это кросс-платформенный, я понимаю это так, как вы можете написать один раз и запустить в любом месте с помощью Adobe Runtime.
Есть также C++ QT и Unity3D.
Все это означает, что вы можете написать один раз и запустить на всех указанных платформах без нормализации кода для конкретной платформы.
А Unity3D обладает высокой производительностью.
Вы говорите "нет", но C++ QT, Unity3D, Adobe Air говорят наоборот или я чего-то не понимаю?
Что случилось?
Richard MacCutchan
Единственный способ убедиться в этом-попробовать самому и посмотреть, какие результаты вы получите. Но не удивляйтесь, если это не сработает так, как утверждают эти организации.
Ziya1995
-если он не работает так хорошо, как утверждают эти организации.
Вы хотите сказать, что это не работает?
Прямо сейчас я застрял между ними .Net WPF и Adobe AIR.
Richard MacCutchan
Нет, я имею в виду, что есть только один способ убедиться, и это попробовать. Никто не может предсказать, будет ли ваш код работать или нет.
Ziya1995
Многие люди пробовали его до меня, и я просто не могу проверить его на всех платформах за несколько дней.
Если вы знаете, скажите мне, как вы думаете, работает ли он нормально или делает много ошибок? Я только что прочитал, что он не работает нормально, это правда?
Скажите мне, что вы думаете, я бы получил любую информацию об этом сейчас.
Richard MacCutchan
Рискуя наскучить вам еще раз скажу: никто не может предсказать, будет ли ваша программа работать на всех платформах. Единственный способ узнать это-попробовать.
Ziya1995
Я понимаю это так, как вы имеете в виду, что не гарантировано, что это сработает, поэтому были случаи, когда это не сработало.
Хорошо.
Richard MacCutchan
Нет, нет, нет!
Невозможно гарантировать, что он будет работать, так же как вы не можете гарантировать, что любая программа на одной платформе будет работать.
Вы не можете знать, что программа будет работать, пока не попытаетесь запустить ее. Даже если вы скомпилировали его без ошибок или предупреждений, он все равно может потерпеть неудачу при запуске.
Если вы действительно не понимаете этого простого факта, то у вас будет много трудностей как у разработчика.
Ziya1995
Существует так много кросс-платформенных API, но вы говорите, что это невозможно или плохо, я не понимаю, я очень смущен.
Richard MacCutchan
Что вас смущает? Ответ, как я уже неоднократно говорил, довольно прост: невозможно быть уверенным, что кросс-платформенная сборка будет работать, пока вы не попробуете ее. Это единственный способ быть уверенным, и многое будет зависеть от функций, которые использует ваше приложение.
Ziya1995
> Это не хорошо ни в одном из них, основанных на производительности.
Один и тот же код C++ QT компилируется в машинный код для всех перечисленных платформ - какая может быть проблема производительности, когда он является нативным?
Richard MacCutchan
Пожалуйста, смотрите мои ответы выше: никто не может предсказать, с какими проблемами производительности вы можете столкнуться. Единственный способ узнать это-попробовать.