Содержание
Во многих моих тренингах так или иначе используется Java, либо как язык программирования для разработки автотестов, либо как виртуальная машина для запуска приложений, написанных на Java — инструментов тестирования, сред разработки, и даже клиент системы видеоконференций GotoWebinar требует наличия Java.
Поэтому я решил описать процедуру установки Java для операционной системы Windows и последующей настройки системы, потому что, к сожалению, недостаточно просто “запустить инсталлятор и всегда нажимать кнопку Next”.
1. Где взять Java?
На официальном сайте Oracle Java.
2. Какую версию выбрать?
Разумеется, последнюю доступную (на момент написания инструкции это Java 8).
Выбирая из 32-битной и 64-битной версий, берите 64-битную, если ваша операционная система это позволяет, потому что у неё менее строгие ограничения по памяти, доступной исполняемым Java-приложениям.
3. Что устанавливать, JRE или JDK?
Java Runtime Environment, или JRE — это виртуальная машина, позволяющая запускать приложения, написанные на языке программирования Java.
Java Development Kit, или JDK — это набор инструментов, для разработки программ на языке программирования Java (компилятор, архиватор, генератор документации и прочие). JRE разумеется тоже входит в дистрибутив JDK.
Правило очень простое: если вы собираетесь что-нибудь писать на языке программирования Java, значит вам потребуется JDK. А если только запускать готовые программы — тогда достаточно JRE.
4. Установка Java
Вот тут, действительно, всё просто — нужно запустить инсталлятор и следовать указаниям визарда. Можно просто всё время нажимать кнопку Next.
5. Настройка переменных окружения
К сожалению, инсталлятор Java не выполняет настройку переменных окружения, поэтому придётся сделать это вручную после установки.
Во-первых, необходимо установить переменную JAVA_HOME
, которая должна указывать на директорию, в которую установлена Java. Многие программы используют эту переменную, чтобы определить, где находится Java.
Во-вторых, надо в переменную PATH
добавить путь к директории %JAVA_HOME%bin
. Эта переменная указывает операционной системе список директорий, в которых нужно искать исполняемые файлы, и чтобы можно было запускать Java из консоли, переменная PATH
должна быть правильно настроена.
Для установки переменных окружения сначала нужно открыть свойства компьютера, либо использовав сочетание клавиш Win-Pause, либо через меню “Пуск”:
Затем нужно выбрать “Дополнительные параметры системы”, в открывшемся диалоге перейти на вкладку “Дополнительно” и нажать кнопку “Переменные среды”, после чего появится диалог настройки переменных окружения.
Если у вас уже есть переменная окружения JAVA_HOME
— надо её отредактировать, если нет — создать новую. В качестве значения нужно указать путь к директории, куда установлена Java, то есть, например c:Program FilesJavajdk1.8.0_25
, если вы установили JDK, либо c:Program FilesJavajre1.8.0_25
, если вы установили только JRE.
После того, как вы установили значение переменной JAVA_HOME
, необходимо отредактировать значение переменной PATH, добавив туда путь к директории, где находятся исполняемые файлы Java, то есть %JAVA_HOME%bin
И сохранить всё это, закрыв все открытые диалоги в обратном порядке кнопками OK.
Обратите внимание, что если вы устанавливаете JDK, то в названии директории указывается номер версии, поэтому впоследствии, когда вы решите установить более новую версию, не забудьте поменять значение переменной окружения JAVA_HOME
.
После того, как вы изменили переменные окружения, новые значения будут действительны только для новых запускаемых программ, уже запущенные программы не узнают о том, что переменные окружения поменялись. Поэтому если вы, например, пытались запустить Java из консоли и у вас не получилось из-за неправильных настроек переменной PATH
, вам придётся перезапустить консоль после того, как вы поменяли значение переменной.
6. Удаление лишних файлов
Запустите консоль (cmd
) и выполните в ней команду where java
.
В результате вы должны увидеть путь к исполняемому файлу java.exe
, который операционная система должна успешно обнаружить в том месте, куда вы установили Java. Если файл не нашёлся — значит неправильно настроена переменная PATH
и нужно вернуться к предыдущему пункту.
Однако иногда бывает и наоборот, находятся «лишние» исполняемые файлы:
Происходит это из-за того, что инсталлятор Java вместо того, чтобы правильно настроить переменные окружения, пытается положить исполняемые файлы в директорию C:Windowssystem32
Это не очень хорошо — засоряется системная директория, может возникнуть рассогласование версий Java (в разных директориях разные версии). Поэтому надо удалить из каталога C:Windowssystem32
исполняемые файлы java.exe
, javaw.exe
и javaws.exe
, если они там обнаружатся.
Вот и всё, теперь можно пользоваться Java. Только не забывайте о том, что после установки новой версии надо будет обновить переменную окружения JAVA_HOME
!
ВНИМАНИЕ!Используйте только при крайней необходимости. Не стоит страдать этой уйнёй, автору просто нечем было заняться. Приветствую тебя, странник. Если ты хоть каплю задумывался о том, как же повысить скорость работы своего сервера или клиента, ты попал в тему, которая тебе нужна. И так, приступим. Я собрал множество аргументов с описанием, которые позволяют серверу, а также клиенту работать более оптимизировано и быстрее.ВНИМАНИЕ! Для того, чтобы добиться максимальной производительности, лучше выбрать определенные аргументы, нежели вписывать все сразу. На разных версиях Java и на разном железе — аргументы ведут себя по-разному. Так что лучше после установки аргумента каждый раз перепроверять, улучшилась производительность, или нет.Пример строки запуска:Код:
java -аргумент1 -аргумент2 -аргументN server.jarСтрока запуска моего сервера:Код:
java -Xmx5G -Xmn192M -XX:+UseConcMarkSweepGC -jar server.jarАргументы моего клиента:Код:
-Xmn256MПеред командой запуска сервера, добавьте эту команду:</span>Код:
taskset -c [ядра] [команда запуска][ядра] = 0,1,2,3 — указывать обязательно в таком формате. Выражаем благодарность </span>Основные флагиВыделение памятиСборщики мусораЭто больная тема, советую экспериментировать, чтобы добиться хоть чего-то стоящего, а не наоборот, ухудшить производительность.Экспериментальные аргументы Надеюсь, мой туториал вам пригодился
В java существует несколько областей памяти, размером каждой из которых можно управлять. Большинство лаунчеров могут регулировать только размер кучи (heap). В подробности вдаваться не буду, но эта область позволяет вместить большой объём данных не зависимо от количества переменных. Это, конечно, хорошо, но клиентам с большим количеством модов важна и еще одна область памяти — Permanent Gengeneration. Она отвечает, грубо говоря, за количество переменных, которым процесс java сможет оперировать. Именно в ней создаются все новые объекты, прежде чем переместиться в кучу (основная память). Эту область ланчеры позволяют регулировать очень и очень редко. На нашем сервере не позволяют. Итак, java позволяет оперировать размерами областей памяти (и другими параметрами ВМ) (ВМ — виртуальная машина джавы, JVM) несколькими способами, два основных из которых: — Аргументами командной строки (как это делают лаунчеры и BATники). — Специальной системной переменной _JAVA_OPTIONS О втором способе и о некоторых аргументах ВМ я и хочу сейчас рассказать. Оговорюсь сразу — я буду рассказывать, опираясь в примерах на операционную систему Windows 7, так как именно она стоит у меня на рабочем компьютере. Как устанавливать системные переменные для других ОС Вы сможете отыскать в интернете.Для того, чтобы создать системную переменную нужно: — Открыть Панель управления (Пуск — Панель управления) и выбрать меню Система. Либо, кликнув правой кнопкой мыши на Мой компьютер и выбрав Свойства. — В левой части открывшегося окна нажать Дополнительные параметры системы. — Перейти на вкладку Дополнительно и нажать Переменные среды… — В верхнем списке проверить наличие переменной _JAVA_OPTIONS, и если она есть — удалить её (выделив и нажав кнопку Удалить). — Нажать кнопку Создать… — В верхнее поле открывшегося окна (Имя переменной) писать _JAVA_OPTIONS, а в нижнее — необходимые аргументы ВМ (о них я расскажу в следующей части). — Закрыть все окна, нажав в каждом из них кнопку ОК.Аргументы Виртуальной Машины Java:-Xms Изначальный объем памяти кучи, который выделен ВМ. Идеальное, на мой взгляд, значение это 1024m. Больше не имеет смысла, чем больше памяти клиент откусит — тем более неповоротливым он станет. Существенное увеличение потребления памяти, вопреки ожиданию большинства игроков, только усугубит лаги.-Xmx Максимальный объем памяти кучи, доступный конкретному экземпляру ВМ. Именно этот параметр регулируется в лаунчере. Рекомендую устанавливать значение или равное предыдущему, или на 512m больше.-XXermSize (чертовы смайлики, там двоеточие и англ P) Изначальный объем памяти типов (PermGen). Очень и очень полезен для клиентов с большим количеством модов. По-умолчанию выделяется 128m для x32 систем и 256m для x64. Идеальное значение для наших клиентов — 512m. Слишком большое значение выставлять не рекомендую.-XX:MaxPermSize Максимальный объем памяти типов. Крайне рекомендую устанавливать такой же объем, как и для прошлого аргумента.Внимание! Если у вас установлена Java 8, по последние 2 аргумента (-XXermSize и -XX:MaxPermSize) не имеют ни какого эффекта. Дело в том, что в Java 8 область PermGen была упразднена и заменена на новый тип памяти metaspace, который более оптимизирован и его размер изменяется автоматически.-XX:+DoEscapeAnalysis Очень интересный аргумент с точки зрения программиста. В некоторых случаях позволяет ускорить алгоритмы до 10 раз. С точки зрения игрока — может немного увеличить ФПС, но не всегда.-XX:+AggressiveOpts Включает несколько других аргументов, которые приносят агрессивную оптимизацию в выполнение приложения. На практике — на некоторых компьютерах (я бы сказал на большинстве) дает довольно ощутимый прирост ФПС.-XX:+UseCompressedOops На x64 системах позволяет существенно (до 60%) сократить потребление памяти кучи. Из недостатков — невозможность задать рамер памяти кучи больше 4Гб (нам не актуально) и несущественные дополнительных расходы процессорного времени.-XX:+EliminateLocks Позволяет исправить некоторые, весьма нагружающие код, ляпы программистов. В теории должно немного поднять ФПС. На практике — не обращал внимания.Существует еще довольно много аргументов ВМ (больше 700), многие из которых довольно интересны, но вышеперечисленные дают самую заметную выгоду из всех. Есть еще вариант поиграться с настройками сборщика мусора, но эти эксперименты будут сильно зависеть от конкретного компьютера. О них я постараюсь написать в ближайшем времени в следующем посте этой темы. Итак, подводя итоги… На мой взгляд, хорошим набором аргументов ВМ будет следующий:Код:
-Xms1024m -Xmx1536m -XX:PermSize=512m -XX:MaxPermSize=512m -XX:+DoEscapeAnalysis -XX:+AggressiveOpts -XX:+EliminateLocksСледует учесть, что для пользователей Java 8 строки «-XXermSize=512m -XX:MaxPermSize=512m» не будут иметь ни какого смысла.Не бойтесь экспериментировать с аргументами, ни чего страшного с их помощью вы не сможете сделать, однако при их тонкой подгонке под свой компьютер можно получить очень большой прирост ФПС.Об ошибках. Иногда (всех причин я понять не смог) при таком указании аргументов ВМ некоторые процессы java (в том числе клиент и лаунчер) перестают работать. Выводится соответствующее сообщение вместо запуска ланчера (или другого приложения). В некоторых случаях это может быть вызвано некорректными аргументами. Попробуйте еще поэкспериментировать с ними. В некоторых случаях не запускаются только некоторые java приложения (например, Zona), в то время, как клиент майнкрафта очень хорошо работает. В таких случаях можно временно отключать настройку аргументов, переименовав _JAVA_OPTIONS, к примеру, в ex_JAVA_OPTIONS. Java сразу перестанет подхватывать такие инструкции. В некоторых, очень редких, случаях сама инструкция _JAVA_OPTIONS (даже с самыми безопасными аргументами) приводит к полной неработоспособности Java. В таких случаях я могу посоветовать только переустановку Java (именно сказать установочник с сайте java.com) и Windows. Некоторым помогает, но не всегда. Был случай, когда ни какими способами я так и не заставил работать эту инструкцию у друга.Любые вопросы и уточнения (кроме глупых) приветствуются.PS:PPS: Еще пара небольших советов, раз уж я всех посылаю сюда: 1) Переустановить Windows на версию х64. Обязательно, и не обсуждается. 2) Переустановить джаву на х64 принудительно. Обязательно, и не обсуждается. Выбрать установочник х64 можно тут.
Используемые источники:
- http://barancev.github.io/how-to-install-java-on-windows/
- http://rubukkit.org/threads/uskorenie-raboty-java-argumenty.111538/
- https://sky-mine.ru/forum/threads/prinuditelnoe-vydelenie-pamjati-processu-java.1524/