Java: Сильная мобильность Кода, Как к?

Нет нет никакого различия. Таким образом:

Система. Булевская переменная-> допустимые значения: верный, ложный

bool-> искажают для Системы. Булевская переменная

Nullable< bool>-> допустимые значения: верный, ложный, пустой

bool?-> искажают для Nullable< bool>

Hope это помогает.

6
задан sivabudh 17 November 2009 в 17:53
поделиться

5 ответов

Существует проект под названием cajo , который может динамически перемещать объекты по сети. Однако я не уверен в состоянии выполнения.

0
ответ дан 17 December 2019 в 22:13
поделиться

В обычной Java вам понадобится какой-то способ, чтобы приложение B загрузило класс для объекта, тогда вам нужно сериализовать объект из приложения A в приложение B. Вы могли бы сделать это, возможно , если классы доступны в каком-то центральном месте, например на HTTP-сервере. Но в общем случае, когда вы хотите передать совершенно новый объект в приложение B, вам потребуется реализовать собственный загрузчик классов (или найти библиотеку, которая делает это).

Если все ваши объекты являются сериализуемыми и у вас есть центральный расположение для хранения классов, это должно быть довольно просто реализовать. Вы можете использовать URLClassLoader для загрузки классов с http-сервера, а затем обычную сериализацию Java для передачи через сериализованный объект. Потребуется некоторая координация между приложениями A и B, чтобы B знал, какой класс загружать, а A знал, когда отправлять объект, а B знал, как продолжить выполнение методов объекта. При таком подходе, вероятно, не существует способа, чтобы объект X находился в процессе выполнения метода; ему придется остановить, а затем возобновить его выполнение в сотрудничестве с Приложением A.

0
ответ дан 17 December 2019 в 22:13
поделиться

Вам нужны ДВЕ вещи, перенесенные из A в B, чтобы переместить экземпляр I класса C.

Сначала определение класса C (обычно в виде списка байтовых кодов ), а затем сериализованную форму I. Обратите внимание, что вы должны использовать сериализацию XML вместо старой двоичной сериализации.

Действительно сложная часть - это передача зависимостей C, поскольку вам необходимо по существу передать все суперклассы C, плюс все возвращаемые типы и типы полей, и ИХ суперклассы, типы возвращаемых / полей и т. д. и т. д. и т. д.

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

0
ответ дан 17 December 2019 в 22:13
поделиться

Если вы используете JDK6, вы можете отправить исходный код, скомпилировать его, так что теперь загрузчик классов может найти этот новый класс, поскольку он был скомпилирован динамически.

Уловка заключается в том, что вам может потребоваться использовать некоторый DI, чтобы загрузить это в ваше приложение, поэтому вам понадобится структура DI, которая может работать динамически.

Затем, когда он внедряется в ваш класс, вы устанавливаете свойства в этот момент.

У них должен быть известный интерфейс. Должен быть контракт, от которого могут зависеть оба.

Я не пробовал и не думаю, что Java - правильный язык для этого. Если вам нужна эта функция, вы можете посмотреть что-то вроде одного из языков сценариев jvm или Clojure, поскольку я ожидаю, что он также будет работать с этим, а затем пусть ваше Java-приложение взаимодействует с этой другой динамической структурой, так как все это будет работать на jvm.

ОБНОВЛЕНИЕ:

Вот ссылка на компиляцию «на лету» с JDK5, так как люди могут быть не знакомы с.

http://fivedots.coe.psu.ac.th/~ad/jg/javaArt1/index.html

-2
ответ дан 17 December 2019 в 22:13
поделиться

Вы спрашиваете о сильной мобильности, но ваши требования выполняются со слабой мобильностью, которая с некоторыми ограничениями обеспечивается протоколом RMI. RMI поддерживает не только RPC, сериализацию объектов и графы распределенных объектов, но также обычно используется совместное использование кода, чтобы клиент мог загружать байт-код классов, известных только серверу, и выполнять этот байт-код локально.

Сильная мобильность не поддерживается Мы с Java не можем придумать способ реализовать это без создания проприетарных расширений виртуальной машины. По сути, сильная мобильность в контексте Java будет означать, что вы приостанавливаете или приостанавливаете поток в одной виртуальной машине, переносите все экземпляры объектов, доступные из этого потока, потенциально байт-код, необходимый для выполнения, и внутренний поток st (стек вызовов и т. ) на другую виртуальную машину и заставит ее воссоздать состояние потока и продолжить выполнение в точке, где поток был приостановлен в исходной виртуальной машине.

2
ответ дан 17 December 2019 в 22:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: