Файлы JAR, они только чрезмерно увеличиваются в размерах и замедляют Java?

Сначала удалите «else» из «else return ...;» заявления, так что вы получите:

if (isRaining) {
    if (isWithUmbrella)
        return true;
    return false;
}
return true;

С небольшой логикой работы ..

if (isRaining) {
//    return (isWithUmbrella) ?
//        true :
//        false;
    return isWithUmbrella;
}
return true;

Затем вы можете быстро поместить его в простое выражение возврата ...

//return (isRaining) ? isWithUmbrella : true;
//return (!isRaining) ? true : isWithUmbrella;
return (!isRaining) || isWithUmbrella;
25
задан josef.van.niekerk 16 June 2009 в 23:08
поделиться

4 ответа

"Загружает ли Java весь файл .jar в память, когда скажем, например, класс в этом .jar создается? А что насчет того, что находится в .jar который никогда не используется ».

Нет, загрузчик классов загружает каждый файл .class по мере необходимости.

« Кэшируются ли .jars каким-либо образом, для оптимизированная производительность приложения? »

JAR-файлы похожи на библиотеки DLL (за исключением деталей о связывании и загрузке классов): это просто сжатые библиотеки файлов .class. Они не кэшируются: файлы .class загружаются в постоянное пространство по мере необходимости.

"Когда загружается один .jar, я поймите, что вещь сидит в памяти и доступен через несколько HTTP-запросов (например, для время жизни экземпляра сервера работает), в отличие от PHP, где объекты создается на лету с каждым запросом, верно ли это предположение? "

Когда ваш сервер приложений загружает .class в пермское пространство, он доступен, пока сервер запущен и работает.

« При использовании Spring, я думаю, я пришлось включать все эти неудобные .jar-файлы, не лучше бы мне было просто используя родную Java, по крайней мере, и решение ORM, такое как Hibernate? »

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

«Пока что Spring просто потребовалось дополнительное время настройка, дополнительное место на жестком диске, дополнительная память, потребление процессора, поэтому я обеспокоен тем, что фреймворк слишком дорого обходиться производительность, например, чтобы получить IoC, реализованный с моим BlazeDS server. "

Вы не представляете, какова потеря производительности при использовании Spring. Измерьте это, если считаете, что это проблема. Я уверен, что код вашего приложения или схема базы данных будут самой большой проблемой.

" Еще должен прийти ORM, юнит среда тестирования и отдельные части тут и там. Это так легко быстро раздуть проект и Меня очень волнует, потребляет ли перманентное пространство 10% от этого общего количества - пока я не определю, что это проблема.

Я думаю, что на самом деле происходит то, что вы предпочитаете писать PHP вместо Java. Это справедливая мысль, потому что многие люди думают, что использование динамических языков может быть выгоднее Java. Большинство сайтов по-прежнему написано на PHP, так что ваш скептицизм оправдан.

Я бы рекомендовал создать прототип для одного или двух вариантов использования со Spring и без него и с использованием PHP. После этого вы лучше поймете, что работает для вас.

Большинство сайтов по-прежнему написано на PHP, так что ваш скептицизм оправдан.

Я бы рекомендовал создать прототип для одного или двух вариантов использования со Spring и без него и с использованием PHP. После этого вы лучше поймете, что работает для вас.

Большинство сайтов по-прежнему написано на PHP, так что ваш скептицизм оправдан.

Я бы рекомендовал создать прототип для одного или двух вариантов использования со Spring и без него и с использованием PHP. После этого вы лучше поймете, что работает для вас.

51
ответ дан 28 November 2019 в 18:23
поделиться

Для некоторых из этих вопросов вам, вероятно, лучше всего обратиться к исходному коду в java.util.jar . Файлы JAR рассматриваются как тип файла ZIP (что имеет смысл, поскольку файлы JAR в основном представляют собой файлы ZIP с файлом манифеста), поэтому весь файл не загружается сразу.

1
ответ дан 28 November 2019 в 18:23
поделиться

Загрузчик классов должен загружать только те классы, которые ему нужны, и они остаются резидентными в памяти. Не беспокойтесь о 12 МБ. Оперативная память стоит дешево. Создаваемые вами объекты (в большом приложении) будут использовать гораздо больше памяти, чем загружаемые классы.

Короче говоря, не беспокойтесь об этом. :)

На IBM DeveloperWorks есть хорошая статья под названием «Демистификация проблем с загрузкой классов. Часть 1: Введение в инструменты загрузки классов и отладки»

Дополнительный момент - когда дело доходит до стоимости, Developer Time стоит намного дороже, чем оборудование, поэтому, если Spring / Hibernate / WhateverTool помогает разработчику создавать приложение быстрее и проще,

5
ответ дан 28 November 2019 в 18:23
поделиться

Если у вас возникли проблемы с управлением зависимостями, могут помочь такие инструменты, как Maven или Ivy , хотя они имеют свои собственные кривые обучения. Оба они позволяют указать прямые зависимости и позволяют инструменту вычислять и разрешать переходные зависимости.

3
ответ дан 28 November 2019 в 18:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: