Run all platform windows linux mac os x unix ios android

После перехода компании Apple на платформу Intel возник соблазн установить на один и тот же компьютер сразу три ОС — Windows, Linux и Mac OS X. Распространено мнение о том, что Mac OS X не уживается с другими ОС. Однако это не так. Можно без проблем установить все эти три ОС на один жесткий диск. Как это сделать и будет описано в этой статье.

Подготовка диска

Первое что необходимо сделать это создать на жестком диске необходимое количество разделов под эти ОС. По минимуму потребуется 4 раздела — 1 для Windows, 1 для Mac OS X и 2 для Linux. Два для Linux, потому, что в отличии от Windows и Mac OS X Linux для swap использует отдельный раздел. При этом важно, чтобы разделы на диске были в формате MBR (еще этот формат называют DOS).

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

Относительно структуры разделов. Нужно будет как минимум два первичных раздела — для Mac OS X и Windows. При этом раздел для Mac OS X нужно будет создать обязательно с файловой системой FAT32. Linux можно устанавливать на логические разделы в расширенном разделе. То есть конфигурация диска например может быть такой:

  • Первичный раздел 1 — файловая система NTFS. Раздел для установки MS Windows.
  • Первичный раздел 2 — файловая система FAT32. Раздел для установки Mac OS X.
  • Расширенный раздел, логичекий раздел 1 — файловая система linux swap. Раздел для установки GNU/Linux.
  • Расширенный раздел, логичекий раздел 2 — файловая система linux ext3. Раздел для установки GNU/Linux.

Кроме этих четырех разделов можно создать еще общий для всех ОС раздел для размещения общих файлов. Однако при выборе файловой системы для такого раздела, нужно знать о том, что:

  • Mac OS X — умеет читать и записывать на файловую систему FAT32, не умеет записывать на файловую систему NTFS и не умеет читать систему Ext.
  • Linux — умеет читать и записывать на файловые системы FAT32, NTFS, но не умеет записывать на файловую систему HFS+ journaled.
  • Windows — умеет читать и записывать только файловые системы FAT32, NTFS.

То есть общий файловый раздел должен иметь файловую систему FAT32. Относительно размеров разделов. По минимуму раздел для каждой ОС я бы рекомендовал не менее 10 Гб. Но если диск достаточно большой, то лучше по 15-20 Гб. Размер раздела linux swap нужно определять немного больше чем размер оперативной памяти, это связано с тем, что при выключении в режиме hibernate Linux записывает образ оперативной памяти на swap раздел.

Установка Windows, Linux и Mac OS X

После разбиения диска на разделы можно начинать установку. Первыми нужно устанавливать Windows и Mac OS X, какую именно из них первой, а какую второй безразлично. Нужно только знать, что после установки второй из этой пары, загрузка с первой станет временно невозможной, но это исправляется после установки Ubuntu Linux.

Важное примечание по установке Mac OS X. После того, как загрузится установщик Mac OS X, нужно будет запустить программу «Дисковая утилита», затем, в этой программе, переформатировать первичный раздел FAT32 в файловую систему HFS+ journaled. После этого закрыть программу «Дисковая утилита» и в установщике выбрать этот раздел HFS+ journaled для установки.

Последней устанавливается Ubuntu Linux (конечно это может быть и другой дистрибутив GNU/Linux). Желательно подобрать свежий дистрибутив который использует загрузчик Grub 2. После установки Ubuntu Linux и загрузчика Grub2 в стартовом загрузочном меню будут строки для запуска всех трех ОС. Но если, произойдет сбой и в меню Grub не будет Mac OS X или Windows тогда нужно будет загрузиться в Ubuntu Linux, там открыть терминал и выполнить команду update-grub.

Теоретические вопросы создания мультизагрузочных систем описаны в статье Мультизагрузка (multiboot system)

Примечание 1, GPT и GRUB EFI

Если Mac OS X устанавливается по умолчанию, то установщик делает разбивку диска в формате GPT. В такой ситуации для обеспечения мультизагрузки все равно можно использовать загрузчик Grub 2. Но нужно будет сделать дополнительный раздел с файловой системой FAT32 и затем при установке Ubuntu указать этот раздел как /boot, а в опциях установки Grub указать тип загрузчика EFI.

Примечание 2, BSD загрузчик ядра XNU

Загрузка ядра Mac OS X XNU возможна как напрямую через Grub, так и с использованием 3-х ступенчатого BSD загрузчика (при использовании разметки диска в формате MBR). Частный случай такого BSD загрузчика это известный загрузчик Chameleon — специально модифицированный для загрузки ядра XNU на не Apple компьютерах. В случае использования такого BSD загрузчика в меню Grub добавляется chainloader на boot сектор того раздела на котором установлена Mac OS X. То есть Grub запускает вторую ступень BSD загрузчика, она запускает третью ступень, а та запускает ядро XNU.

Является ли macOS UNIX? (И что это значит?)

Является ли macOS UNIX или просто Unix? Или это Unix-подобный? Мы отвечаем на бесконечные дебаты и объясняем такие стандарты, как POSIX и SUS.

macOS: UNIX или нет?

Эта тема поднимает кучу разных вопросов. Какова родословная macOS? Сколько из этого наследственного материала все еще присутствует в современных macOS, и имеет ли это значение? Прежде чем мы сможем ответить, является ли что-то UNIX, Unix или Unix-подобным, нам нужно понять, что означают эти термины. Кто решает, является ли что-то Unix или UNIX, и какие критерии они используют?

Давайте начнем с самого начала.

Unix был создан пятьдесят лет назад в Bell Labs , научно-исследовательской компании AT & T. Перенесемся в 1973 г. и в версию 4 Unix, которая была переписана на языке программирования C. Это сделало операционную систему намного более переносимой и более легкой для переноса на другие аппаратные платформы. В том же году Кен Томпсон и Деннис Ритчи , два основных архитектора Unix, представили на конференции доклад об операционных системах. Сразу же они получили запросы на копии операционной системы.

Связанный указом о согласии от 1956 года, AT & T должен был отказаться от «любого бизнеса, кроме предоставления услуг связи обычных операторов связи». Unix не квалифицировался как нечто, от чего AT & T могла бы извлечь выгоду. Итак, компания сделала что-то примечательное для того времени: распространил Unix в качестве исходного кода с либеральной лицензией. Небольшие сборы покрывали доставку и упаковку, а также «разумный гонорар».

Распространение Unixes

Поскольку Unix был предоставлен «как есть», он пришел без поддержки. В результате сообщество Unix начало объединяться, чтобы помогать участникам, а также исправлять и расширять Unix. Таким образом, вы можете получить исходный код, изменить его и получить поддержку от сообщества. Это знакомое кольцо. Различные разновидности Unix начали появляться, адаптироваться и настраиваться в соответствии с организацией, выполняющей работу.

Боб Фабри , профессор компьютерных наук в Калифорнийском университете в Беркли, был в программном комитете симпозиума по принципам операционных систем 1973 года. Он слушал презентацию Томпсона и Ричи, озаглавленную «Система разделения времени UNIX» .

Фабри запросил копию операционной системы, и в 1974 году Unix был установлен на PDP / 11 в Исследовательской группе по компьютерным наукам (CSRG) в Калифорнийском университете в Беркли. Примечательно, что Кен Томпсон провел там год, работая над тем, что быстро стало собственной разновидностью Unix в университете. Копии изменений и дополнений UC Berkeley были распространены и стали называться Berkeley Software Distribution (BSD). В конце концов, они стали дистрибутивами всей системы Unix, все еще известной как BSD. Номера версий, такие как 4.2BSD, идентифицировали разные версии.

В 1984 году AT & T была освобождена от строгих условий соглашения о согласии 1956 года и способна правильно продавать свою операционную систему. Он включает в себя код BSD, такой как TCP / IP , vi и оболочку C, csh . Даже при таком перекрестном опылении и сотрудничестве возникли трудности с лицензированием. BSD содержал код AT & T, который не был открытым исходным кодом, но элементы BSD были.

Версия BSD без кода AT & T была разработана, чтобы обойти эти проблемы. Однако когда код AT & T был удален, около 20 процентов ядра отсутствовало. Уильям Джолиц написал недостающие части, и эта версия Unix была выпущена как 386BSD . Проект 386BSD застопорился, но в 1993 году его база исходного кода породила проекты NetBSD и FreeBSD .

Это дало нам один кусок головоломки: FreeBSD.

Следующий шаг

После того, как он был уволен из Apple, Inc. в 1985 году, Стив Джобс основал компанию NeXT, Inc. Чтобы предоставить операционную систему для своей линейки продуктов для рабочих станций, NeXT разработал NeXTSTEP . Он использовал BSD в качестве кодовой базы, но представил совершенно другое ядро.

NeXT использовал модифицированную версию микроядра Mach и 4.3BSD для формирования NeXTSTEP, который является второй частью этой головоломки. Mach был разработан в Carnegie Mellon для облегчения исследований в области распределенных и параллельных вычислений. Исследовательская группа использовала BSD в качестве операционной системы и заменила ядро, а не написала свою собственную операционную систему.

В 1996 году Apple Inc. приобрела NeXT, Inc. и тем самым приобрела NeXTSTEP. Apple начала разрабатывать операционную систему, которая в конечном итоге стала macOS с помощью Mac OS X. Он обновил ядро ​​Mach и заменил его более продвинутой версией, разработанной и использованной Open Software Foundation в операционной системе OSF / 1 . Apple также обновила компоненты BSD обновленными и улучшенными версиями из дистрибутива FreeBSD.

Apple вернула элементы ядра BSD обратно в ядро ​​Mach. Он также разработал гибридное ядро, которое объединило характеристики как монолитной, так и микроядерной архитектуры.

Также был включен комплект ввода / вывода , разработанный Apple на основе DriverXit NeXTSTEP. Это позволило добавлять драйверы в ядро ​​без необходимости каждый раз изменять его.

XNU — третья часть головоломки.

Стандарты POSIX и SUS

В 1996 году два органа по стандартизации — X / Open и Open Software Foundation — объединились, чтобы сформировать The Open Group .

Open Group является органом по сертификации торговой марки UNIX. Другими словами, перед тем, как вы сможете назвать ее UNIX, она должна проштамповать вашу операционную систему как соответствующую ее стандартам. UNIX во всех заглавных буквах является знаком соответствия.

Итак, категории следующие:

  • Unix: семейство операционных систем. Это семейство включает как операционные системы UNIX, так и Unix-подобные операционные системы.
  • Операционные системыUNIX : они были сертифицированы как соответствующие стандартам.
  • Unix-подобныеоперационные системы : они выглядят и работают как Unix, но не были сертифицированы как совместимые.

Конечно, вполне возможно, что некоторые операционные системы в категории «Unix-like» могут быть протестированы завтра и признаны совместимыми. Сейчас это, по сути, UNIX, но их можно отнести только к категории Unix, потому что у них еще нет штампов.

Есть два стандарта, которые сертифицируют UNIX: POSIX и Single UNIX Specification (SUS) . SUS — это расширенный набор POSIX. Итак, что-то может быть POSIX-совместимым, но это не делает его UNIX. Однако, если что-то совместимо с SUS, это UNIX.

POSIX и SUS образуют большие коллекции документов (около 3700 страниц). Они определяют работу и ожидаемое поведение каждого аспекта совместимой системы UNIX. Все, от асинхронного и синхронного ввода-вывода до интерфейса сценариев и программ уровня пользователя, каталогизируется и определяется.

Стандарты определяют интерфейсы приложений и поведение во время выполнения, но не определяют, как они реализованы .

Итак, MacOS UNIX?

Ответ должен быть да.

Вы можете проследить его происхождение через FreeBSD до BSD, а оттуда — до Unix, распространяемого Bell Labs, до увеличения платы за лицензию от AT & T.

Но это не имеет значения.

Если вы пишете операционную систему с нуля прямо сейчас, если она удовлетворяет требованиям SUS, она считается UNIX. И не важно, как вы это реализуете. Ядро XNU в основе macOS представляет собой гибридную архитектуру. Он объединяет код Apple с частями ядер Mach и BSD.

Но это тоже не важно. Важно то, что он соответствует требованиям стандартов, по которым он измеряется.

Часть BSD ядра XNU предоставляет интерфейсы прикладного программирования POSIX (такие как различные системные вызовы API и BSD). Сохранение этого элемента ядра BSD без изменений в XNU является ключом к получению сертификации в качестве UNIX. Это позволяет XNU говорить о совместимости и совместимости UNIX с остальной частью системы.

macOS — это совместимая с UNIX 03 операционная система, сертифицированная The Open Group. Это было с 2007 года, начиная с MAC OS X 10.5. Единственным исключением был Mac OS X 10.7 Lion, но соответствие было восстановлено с OS X 10.8 Mountain Lion.

Забавно, но так же, как GNU означает «GNU — не Unix», XNU — «X не Unix ».

If there’s some cross-platform C/C++ code that should be compiled on Mac OS X, iOS, Linux, Windows, how can I detect them reliably during preprocessor process?

asked May 7, 2011 at 8:37

There are predefined macros that are used by most compilers, you can find the list here. GCC compiler predefined macros can be found here.
Here is an example for gcc:

#if defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || defined(__NT__) //define something for Windows (32-bit and 64-bit, this part is common) #ifdef _WIN64 //define something for Windows (64-bit only) #else //define something for Windows (32-bit only) #endif #elif __APPLE__ #include #if TARGET_IPHONE_SIMULATOR // iOS, tvOS, or watchOS Simulator #elif TARGET_OS_MACCATALYST // Mac's Catalyst (ports iOS API into Mac, like UIKit). #elif TARGET_OS_IPHONE // iOS, tvOS, or watchOS device #elif TARGET_OS_MAC // Other kinds of Apple platforms #else # error "Unknown Apple platform" #endif #elif __ANDROID__ // Below __linux__ check should be enough to handle Android, // but something may be unique to Android. #elif __linux__ // linux #elif __unix__ // all unices not caught above // Unix #elif defined(_POSIX_VERSION) // POSIX #else # error "Unknown compiler" #endif 

The defined macros depend on the compiler that you are going to use.

The _WIN64 #ifdef can be nested into the _WIN32 #ifdef because _WIN32 is even defined when targeting the Windows x64 version. This prevents code duplication if some header includes are common to both
(also WIN32 without underscore allows IDE to highlight the right partition of code).

6,651 5 gold badges 33 silver badges 59 bronze badges

answered May 7, 2011 at 8:43

Evgeny Gavrin Evgeny Gavrin

7,517 1 gold badge 22 silver badges 27 bronze badges

As Jake points out, TARGET_IPHONE_SIMULATOR is a subset of TARGET_OS_IPHONE .

Also, TARGET_OS_IPHONE is a subset of TARGET_OS_MAC .

So a better approach might be:

#ifdef _WIN64 //define something for Windows (64-bit) #elif _WIN32 //define something for Windows (32-bit) #elif __APPLE__ #include "TargetConditionals.h" #if TARGET_OS_IPHONE && TARGET_OS_SIMULATOR // define something for simulator // (although, checking for TARGET_OS_IPHONE should not be required). #elif TARGET_OS_IPHONE && TARGET_OS_MACCATALYST // define something for Mac's Catalyst #elif TARGET_OS_IPHONE // define something for iphone #else #define TARGET_OS_OSX 1 // define something for OSX #endif #elif __linux // linux #elif __unix // all unices not caught above // Unix #elif __posix // POSIX #endif 

Note that above checks TARGET_OS_SIMULATOR macro because TARGET_IPHONE_SIMULATOR macro got deprecated since iOS 14.

6,651 5 gold badges 33 silver badges 59 bronze badges

answered Sep 10, 2013 at 21:50

1,533 16 silver badges 17 bronze badges

5 Jan 2021: link update thanks to @Sadap’s comment.

Kind of a corollary answer: the people on this site have taken the time to make tables of macros defined for every OS/compiler pair.

For example, you can see that _WIN32 is NOT defined on Windows with Cygwin (POSIX), while it IS defined for compilation on Windows, Cygwin (non-POSIX), and MinGW with every available compiler (Clang, GNU, Intel, etc.).

Anyway, I found the tables quite informative and thought I’d share here.

answered Sep 12, 2017 at 13:21

3,782 20 silver badges 21 bronze badges

How to install VLC Media Player on a computer

April 15, 2019

This tutorial teaches you how to install the free VLC media player on your computer or smartphone. VLC is available for Windows, Mac, iPhone, and Android platforms.

VLC is a free and open source cross-platform multimedia player and framework that plays most multimedia files as well as DVDs, Audio CDs, VCDs, and various streaming protocols. Why should you choose VLC player?

Plays everything — Files, Discs, Webcams, Devices and Streams.
Plays most codecs with no codec packs needed — MPEG-2, MPEG-4, H.264, MKV, WebM, WMV, MP3es, WAV
Runs on all platforms — Windows, Linux, Mac OS X, Unix, iOS, Android
Completely Free — no spyware, no ads and no user tracking.

Windows PCs

Open the VLC website. Type in your computer’s web browser or click above for direct access.

Click Download VLC. It’s an orange button on the right side of the page.

Select a download location if prompted. Doing so will allow the VLC setup file to download onto your computer.

The VLC file will download automatically, so if you aren’t prompted for a download location, skip this step.

Click Yes when prompted. Doing so opens the installation window.

Select a language. When asked, click the language drop-down box and select the language you want to use for VLC Media Player, then click OK to proceed.

Click Next three times. This will take you to the installation page.

Click Install. It’s at the bottom of the page. Doing so installs VLC Media Player on your computer.

Run VLC Media Player. Immediately after installing VLC, you can run it by making sure the «Run VLC media player» box is checked and clicking Finish.When you want to run VLC in the future, you’ll double-click the VLC app icon on your desktop or select it from Start.

mac OS

Open the VLC website. Type in your computer’s web browser or click above for direct access.

Click Download VLC. It’s an orange button on the right side of the page.

Select a download location if prompted. Doing so will allow the VLC setup file to download onto your computer.

The VLC file will download automatically, so if you aren’t prompted for a download location, skip this step.

Open the downloaded DMG file. Go to the folder into which your browser downloads files, then double-click the VLC DMG file. This will open the installation window.

Click and drag the VLC app icon onto the «Applications» folder. The «Applications» folder is on the right side of the window, while the traffic cone-shaped VLC app icon is on the left.

Doing so will install VLC on your computer.

Run VLC. The first time you open VLC after installing it, do the following:

Double-click the VLC app icon in the Applications folder.

Wait for your Mac to verify VLC.

Click Open when prompted.

Android

Open your Android’s Google Play Store. Tap the Google Play Store app icon, which resembles a multi-colored triangle on a white background.

Tap the search bar. It’s at the top of the screen. Your Android’s on-screen keyboard will appear.

Open the VLC page. Type in vlc, then tap VLC for Android in the resulting drop-down menu.

Tap INSTALL. This is on the right side of the page. Doing so prompts VLC to begin installing onto your Android.If prompted, tap ALLOW after tapping INSTALL to confirm the download.

You can open VLC directly from within the Play Store by tapping OPEN when VLC finishes installing.

Всего сколько лет назад о кроссплатформенном ПО большинство разработчиков не задумывалось вовсе, а те кто сталкивался с подобной задачей в основном занимались разработкой решений которые работали на Windows и UNIX. Это были (и есть) крупные серверные системы, системные библиотеки, редакторы, и прочее узкоспециализированное ПО.

Но, все течет, все меняется, Windows и Linux (с Гномом или КДЕ) уже не единственные платформы с которыми работает “обычный пользователь”. В последнее время появилось большое количество платформ для обычного пользователя и это никак нельзя игнорировать.

К сожалению, даже сейчас, большая удача если ПО работает на чем-то кроме Windows. А уж если такое приложение еще и выглядит прилично… Но это уже совсем редкость.

Собственно, к чему я все это пишу. Меня всегда интересовало кроссплатформенное ПО, но, обычно, это было серверное ПО не обладавшее вообще никаким GUI. А тут меня озадачил вопрос, как написать приложение для конечного пользователя которое можно при минимальном количестве усилий заставить работать на как можно большем количестве платформ. При этом, приложение везде должно выглядеть “как родное”. Да, говоря о приложении для конечного пользователя, я имею ввиду не очень сложное приложении типа графического просмотрщика, планировщика задач и т.п. Приложение обладающее относительно не сложной бизнес логикой, в тоже время не являющиеся приложением класса свистелко-перделка у которого есть только GUI.

Исходя из сказанного ранее, я думаю что список поддерживаемых платформ можно ограничить следующими ОС: Windows, Linux, Mac OS X, iOS, Android, Symbian^3 и Windows Phone 7. А в качестве языков для разработки приложений C++, Java, Objective-C, C#.

Как известно, при наличии желания обеспечить поддержку большого количества платформ, необходимо довольно тщательно подходить к вопросу построения архитектуры приложения. Как минимум стоит продумать разбиение приложения по слоям GUI, бизнес логики и, при необходимости, базы данных.

Если внимательно посмотреть на список платформ, то сразу становится очевидно то, что, как минимум, общего GUI создать не удастся, хотя, это не такая уж большая проблема. Для начала я подготовил небольшой, и совершенно не претендующий на “единственный и окончательный” список библиотек, поддерживаемых каждой из платформ. В список я старался включать наиболее распространенные, либо переносимые библиотеки (именно поэтому в нем нет WTL и других похожих решений).

Windows. Наверное, это наиболее богатая в плане выбора доступных библиотек платформа. GUI для Windows приложений отлично разрабатываются с использованием C++ (Qt), Java, C#. В принципе, можно использовать даже Objective-C из состава GCC в связке с GNUStep, разве что перед тем как на это решиться, я бы очень советовал посмотреть на вот этот скриншот.

Linux. Как ни странно, но тут практически нет никаких отличий от Windows, разве что Mono поддерживает C# версий 1.0, 2.0 и 3.0, версия языка 4.0 в разработке.

Mac OS X. Выбор доступных библиотек для Мака существенно более ограниченный. Полагаю, это вызвано тем, что основная масса пользователей не любит отличный от Cocoa интерфейс и как следствие все стараются выпустить приложения с “родным” внешним видом. Недавно (Mac OS X 10.6.3), руку к этому приложила и компания Apple объявив Java “устаревшей”. Написанные на Java приложения и раньше отличались некой внешней убогостью и неповоротливостью (Stanza, Code Collaborator), но поддержка со стороны Apple гарантировала стабильность платформы. Теперь этого нет и использование Java уже не кажется на столько привлекательным решением как раньше.

Еще существует Qt, который хоть и не позволяет добиться 100% нативного внешнего вида, но все же не плох (Perforce Client).

Поклонников C# обрадует тот факт, что Mono работает на Mac OS X, но вот то как Mono приложение будет выглядеть на Маке заставит вздрогнуть даже не притязательного пользователя. Дело в том, что Mono использует библиотеку GTK, которая работает на Mac OS X только через X-сервер и отличается на редкость уродливым внешним видом (лично я это могу простит только Wireshark).

iOS. Обычно, GUI для iOS приложений пишут с использованием Objective-C и Cocoa Touch (несколько урезанная версия Cocoa “большого брата” с поддержкой тачскрина). Но никто не мешает купить тот-же MonoTouch по вполне разумной цене и создавать GUI на C#. Да, судя по видеороликам, на iOS можно затащить не только Qt, но и QML. Удастся ли разместить такое приложение в AppStore я не знаю.

Android. Тут все довольно просто, GUI пишется на Java с использованием Android SDK. Так же на платформу портируется Qt в рамках проекта android-lighthouse который на данный момент доступен в довольно куцем виде. Не менее куцым, выглядит и проект MonoDroid.

Symbian^3. Nokia рекомендует использовать для разработки приложений Qt либо Java. А на просторах интернета мне попадались линки о возможности использования .Net Compact Framework для Symbian, но я не смог найти какой-либо актуальной информации на этот счет.

Windows Phone 7. Для разработки доступен только C#. Ну что за гады?!

В итоге получаем следующую интересную табличку для GUI приложения:

Платформа/SDK C++ Java Objective-C C#
Windows + + +
Linux + + +
Mac OS X +/- +/- +
iOS + +/-
Android +
Symbian + +
Windows Phone 7 +

“-” – использование не возможно в принципе, либо крайне не рекомендуется;

“+/-” – подходит, но по тем или иным причинам лучше не использовать.

Теперь можно сказать что с GUI разобрались. Одно можно сказать точно – использовать Qt придется.

Теперь к слою с логикой. Тут вопросов однозначно меньше, а альтернатив больше, ведь для написания бизнес логики нужно не так уж и много: контейнеры да алгоритмы и, в идеале, возможность так или иначе распаралелить вычисления. Так что таблица с инструментарием для написания уровня бизнес логики выйдет схожей с таблицей посвященной GUI, разве что с небольшим но очень важным уточнением. Для платформ iOS и Android (в случае с Android придется дополнительно использовать NDK) бизнес логика может быть написана на C++.

При этом, использование STL на Symbian потребует использования uSTL который был портирован Penrillian. Насколько это оправданное решение сказать сложно.

Платформа/SDK C++ Java Objective-C C#
Windows + + + +
Linux + + + +
Mac OS X + + + +
iOS + + +
Android + +
Symbian + +
Windows Phone 7 +

Выводы получаются довольно неожиданные. Java не является лучшим решением ни для написания кроссплатформенной логики, ни для написания кроссплатформенного GUI. Оптимальным вариантом оказывается логика написанная на C++ с использованием абстракции над контейнерами и алгоритмами.

GUI придется писать как минимум с использованием Qt (Windows/Linux и Symbian), Cocoa (Mac OS X и iOS) и Android SDK. А вот поддержку для Windows Phone 7 я бы стал делать только в крайнем случае. Создание приложения для этой платформы потребует отдельной реализации как логики, так и GUI которая нигде больше не пригодится.

Last updated Sept. 11, 2022, 12:43 p.m. by Author