Реализовать компиляцию с опережением времени (AOT) для приложений на основе Java.

Мы находимся в процессе разработки коммерческого настольного приложения на Java с использованием платформы Rich Client Platform от Netbeans/Eclipse. IDE (Netbeans/Eclipse) предоставляют хороший встроенный установщик для упаковки приложения. Единственная проблема заключается в том, что наши конечные пользователи могут видеть jar-файлы при развертывании, и у нас недостаточно защиты нашей интеллектуальной собственности, поскольку возможен обратный инжиниринг. Обфускация кода может использоваться для минимизации воздействия, но не может его избежать. Мы искали решения/продукты с открытым исходным кодом, которые могли бы помочь нам смягчить нашу проблему путем прямого преобразования нашего приложения в собственный код, что-то похожее на то, что должен делать AOT.

Заранее спасибо за вашу помощь.

-Бхан


person bhan    schedule 11.01.2011    source источник
comment
помимо темы, оценили ли вы влияние использования RCP (я полагаю, GPL/LGPL) и других библиотек с открытым исходным кодом на лицензирование вашего собственного продукта?   -  person andbi    schedule 11.01.2011
comment
@Osw: Eclipse RCP использует публичную лицензию Eclipse (EPL) и двойные лицензии платформы Netbeans с CDDL и GPLv2.   -  person Donal Fellows    schedule 11.01.2011
comment
С точки зрения лицензии, как справедливо отмечает Donal Netbeans Platform, используется двойная лицензия, поэтому это не проблема. Но есть ли какое-либо другое предсказуемое воздействие, которое нам необходимо принять во внимание?   -  person bhan    schedule 12.01.2011


Ответы (2)


это уже обсуждалось здесь: Как мне создать .exe для программы Java?

person AlexR    schedule 11.01.2011
comment
Поправьте меня, если я ошибаюсь, но разве этот вопрос не включает встраивание файлов JAR в исполняемые файлы в качестве ресурсов? Это все еще байт-код Java, верно? - person Adam Paynter; 11.01.2011
comment
Проблема заключается в том, что для обычного файла jar эти преобразования делают свое дело, но в случае многофункциональной клиентской платформы, такой как Netbeans/Eclipse, это не так просто. Поэтому хотел узнать, как это можно сделать для таких приложений. - person bhan; 12.01.2011

Вы можете преобразовать приложения Eclipse RCP в настоящий EXE (или двоичный файл Linux), не содержащий байт-кода, использующий продукт, который производит моя компания.

В общем, компилятор AOT должен знать о внутренней работе такой динамической структуры или контейнера, особенно о загрузке его классов, иначе во время выполнения потребуется исходный байт-код для проверки согласованности и возможной JIT-компиляции. На данный момент наш продукт «знает» только о загрузчиках классов Eclipse RCP и Apache Tomcat (конечно, он всегда знал о стандартных).

person Dmitry Leskov    schedule 06.05.2011
comment
Я думаю, он упомянул открытый исходный код - person Romantic Electron; 29.08.2013
comment
@RomanticElectron Нет компиляторов AOT с открытым исходным кодом, которые могли бы делать то, что ему нужно. Он также упомянул о разработке коммерческого приложения. Для некоммерческого использования у нас есть бесплатные лицензии. - person Dmitry Leskov; 02.09.2013
comment
@Dmitri Leskov, что вы думаете о jRate, вот ссылка: sourceforge.net/p/jrate /wiki/Главная - person Romantic Electron; 02.09.2013
comment
@RomanticElectron Я думаю, что проект, который последний раз обновлялся ровно семь лет назад, мертв для всех целей, кроме исторических. - person Dmitry Leskov; 03.09.2013