Вы не можете строго сделать это (создание одного установщика / исполняемого файла) обычным кроссплатформенным способом, потому что разные платформы используют разные исполняемые форматы. JVM полагается на то, что JVM для конкретной платформы уже установлена на конечном компьютере; если установлен , а не , то ваш JAR не будет работать, если вы не установите JVM для конкретной платформы. Возможно, что еще более важно, любые сторонние пакеты Python, которые используют двоичные расширения, не будут хорошо работать с Jython, если они специально не выпущены в версии Jython, что необычно. (Я предполагаю, что аналогичная ситуация имеет место для пакетов Ruby, хотя у меня нет прямых знаний о них, и даже о том, как часто пакеты Ruby используют двоичные расширения ....) Вы сможете использовать весь диапазон Java библиотеки, но очень мало на пути к библиотекам Python / Ruby. Стоит также отметить, что версии языков JVM, как правило, отстают от стандартной версии, предлагая меньше языковых функций и реже исправления ошибок.
Если ваш код - чистый Python, то он уже кроссплатформенный, если на целевом компьютере уже установлен Python, как и в Java ... но, по крайней мере, в Windows, гораздо менее безопасно предполагать, что Python установлен чем предполагать, что Java установлена. Сторонние элементы (база данных и т. Д.), Скорее всего, также будут двоичными файлами для конкретной платформы. Ожидания пользователей относительно разумного процесса установки также значительно различаются для разных платформ - если ваше приложение использует сторонние библиотеки или инструменты, вам лучше включить их все для пользователей Windows, но пользователи * nix, как правило, более терпимы к загрузке зависимостей. (Однако ожидания того, что менеджер пакетов будет обрабатывать их автоматически, растут ...)
Действительно, если это стек приложений большого размера, и вы хотите иметь встроенный пакет, который может быть развернут практически на любом сервере, возможно, самый простой способ - распространить его как полный виртуальный VMWare. machine - программное обеспечение плеера бесплатное (по крайней мере для Windows и * nix, но я полагаю и для Mac), и оно позволяет вам создать выделенную систему Linux / BSD, которая уже полностью настроена специально для вашего приложения. (Я говорю Linux / BSD, потому что тогда вам не нужно беспокоиться о плате за лицензию ОС ...)
(Если это приложение меньшего размера, которое вы хотите разрешить запускать на существующем клиентском веб-сервере, то я подозреваю, что совместимость между операционными системами будет менее важной, чем совместимость с межсерверными серверами - в то время как Apache делает имеют версию для Windows, подавляющее большинство веб-серверов Windows используют IIS, и использование одного дистрибутива пакета (или даже одной версии вашего приложения), которое хорошо работает с обоими этими веб-серверами, вероятно, будет нецелесообразно.)