Размышление за пределами поля здесь...
Какие возможные основные подходы могли быть проявлены, чтобы создать компонент Flex, который мог выполнить Java?
Я знаю, что могу легко использовать гибкий провод, чтобы просмотреть к или запустить приложение Java, но существуют вещи, которые я могу только сделать, если я могу выполнить Java ИЗ компонента MXML.
Я самый строгий смысл, я знаю, что это не невозможно (т.е.: если у Вас был весь исходный код для гибкого провода и для jvm), но каковы наименее непрактичные средства с этой целью?
Править: Много людей интересуется причиной, ПОЧЕМУ кто-то мог бы хотеть сделать это. Я рассматриваю его как не важный тому, КАК сделать это, но здесь иду: у Меня есть более чем 100 собственных читающих пиксель Windows-программ, которые я мог портировать на Mac таким образом, намного легче, чем какой-либо другой путь. Но вместо того, чтобы обсудить помещение, ответ победы проигнорирует причины, почему, и фокусируются на КАК.
Продемонстрируйте свою креативность.
Некоторое время назад я прототипировал что-то вроде этого. Я представил оконное / собственное приложение через сервер VNC, а затем использовал клиентскую библиотеку VNC с открытым исходным кодом для подключения к серверу VNC. Это было абсолютно взломано, но это сработало. Производительность была невысокой, но ее можно было использовать. Вот клиентская библиотека Flash VNC, которую я использовал: http://www.wizhelp.com/flashlight-vnc/index.html
Для меня это звучит безумно безумно. Мой ответ - не идти по этому пути. Это может быть забавная техническая задача для развлечения; но я вижу небольшую практическую ценность.
Ответьте на вопрос: «Зачем вам нужно запускать JVM внутри приложения Flex?»
Кроме того, как бы вы использовали приложение Flex для просмотра или запуска приложения Java? Насколько я понял, песочница безопасности браузера не позволяет вам запускать другие локальные приложения.
Я с Flextras, вам нужно объяснить , почему , прежде чем можно будет предложить разумное решение.
Необоснованное решение:
Внедрить jvm в AS3. Считывать jar-файлы как байтовые массивы. Передайте массивы байтов новому jvm.
Причины необоснованности:
Вы можете взаимодействовать между Air и Java-приложением, используя merapi (хотя это только взаимодействие, а не фактический запуск api внутри Air)
Я не верю, что вы правы в том, что не можете выполнить определенные действия, которые вы «можете делать только в том случае, если я могу запустить Java из ВНУТРИ компонента MXML». При правильной настройке связи вы можете просто обмениваться данными между апплетом и SWF посредством внешнего набора процессов.
Самый простой способ добиться этого - «подделать». Загрузите Java-апплет (это должно быть возможно при использовании SWF ExternalInterface API - сгенерируйте тег Object и добавьте его в HTML вокруг swf. Чтобы сделать это еще более убедительным, используйте CSS, чтобы апплет отображался «сверху» файла swf.), и пусть он взаимодействует с исходным swf через вызовы JavaScript. Если это невозможно, то может быть возможно, чтобы Java-апплет сгенерировал некоторую форму псевдосервера, с которым затем мог бы взаимодействовать swf.
Если ни один из них не работает, то всегда существует синтаксис байтового массива SWF. Ему нужно будет загрузить ByteArray, обработать внутренние данные, а затем отправить его ... каким-то образом.