Как определить минимальную версию JRE и системные требования для моего Java-приложения

Я написал приложение на Java с использованием Eclipse IDE, и теперь мне нужно знать минимальную версию JRE, которая требуется для запуска приложения! Я знаю, что определенные методы доступны только в более поздних JRE, но мне было интересно, какой самый простой способ узнать самые высокие требования к моему приложению, поэтому любые предложения будут оценены ...

Кроме того, пока я говорю о требованиях, я был бы признателен за любые советы или методы определения минимальных системных требований для моего программного обеспечения в целом, то есть минимального количества ОЗУ ...

заранее спасибо


person Andy    schedule 03.12.2011    source источник
comment
Вы знаете, как инженеры вычисляют, какой вес может выдержать мост? Они проезжают по нему все более тяжелые грузовики, пока он не рухнет, а затем восстанавливают его. Сделайте это в обратном порядке ... начните компилировать свое приложение с JDK 7 и используйте более ранние JDK, пока оно не перестанет компилироваться. То же самое с памятью ... используйте все меньше и меньше, пока она не сломается. Да, иронично :)   -  person Paul    schedule 03.12.2011
comment
Одной компиляции недостаточно - я тоже почти дал этот ответ. Поскольку предыдущие версии JDK / JRE могут содержать ошибки, которых нет в той версии, которую вы используете большую часть времени, простая компиляция не гарантирует правильного выполнения программы. Он вам действительно нужен для (1) компиляции и (2) прохождения всего вашего набора тестов по заданной JRE. Если у вас нет набора тестов, поддержка старых версий JRE будет НАМНОГО сложнее.   -  person jefflunt    schedule 03.12.2011
comment
@Paul Я как бы подозревал, что получу от кого-то такой ответ, и, думаю, на это есть веская причина; кажется, что нет простого способа рассчитать эти требования. Спасибо за ваш ответ, Пол, но, пожалуйста, посмотрите мои комментарии к ответу normalocity, который, я думаю, является хорошим аргументом, и я согласен с тем, что, возможно, мне следует отговорить от использования старых JRE   -  person Andy    schedule 03.12.2011


Ответы (1)


  • Способ 1. Для минимальной версии JRE это будет непросто. Самый простой способ - просто потребовать ту же версию, для которой вы создаете, или более позднюю, например JRE 6.x.x или выше.
  • Метод 2. Установите несколько JDK, сделав их доступными в Eclipse, и просто измените версию, для которой вы создаете, каждый раз запуская набор тестов вашего приложения и проверяя, что все они проходят. Самая ранняя версия JDK, которая позволяет проходить все ваши тесты, - это самая низкая JRE, с которой она может работать. Одной успешной компиляции приложения недостаточно, потому что в предыдущих версиях JRE / JDK могут быть ошибки, которые позволяют выполнить успешную компиляцию, но не допускают правильной программы. исполнение.
  • Метод 3: всегда требуйте последнюю версию на стороне клиента, потому что Oracle постоянно исправляет дыры в безопасности, и, в конечном итоге, может быть лучше потребовать последние версии, если у вас есть такой контроль, на сторона клиента.

Что касается оперативной памяти, это просто. Когда JVM запускается, она устанавливает «максимальный» объем ОЗУ (я считаю, что по умолчанию может быть 128 МБ), и это жесткий предел, который ваше приложение не может превысить без сбоев. Профилируйте свое приложение с течением времени, настраивая параметры памяти на JVM, и выясните, какой минимальный объем оперативной памяти вам понадобится для того, чтобы ваше приложение работало как (а) с приемлемой производительностью, так и (б) без выдачи OutOfMemoryError, и все готово.

Ссылка: Как настроить параметры JVM и память?

Для других требований, таких как требования к ЦП, все становится немного более размытым. Существует множество процессоров, и пропускная способность, которую производит данная система, может варьироваться не только в зависимости от скорости процессора, но и от скорости жесткого диска, объема оперативной памяти, установленной в системе, скорости сетевого интерфейса ( если вы пишете сетевое приложение) и другие вещи. Для таких требований вам нужно просто протестировать его на различных системах, провести где-то черту и сказать: «Вы можете ожидать приемлемой производительности, если у вас есть оборудование, по крайней мере такое же мощное, как X, Y». , Z ".

Еще вы могли бы создать тест производительности или какой-то вид журнала производительности и получить эти данные о производительности, отправленные вам обратно. Многие приложения делают это. Вы знаете, что «можем ли мы отправить анонимные данные об использовании обратно на базовый корабль?» вопрос, который возникает при установке какого-либо программного обеспечения? Что ж, общими среди этих данных являются системные данные, такие как ОЗУ, ЦП, модель жесткого диска и другие сведения об оборудовании (любые данные, которые вы определяете, относящиеся к вашему приложению), а также данные журнала производительности. Применяя такой подход, вы получаете много данных о производительности из множества различных конфигураций системы без необходимости иметь внутри огромное количество по-разному настроенных машин.

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

person jefflunt    schedule 03.12.2011
comment
Спасибо за ваш ответ, normalocity, хотя я не совсем понимаю, что вы имеете в виду под RAM. Вы имеете в виду, что я должен поставить минимальные требования к ОЗУ как минимальные требования для установленной JRE - фактически, теоретически они должны быть одинаковыми для всех требований !? Что касается JRE, я думаю, что буду придерживаться JRE 6, но всегда рекомендую самую последнюю версию.] - person Andy; 03.12.2011
comment
Да, я думаю, вы разобрались с вопросом о RAM. Когда вы запускаете JVM, вы можете указать: Эй, не занимайте более 32 МБ ОЗУ или любой произвольный объем ОЗУ, который вам нравится. Итак, запустите приложение несколько раз с разными минимальными значениями (я предоставил ссылку для настройки параметров памяти JVM) и наименьшим значением, которое позволяет (1) вашему приложению работать с приемлемой производительностью и (2) не дает сбоев из-за при нехватке памяти становится минимальным требованием к оперативной памяти. - person jefflunt; 03.12.2011
comment
Спасибо за интересную и информативную информацию. Думаю, я пришел к выводу, что минимальной версией JRE должна быть JRE 6 с минимальным требованием к ОЗУ 128 МБ, поскольку это все равно требуется для установки Java, и я действительно верю, что Java будет работать в Windows 200 и выше! Я не вижу особого смысла в дальнейшем изучении этих требований к моему приложению, если Java все равно необходимо установить, особенно потому, что у меня нет подходящих средств тестирования. - person Andy; 03.12.2011