Плюсы и минусы компиляции приложения SWT на нативный - PullRequest
1 голос
/ 10 августа 2011

Кто успешно скомпилировал бизнес-проект Java в нативный (например, с помощью GCJ или Excelsior JET) и может поделиться своими плюсами и минусами?

I image следующие преимущества:

  • большескорость (машине пользователя не нужно компилировать байт-код в собственный код)
  • меньше возможностей для взлома
  • не требуется отдельная среда выполнения Java

и следующие недостатки:

  • требуется специальная сборка для поддержки каждой платформы (но это уже требуется для SWT)
  • некоторые функции, такие как отражение, могут не работать?
  • труднее обнаружить ошибки(как насчет стековых трасс)?

Ответы [ 2 ]

2 голосов
/ 22 августа 2011

Я использовал Excelsior JET для компиляции SWT-приложения в нативное для Windows .

Это было некоторое время назад, и с тех пор они значительно улучшили инструмент, но скорость JVM также улучшилась соизмеримо. Потребление памяти не так много, но даже в ноутбуках низкого уровня в настоящее время имеется ГБ ОЗУ, и, хотя это может вызвать отвращение к нашему чувству бережливости, на самом деле не имеет значения, использует ли ваше маленькое приложение с графическим интерфейсом 20 МБ памяти на коробке с хотя бы В 50 раз больше, особенно если учесть преимущества разработки в такой среде.

Основными причинами статической компиляции являются время запуска и использование памяти. JET дал мне это, но за счет длительного цикла сборки ошибки в пропущенных классах из-за динамической загрузки конфликтуют со статической компиляцией (это, я думаю, они значительно улучшили) и сборками для конкретной платформы (вы должны собрать Windows дистрибутив на Windows). В конце концов, закон Мура и скорости JVM сделали этот компромисс не стоящим, и я отказался от этого варианта сборки.

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

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

0 голосов
/ 22 августа 2011

Я могу вспомнить 2 минуса

Минусы:

  1. Компиляция приложения требует времени, которое увеличит программное обеспечение затраты на разработку. Java изначально использует интерпретатор для запуска кода который намного проще в разработке.
  2. У него нет оригинального отладчика Java для отладки вашего программного обеспечения. Вы нужно использовать другой, как GDB, который гораздо сложнее. Снова, увеличить затраты на разработку
...