Запуск JVM из компонента MXML - PullRequest
1 голос
/ 02 июня 2010

Мыслить нестандартно здесь ...

Какие возможные базовые подходы можно использовать для создания компонента Flex, который может работать на Java?

Я знаю, что могу легко использовать flex для просмотра или запуска приложения Java, но есть вещи, которые я могу сделать, только если смогу запустить Java из WITHIN компонента MXML.

У меня самый строгий смысл, я знаю, что это не невозможно (то есть: если у вас был весь исходный код для flex и для jvm), но каковы наименее непрактичные средства для этого?

Edit: Многие люди заинтересованы в том, почему кто-то может захотеть это сделать. Я считаю, что это НЕ имеет никакого отношения к тому, КАК это сделать, но здесь идет речь: у меня есть более 100 проприетарных программ для чтения пикселей, которые я мог бы перенести на Mac таким способом, гораздо проще, чем любым другим способом. Но вместо того, чтобы обсуждать предпосылки, победивший ответ проигнорирует причины и сосредоточится на КАК.

Продемонстрируйте свое творчество .

Ответы [ 5 ]

1 голос
/ 08 июня 2010

Я не верю, что вы правы в том, что не можете выполнить определенные действия, которые вы "можете сделать, только если я смогу запустить Java из ВНУТРИ компонента MXML". При правильной настройке связи вы можете иметь апплет и SWF-файл, просто общающиеся друг с другом через внешний набор процессов.

Самый простой способ сделать это - «подделать». Загрузите Java-апплет (Это должно быть возможно с помощью SWF-интерфейса ExternalInterface - создайте тег Object и добавьте его в HTML-код вокруг SWF-файла. Чтобы сделать это еще более убедительным, используйте CSS, чтобы апплет отображался «сверху» из SWF.) и иметь его общаться с оригинальным SWF через вызовы JavaScript. Если это невозможно, то может быть возможно, чтобы Java-апплет генерировал какую-то форму псевдосервера, с которой затем мог бы связаться swf.

Если ни один из них не работает, то всегда есть синтаксис байтового массива SWF. Это должно было бы загрузить ByteArray, манипулировать внутренними данными, а затем отправить его ... каким-то образом.

1 голос
/ 03 июня 2010

Это звучит безумно безумно для меня. Мой ответ не идти по этому пути. Это может быть веселая техническая задача для развлечения; но имеет небольшое практическое значение, которое я вижу.

Ответьте на вопрос: зачем вам запускать JVM внутри приложения Flex?

Кроме того, как бы вы использовали приложение Flex для просмотра или запуска приложения Java? Как я понял, песочница безопасности браузера не позволяет запускать другие локальные приложения.

0 голосов
/ 08 июня 2010

Вы можете взаимодействовать между Air и Java-приложением, используя merapi (хотя это просто общение, а не запуск API в воздухе)

0 голосов
/ 08 июня 2010

Некоторое время назад я прототипировал нечто подобное. Я открыл окно / собственное приложение через VNC-сервер, а затем использовал клиентскую библиотеку VNC с открытым исходным кодом для подключения к VNC-серверу. Это было совершенно взломано, но это сработало. Производительность была не велика, но была полезна. Вот клиентская библиотека Flash VNC, которую я использовал: http://www.wizhelp.com/flashlight-vnc/index.html

0 голосов
/ 03 июня 2010

Я с Flextras, вам нужно объяснить почему , прежде чем можно будет предложить разумное решение.

Необоснованное решение:

Реализация jvm в AS3.Читайте баночки в виде байтов.Передайте байтовые массивы вам новой jvm.

Причины необоснованности:

  • Реализация даже частичной jvm потребует не менее тысячи человеко-часов работы.
  • Запусквиртуальная машина внутри уже (относительно) медленной виртуальной машины Flash похожа на поездку на тележке для гольфа, на которой буксируется черепаха: любая из них будет быстрее.
...