![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
Амортизатор |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 297 Регистрация: 17.4.2005 Где: в Караганде Репутация: нет Всего: 8 |
Интересно узнать о том, насколько исполняемый exe, полученный компиляцией программы на java под конкретную платформу (Windows), уступает C++. Интересуют основные характеристики - скорость исполнения (то бишь качество оптимизации) и размер исполняемого exe (со всеми подключаемыми модулями разумеется).
Внимание - тема продублирована в разделе "C++ - общие вопросы" с целью узнать мнения обеих сторон. Просьба не переносить данную тему в "Священные войны" или куда еще, поскольку ставится конкрентный вопрос, на который требуется конкретный ответ, не более того. -------------------- Поехали! |
|||
|
||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Пазмер естественно будет больше, все таки надо JRE включать. Скорость будет хуже чем у чистой JRE, хотя тут возможны варианты.
Интерестно откуда сишники могут знать, как ведет себя Java приложение скомпилированное в native код. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
ALKS |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 354 Регистрация: 22.3.2006 Репутация: 1 Всего: 11 |
так ведь JRE включают в экзешник редко(кому нужны экзешники такого размера?) как правило экзешник это просто загрузчик в несколько сотен килов, который делает какой-то минимум работы и стартует програмку вместе с JRE уже установленным на машине.
во-вторых (с включенной JRE или нет )это не компеляция под конкретную платформу... компеляция это нечто иное... я знаю тока что Excelsior JET такое может с Java делать, но я лично никогда не пробовал. |
|||
|
||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Во первых еще например GCJ может такое делать. И еще парочка утилит была, но сейчас уже не вспомню.
Во вторых, при таком подходе именно что приходится включать JRE в комплект, или в exe-шник, или в виду dll-ей. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
ALKS |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 354 Регистрация: 22.3.2006 Репутация: 1 Всего: 11 |
собственно не важно. важно то что сравнивать такой Java EXE с откомпелированным C собственно совсем не корректно.
|
|||
|
||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Почему? По моему вполне нормально. Например хочется человеку оценить, что приобретаешь переходя на Java, и насколько велики будет потери. Объем например возрастет значительно. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
powerOn |
|
|||
![]() software saboteur ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4367 Регистрация: 7.10.2005 Репутация: 47 Всего: 159 |
Вот есть exe написанный на С++. Он тягает функции операционной системы (например GDI) для прорисовки своего графического интерфейса. А GDI тоже где-нибудь надо взять, и ведь это никто не учитывает! Считают, что user32.dll есть в каждой Windows системе и транспортировать его с прогой не надо. И так, кстати, со многими функциями - необходимые библиотеки уже есть в системе и нет необходимости их транспортировать вместе с программой. Получается, что размер инсталятора C++ проги не большой.
Java работает в своем окружении, и использует к примеру Swing, которое также придется компилировать в библиотеки. Но этих библиотек, естественно нет на целевой машине. И их приходится включать в инсталятор. От сюда его не хилые размеры. На самом деле разницы не много. И будь Java окружение уже становлено на целевой машине, то еще не известно чей exe больше будет. Так что давайте учитывать все зависимости, либо не учитывать их вообще. Это сообщение отредактировал(а) MoonCat - 21.5.2006, 19:30 |
|||
|
||||
Амортизатор |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 297 Регистрация: 17.4.2005 Где: в Караганде Репутация: нет Всего: 8 |
MoonCat, я полагаю, нужно учитывать то, что имеет место быть в сегодняшной Windows. Да, любое Windows-приложение использует кучу api-функций, которые поставляются вместе с Windows в качестве прикладного программного инструментария, и размер внешних библиотек зачастую бывает больше собственного кода программы. Однако этот факт как раз является преимуществом использования С++, так как я сравниваю не 2 технологии как таковые (C++ vs Java), а реальные преимущества каждой из них на конкретной платформе. -------------------- Поехали! |
|||
|
||||
ALKS |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 354 Регистрация: 22.3.2006 Репутация: 1 Всего: 11 |
C++ и Java это не технологии это языки программирования. и сравнивать их реальные приимущества путем сравнения EXE файлов... как минимум странно.
|
|||
|
||||
Амортизатор |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 297 Регистрация: 17.4.2005 Где: в Караганде Репутация: нет Всего: 8 |
ALKS, согласен, что понятие "технология" в отношении С++ не совсем применимое, хотя вопрос спорный, но Java - в первую очередь именно ТЕХНОЛОГИЯ, и лишь потом язык, который просто входит в состав технологии.
-------------------- Поехали! |
|||
|
||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
MoonCat, да программа на С++ использует системные функции, но:
1. user32.dll - действительно есть в каждой Windows системе и транспортировать его с прогой не надо 2. сама JVM использует user32.dll и кучу других API (даже DirectDraw) 3. у Java есть еще нехилый рантайм не связанный с внешними взаимодействиями, в частности сборщик мусора, рефлексия и т.д. А вообще по мне, компилить Java приложения в native код, надо в очень ограниченом количестве случаев. А так просто использовать инсталятор, который ставит вместе с приложением JRE. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
powerOn |
|
|||
![]() software saboteur ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4367 Регистрация: 7.10.2005 Репутация: 47 Всего: 159 |
LSD, Я веду к тому, что для С++ Windows система почти как родная. Все под рукой. А для Java - нет. Поэтому приходится распространять Java программы либо в byte-code с JRE, либо в скомпилированном виде с JRE. Что сильно раздувает дистрибутив.
При этом подобной ситуацией обладает лишь Windows ![]() На мой взгляд, нет смысла компилить Java программу в нативный код. По скорости выигрыш не значительный и теряется переносимость. Докучи размер дистриба, без установленного скомпилированного JRE. разростается как на дрожжах. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |