Хотя Вы - также разработчик .NET, , ссылка реализации Java грузового приложения от DDD Eric Evans и Citerus является хорошим ресурсом.
В коде doc'd, Вы видите DDD-организацию в ограниченные контексты и агрегируетесь в действии, прямо в пакетах Java.
Кроме того, Вы могли бы рассмотреть Billy McCafferty Архитектура Sharp . Это - ASP.NET MVC, реализация NHibernate/Fluent NHibernate, которая создается с DDD в памяти.
По общему признанию, необходимо будет все еще применить решение для папки/пространства имен обеспечить контексты. Но, свяжите подход Evans с #Arch, и необходимо хорошо быть на пути.
Сообщают нам то, с чем Вы идете. Я нахожусь на том же пути также, и недалеко от Вас!
Счастливое кодирование,
Kurt Johnson
В произвольном порядке:
2 - Есть продукты, которые выполняют обфускацию. Обычно они переименовывают классы / переменные / методы в однобуквенные имена. Это затрудняет определение ошибок, о которых сообщает пользователь. Трассировки стека, показывающие, что исключение происходит в abc, не особенно полезны.
1,3,4 - Вы не можете полностью избежать этого риска, если вы распространяете java. В какой-то момент ваш код нужно распаковать и загрузить. Если кто-то заменит rt.jar в jvm, он сможет заменить загрузчик классов верхнего уровня и таким образом выгружать ваши классы. Обфускация делает это менее полезным для них, но см. Вышеуказанное предостережение.
5 - Распространение "частного jre". По сути, у вас есть jre в папке с программой. Ваш сценарий запуска запускает его. Однако увеличивает размер вашего дистрибутива.
6 - В окнах, это будет проблема ассоциации файлов. Но это также повлияет на все остальные файлы jar. Если как часть 4 (однако вы справитесь с этим) вы также не используете другое расширение. Не уверен насчет других операционных систем.
7 - Использовать Java Web Start? В противном случае просто создайте файл на своем сервере со списком самой последней версии, получите файл и сравните его с установленной версией.
Для 1,2,4 и 5 вы также можете изучить возможность компиляции в собственный код с помощью gcj или аналогичного . Остерегайтесь проблем с совместимостью, если вы это сделаете.
выберите файл и сравните его с установленной версией.Для 1,2,4 и 5 вы также можете изучить возможность компиляции в собственный код с помощью gcj или подобного. Остерегайтесь проблем с совместимостью, если вы это сделаете.
выберите файл и сравните его с установленной версией.Для 1,2,4 и 5 вы также можете изучить возможность компиляции в собственный код с помощью gcj или подобного. Остерегайтесь проблем с совместимостью, если вы это сделаете.
Зашифруйте все файлы .class, чтобы никто не смог их декомпилировать. Как может Я зашифрую?
Вы не можете. Если никто не может его декомпилировать, как вы ожидаете, что целевая JVM будет работать?
После шифрования я хочу скрыть этот код, чтобы добавить дополнительные безопасность. Как я могу это сделать?
Я хочу добавить "серийный ключ" функциональность, так что программное обеспечение работает только после регистрации в предоставленный мной ключ. Это очень важно, чтобы предотвратить многопользовательский использование моего программного обеспечения. Как я могу добавить эти ключевые функции и как я могу генерировать ключи. И как я могу ограничить это программное обеспечение для работы только на одном компьютер.
Есть несколько способов сделать это, но самый простой - это криптография с открытым ключом:
Файл jar может распаковать и увидеть файл .class. Здесь любой способ обернуть файл jar в что-то, что никто не может распаковать этот файл.
Нет
Я не хочу указывать клиенту сначала установить java для запуска моего заявление. Так есть ли способ который, если кто-нибудь установит мое программное обеспечение, Java устанавливается автоматически на свой компьютер без уведомления ему, что Java загружается в его компьютер. Если возможно, то Законно ли использовать программное обеспечение Java в таким образом.
Попробуйте создать установщик NSIS для вашего приложения, который обнаруживает / устанавливает Java и вашу программу.
Постройте более доверительные отношения со своими клиентами.
Затем вы можете потратить дополнительное время (не выполняя задачи 1-5), чтобы внести улучшения, исправить ошибки и т. Д., Что, в свою очередь, улучшит отношения с вашими клиентами.
Вы можете скомпилировать его с помощью GCJ , который скомпилирует ваше приложение в обычный исполняемый файл Windows / Linux (.exe). Затем вы можете создать установку с помощью такой программы, как InstallShield .
Компания, в которой я работаю, фактически поставляет необфусцированные jar-файлы со всей отладочной информацией. Таким образом, если на сайте клиента возникает ошибка, он может прислать нам полную трассировку стека, которая чрезвычайно помогает в анализе и локализации ошибок в коде.
Попытка скрыть ваш код приведет вас к гонке вооружений с потенциальными взломщиками и потребляют огромное количество времени с небольшой или нулевой реальной пользой. Вместо этого я бы посоветовал вам попытаться найти другие способы сделать покупку (а не пиратство) вашего программного обеспечения выгодной для ваших клиентов. Например, вы можете предложить им бесплатные обновления, техническую поддержку или что-то в этом роде.
Что касается 6 : вы можете использовать JSmooth или аналогичный инструмент для создания exe-оболочки для вашего приложения. Это позволит вам изменить значок, и у ваших клиентов будет исполняемый файл, по которому они смогут дважды щелкнуть, не вмешиваясь в ассоциации файлов для файлов jar.
Однако обратите внимание, что сгенерированный exe не будет содержать Java или ваши файлы jar. Однако, если Java недоступна, будет выведено приятное сообщение об ошибке.
Просто добавлю к другим ответам здесь:
1 и 4 : вы действительно могли бы сделать это, если измените JVM и предварительно упакуйте ее вместе с вашей установкой, но это против лицензионного соглашения Java о распространении модифицированной JVM без выплаты Sun миллиарда долларов.
Кто ваш клиент? Piratebay.org? Серьезно, каждая крупная компания в США платит за программное обеспечение. Риск того, что клиент уйдет и позвонит ему, слишком высок. Вам нужна достаточная защита, чтобы программисту было проще получить покупку для оплаты продукта, чем обойти вашу защиту от копирования.