2010-06-02 3 views
1

Думать за пределами коробки здесь ...Запуска виртуальной машины изнутри MXML компонента

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

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

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

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

Витрина вашего творчества.

+0

Как и в случае с функциональностью процесса AIR2? –

ответ

0

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

1

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

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

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

0

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

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

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

Причины нецелесообразности:

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

Вы можете взаимодействовать между Air & приложение Java с помощью merapi (хотя это просто общение, на самом деле не работает АНИ внутри воздуха)

1

Я не верю вы правы в том, что не можете выполнить определенные вещи, которые вы «можете делать», только если я могу запустить Java из WITHIN MXML Component ».При правильной настройке связи вы можете иметь Applet и SWF, которые просто общаются друг с другом через внешний набор процессов.

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

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

+0

RE: Я не верю, что вы правы в том, что не можете выполнить определенные вещи, которые вы «можете сделать, только если я могу запустить Java из WITHIN MXML Component». При правильной настройке связи вы можете иметь Applet и SWF, которые просто общаются друг с другом через внешний набор процессов. Хорошо, как я могу сказать bitmapData объекта Java, как и любой другой компонент flex? var myBitmap: BitmapData = new BitmapData (myTextArea.width, myTextArea.height, true, 0x00000000); var m: Matrix = new Matrix(); m.scale (1, 1); myBitmap.draw (myTextArea, m); – Joshua

+0

Зависит от того, что у вас есть. Апплеты могут выводить растровое изображение в локальную файловую систему (или, скорее, удаленный сервер), а затем передавать URL-адрес нового растрового изображения в Flash. Flash может затем загрузить растровое изображение и манипулировать им, чтобы сделать то, что он будет делать. Я не знаю, какие вызовы должен сделать апплет, но я уверен, что это выполнимо. – cwallenpoole

+0

Но у меня нет исходного кода для java-программ или какого-либо контроля над ними. Растровое изображение, которое мне нужно для чтения пикселей, - это не bmp-ресурс java-приложения, а визуальное представление самих приложений. – Joshua

Смежные вопросы