У меня есть чудная програмка XMind в ней я уже построил большую большую карту. И чем больше эта карта тем больше меня напрягает тормоза. Обижаться на нее не могу, потому как она сама быстрая из тех, что попадали мне в руки - от моей карты FreeMind даже не открылась, а онлайн портал mindmeister.com продемонстрировал много багов. Какой выход? Пробовать дальше и ждать, когда либо java обновится, либо мой компьютер обновится :) либо что-то еще, чего я не знаю, но что обязательно поможет. Читать дальше...
Помогло - очередной раз запуская XMind чтобы побрейнштормить, у меня в голове всплыла аббревиатура JIT. Стал ковырять. Оказывается есть возможность превратить java class в exe файл, а набор используемых им jar библиотек в dll библиотеки. Это под Windows. Уверен и для других операционок есть возможность конвертировать. Итак возможность есть - найдем программу, реализующую эту возможность. Слава гуглу, я нашел некий Excelsior JET. Судя по его описанию - это именно то, что мне нужно.
Проглядывая ряд видеомануалов я пришел к выводу, что XMind программка основана на базе Eclipse RPC. Excelsior JET поддерживает конвертацию как простых java программ, так и Eclipse RPC программ. Супер!
Чтобы скачать программу, мне пришлось заполнить небольшую формочку обратной связи
после чего я получил линк на скачивание на свой почтовый ящик.
Скачал, запустил и начал разбираться. Скриншоты выкладывать не буду - видео, предложенное на сайте разработчика более чем достаточно. Я проделал все так, как было описано в видео уроке. Но наткнулся на одно исключение: некая библиотека не распознавалась Excelsior JET - ее я просто удалил, потому как название папки, в которой она находилось, намекнула мне на то, что она используется только под linux. Вот сам видеоурок:
Конвертация порядка 10 000 java классов заняла около часа времени, но все прошло на удивление гладко.
На выходе я получил купу файлов и папок, среди которых есть инсталятор
Который ко всему успешно запустился и установил XMind в указанную папку.
Примечательно то, что даже библиотека JRE конвертировалась в DLL.
А вот и замеры производительности то, ради чего я инвестировал пол дня процессорного времени - по три замера основных операций, которые меня напрагяли:
Упс... А где тут оптимизация? А вот она :) Программа стала меньше кушать памяти на 200 mb :)
оригинальная версия
скомпилированная версия
Но не этого я ожидал.
Хотя причин, по которым оптимизации не состоялось может быть целый океан, но на детальное исследование может уйти недели времени. А если по шурику - то эксперимент не удался.
Видимо компьютер менять пора...
Помогло - очередной раз запуская XMind чтобы побрейнштормить, у меня в голове всплыла аббревиатура JIT. Стал ковырять. Оказывается есть возможность превратить java class в exe файл, а набор используемых им jar библиотек в dll библиотеки. Это под Windows. Уверен и для других операционок есть возможность конвертировать. Итак возможность есть - найдем программу, реализующую эту возможность. Слава гуглу, я нашел некий Excelsior JET. Судя по его описанию - это именно то, что мне нужно.
Проглядывая ряд видеомануалов я пришел к выводу, что XMind программка основана на базе Eclipse RPC. Excelsior JET поддерживает конвертацию как простых java программ, так и Eclipse RPC программ. Супер!
Чтобы скачать программу, мне пришлось заполнить небольшую формочку обратной связи
после чего я получил линк на скачивание на свой почтовый ящик.
Скачал, запустил и начал разбираться. Скриншоты выкладывать не буду - видео, предложенное на сайте разработчика более чем достаточно. Я проделал все так, как было описано в видео уроке. Но наткнулся на одно исключение: некая библиотека не распознавалась Excelsior JET - ее я просто удалил, потому как название папки, в которой она находилось, намекнула мне на то, что она используется только под linux. Вот сам видеоурок:
Конвертация порядка 10 000 java классов заняла около часа времени, но все прошло на удивление гладко.
На выходе я получил купу файлов и папок, среди которых есть инсталятор
Который ко всему успешно запустился и установил XMind в указанную папку.
Примечательно то, что даже библиотека JRE конвертировалась в DLL.
А вот и замеры производительности то, ради чего я инвестировал пол дня процессорного времени - по три замера основных операций, которые меня напрагяли:
Упс... А где тут оптимизация? А вот она :) Программа стала меньше кушать памяти на 200 mb :)
оригинальная версия
скомпилированная версия
Но не этого я ожидал.
Хотя причин, по которым оптимизации не состоялось может быть целый океан, но на детальное исследование может уйти недели времени. А если по шурику - то эксперимент не удался.
Видимо компьютер менять пора...
Все банально: причина отсутствия ускорения, то что в java, как и в .NET, есть JIT компиляция, которая использует все преимущества вашей системы. А в случае компиляции через сайт, скорее всего была использована generic архитектура, чтоб приложение могло запуститься на любой платформе.
ОтветитьУдалитьКстати, в так ненавистном вам .NET (кстати, я так и не понял почему), программы можно прекомпилировать для того, чтобы не тратилось время на jit компиляцию. Для этих целей используется утилита ngen
ОтветитьУдалитьСпасибо за комментарий.
ОтветитьУдалить>>>есть JIT компиляция
Она-то есть, но вот разработчики Excelsior JET, сообщили мне, что ихний подход "helps you make your Java applications start and work faster".
>>>Кстати, в так ненавистном вам .NET (кстати, я так и не понял почему)
Есть некоторое убеждение, изначально принятое на веру. Раз есть убеждение, то сознание ищет повод его подтвердить. И находит. Притягиваю, так сказать, к себе проблемы с этим фреймворком.
Я вот сегодня на Stamina текст набирал "Люди делятся на две категории: те кто не знает, кто такой Бил Гейтс и те, кто его не любят". А почему его не любить? Он изменил мир и сделал его таким, какой он есть сейчас. То, что я могу делать сейчас - его заслуга.
По этому не берите на свой счет мое предубеждение относительно .NET фреймфорка. Даст Бог, я его перерасту.
>"helps you make your Java applications start and work faster"
ОтветитьУдалитьсо "start" согласен (см. мой второй коммент), т.к. время не тратится на jit.
А вот с "work" в общем случае должно быть хуже.
Судя по твоим постам, имхо, тебя не устраивает очень плотная интеграция .NET внутрь windows. Это и понятно, если сравнивать с java - какой JAVA_PATH задашь при запуске та версия и будет использоваться. Но с этим, также бывают проблемы: например, Oracle SQL Developer поставляется с версией JDK 1.5(емнип), и стандартно убивает Windows Aero - приходится качать noJDK версию и танцевать с бубном, чтоб прикрутить установленный JDK (последней версии).
К плюсам такой программы несомненно стоит отнести защиту от декомпиляции (если она действительно делает нативный код, а не делает склейку java.exe + program.jar в один exe файл). В, свое время для .NET мы искали что-то похожее, но были только платные и убогие утилиты.
Для прикола: есть реализация Java VM поверх .NET - www.ikvm.net
>>> К плюсам такой программы несомненно стоит отнести защиту от декомпиляции
ОтветитьУдалитьДа, разработчики и об этом упомянули.
>>>есть реализация Java VM поверх .NET - www.ikvm.net
И сюда пробрались...
>>> Но с этим, также бывают проблемы
Таки да
В любом случае, ребятки, разработавшие этот трансформатор - большие молодцы!
Если у Вас найдётся ещё немного времени для экспериментов, свяжитесь с нами, пожалуйста, адрес java@наш-домен.
ОтветитьУдалитьЗаранее спасибо.
Дмитрий Лесков
ООО Эксельсиор
Thanx
ОтветитьУдалить