эффективный java тюнинг кода на java 8 11 и дальше 2 е межд издание pdf

liubov ruki buket 169902 1280x720 Игры для детей

Эффективный java тюнинг кода на java 8 11 и дальше 2 е межд издание pdf

eXOlnCDo80zDDRdjkateAq2vcekRoAT0M7jOBmTVaJzv NbdDktIV HQ0Rr7O69oRncWuMJT

eXOlnCDo80zDDRdjkateAq2vcekRoAT0M7jOBmTVaJzv NbdDktIV HQ0Rr7O69oRncWuMJT

Physics.Math.Code запись закреплена

Эффективный Java. Тюнинг кода на Java 8, 11 и дальше. 2-е издание [2021] Скотт Оукс

Программирование и тестирование обычно принято относить к разным профессиональным сферам. Скотт Оукс — признанный эксперт по языку Java — уверен, что если вы хотите работать с этим языком, то обязаны понимать, как выполняется код в виртуальной машине Java, и знать, какие настройки влияют на производительность.
Вы сможете разобраться в производительности приложений Java в контексте как JVM, так и платформы Java, освоите средства, функции и процессы, которые могут повысить производительность в LTS-версиях Java, и познакомитесь с новыми возможностями (такими как предварительная компиляция и экспериментальные сборщики мусора).
В этой книге вы:
• Узнаете, как платформы и компиляторы Java влияют на производительность.
• Разберетесь c механизмом сборки мусора.
• Освоите четыре принципа получения наилучших результатов при тестировании производительности.
• Научитесь пользоваться JDK и другими инструментами оценки производительности.
• Узнаете как настройка и приемы программирования позволяют минимизировать последствия сборки мусора.
• Научитесь решать проблемы производительности средствами Java API.
• Поймете, как улучшить производительность приложений баз данных Java.

Java Performance: In-Depth Advice for Tuning and Programming Java 8, 11, and Beyond [2021] Scott Oaks

Coding and testing are generally considered separate areas of expertise. In this practical book, Java expert Scott Oaks takes the approach that anyone who works with Java should be adept at understanding how code behaves in the Java Virtual Machine—including the tunings likely to help performance. This updated second edition helps you gain in-depth knowledge of Java application performance using both the JVM and the Java platform. Developers and performance engineers alike will learn a variety of features, tools, and processes for improving the way the Java 8 and 11 LTS releases perform. While the emphasis is on production-supported releases and features, this book also features previews of exciting new technologies such as ahead-of-time compilation and experimental garbage collections.

• Understand how various Java platforms and compilers affect performance.
• Learn how Java garbage collection works.
• Apply four principles to obtain best results from performance testing.
• Use the JDK and other tools to learn how a Java application is performing.
• Minimize the garbage collector’s impact through tuning and programming practices.
• Tackle performance issues in Java APIs.
• Improve Java-driven database application performance.

f09f92beСкачать книгу
https://t.me/physics_lib/8091

Источник

Эффективный Java. Тюнинг кода на Java 8, 11 и дальше. 2-е международное издание

1625842067 44611757 Название: Эффективный Java. Тюнинг кода на Java 8, 11 и дальше. 2-е межд. издание
Автор: Оукс Скотт
Издательство: Питер
Год: 2021
Формат: pdf
Страниц: 496
Размер: 10 Мб
Язык: русский

Программирование и тестирование обычно принято относить к разным профессиональным сферам. Скотт Оукс — признанный эксперт по языку Java — уверен, что если вы хотите работать с этим языком, то обязаны понимать, как выполняется код в виртуальной машине Java, и знать, какие настройки влияют на производительность. Вы сможете разобраться в производительности приложений Java в контексте как JVM, так и платформы Java, освоите средства, функции и процессы, которые могут повысить производительность в LTS-версиях Java, и познакомитесь с новыми возможностями (такими как предварительная компиляция и экспериментальные сборщики мусора).

В этой книге вы:
— Узнаете, как платформы и компиляторы Java влияют на производительность.
— Разберетесь c механизмом сборки мусора.
— Освоите четыре принципа получения наилучших результатов при тестировании производительности.
— Научитесь пользоваться JDK и другими инструментами оценки производительности.
— Узнаете как настройка и приемы программирования позволяют минимизировать последствия сборки мусора.
— Научитесь решать проблемы производительности средствами Java API.
— Поймете, как улучшить производительность приложений баз данных Java.

Источник

Книга «Эффективный Java. Тюнинг кода на Java 8, 11 и дальше. 2-е межд. издание »

Эта книга написана для специалистов по производительности и разработчиков, которые желают разобраться в различных аспектах влияния JVM и Java API на производительность. Если сейчас воскресный вечер, в понедельник ваш сайт должен принять первых посетителей, а вы хотите на скорую руку решить проблемы с производительностью — эта книга не для вас.

Если у вас еще нет опыта анализа производительности и вы начинаете заниматься им в Java — эта книга может вам помочь. Конечно, я постараюсь предоставить достаточно информации и контекста, чтобы начинающие специалисты могли понять, как следует применять основные настройки и принципы регулировки производительности в приложениях Java. Тем не менее системный анализ — весьма обширная область. Существует ряд превосходных ресурсов, посвященных системному анализу в целом (и конечно, эти принципы применимы к Java); в этом смысле книга станет полезным приложением к этим текстам.

Однако на фундаментальном уровне, для того чтобы ваши программы Java работали действительно быстро, необходимо глубоко понимать, как работает JVM (и Java API). Существуют сотни флагов настройки Java, и настройка JVM не должна сводиться к тому, чтобы бездумно изменять эти флаги и смотреть, что из этого получится. Вместо этого я постарался подробно рассказать о том, что делают JVM и API, в надежде, что вы поймете суть происходящего, разберетесь в конкретном поведении приложения и осознаете, почему оно неэффективно работает. После этого вам останется решить простую (или относительно простую) задачу: избавиться от нежелательного (неэффективного) поведения.

Производительность Java включает обе области: настройку флагов компилятора, уборщика мусора и т.д., а также оптимальное использование API. Я буду считать, что вы хорошо умеете писать программы на Java. Даже если вас в первую очередь интересуют непрограммные аспекты Java, мы проведем немало времени за обсуждением программ, включая примеры, которые предоставляют тестовые данные для примеров.

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

Алгоритмы уборки мусора

OpenJDK 12 предоставляет различные алгоритмы уборки мусора с разной степенью поддержки в более ранних версиях. В табл. 5.1 перечислены эти алгоритмы с указанием их статуса в выпусках OpenJDK и Oracle.

image loader

S — полная поддержка; D — считается устаревшим; E — экспериментальная поддержка; E2 — экспериментальная поддержка в сборках OpenJDK, но не в сборках Oracle.

Ниже приводятся краткие описания всех алгоритмов; в главе 6 приведена более подробная информация об их настройке.

Последовательный уборщик мусора

Последовательный уборщик мусора — простейший из всех. Он используется по умолчанию, если приложение работает на машине клиентского уровня (32-разрядные JVM для Windows) или на однопроцессорной машине. Когда-то казалось, что последовательному уборщику мусора пора на свалку, но контейнеризация изменила ситуацию: с появлением одноядерных контейнеров Docker и виртуальных машин (даже с гиперпоточным ядром, которое воспринимается как два процессора) этот алгоритм снова стал актуальным.

Последовательный уборщик мусора использует один поток для обработки кучи. Он останавливает все потоки приложений на время обработки кучи (для малой или полной уборки мусора). Во время полной уборки мусора происходит полное сжатие старого поколения.

Параллельный уборщик мусора

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

Уборщик мусора G1

Уборщик мусора G1 использует стратегию конкурентной уборки мусора для очистки кучи с минимальными паузами. Этот уборщик используется по умолчанию в JDK 11 и более поздних версиях для 64-разрядных JVM на машинах, оснащенных двумя и более процессорами.
Уборщик мусора G1 делит кучу на области, но при этом рассматривает кучу как разделенную на два поколения. Некоторые области формируют молодое поколение, при уборке которого приостанавливаются все потоки приложения, а все живые объекты перемещаются в старое поколение или области выживших объектов (для чего используются множественные потоки).
В уборщике мусора G1 старое поколение обрабатывается фоновыми потоками, которым не нужно останавливать потоки приложения для выполнения большей части своей работы. Так как старое поколение делится на области, уборщик мусора G1 может освобождать объекты из старого поколения, копируя их из одной области в другую; это означает, что он (по крайней мере частично) сжимает кучу в ходе нормальной обработки. Это способствует предотвращению фрагментации куч G1, хотя полностью исключить ее нельзя.

За предотвращение полных циклов уборки мусора приходится расплачиваться процессорным временем: (множественные) фоновые потоки, которые уборщик мусора G1 использует для обработки старого поколения, должны располагать процессорным временем на время выполнения потоков приложения.

Уборщик мусора CMS

Уборщик мусора CMS стал первым конкурентным уборщиком. Как и другие алгоритмы, CMS останавливает все потоки приложений в ходе малой уборки мусора, которую он проводит в нескольких потоках.

Экспериментальные уборщики мусора

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

Включение и выключение принудительной уборки мусора
Уборка мусора обычно происходит тогда, когда JVM считает, что она необходима: малая уборка мусора инициируется при заполнении нового поколения, полная — при заполнении старого поколения, а конкурентная (если она применима) — когда куча близка к заполнению.

Java предоставляет механизм, при помощи которого приложения могут инициировать принудительную уборку мусора: метод System.gc(). Вызывать этот метод почти всегда нежелательно. Вызов всегда запускает полную уборку мусора (даже если JVM работает с уборщиком G1 или CMS), поэтому потоки приложения будут остановлены на относительно длительный период времени. Вызов этого метода не сделает приложение более эффективным; он заставит уборку мусора выполниться ранее, чем она могла бы произойти, но в действительности проблема не исчезает, а всего лишь перемещается в другое место.

У каждого правила есть исключения, особенно при мониторинге производительности или хронометражных тестах. Для небольших хронометражных тестов, которые выполняют код для разогрева JVM, выполнение принудительной уборки мусора перед циклом измерений может иметь смысл. (Так поступает jmh, хотя обычно это не обязательно.) Аналогичным образом, при анализе кучи обычно стоит провести полную уборку мусора перед получением дампа. Многие способы получения дампа кучи все равно проводят полную уборку мусора, но ее также можно инициировать другими способами: выполнить команду jcmd GC.run или подключиться к JVM при помощи jconsole и щелкнуть на кнопке Perform GC на панели Memory.

Резюме

Выбор алгоритма уборки мусора

Выбор алгоритма уборки мусора зависит от нескольких факторов: от имеющегося оборудования, от специфики приложения, от целей приложения по производительности. В JDK 11 уборщик мусора G1 часто оказывается наилучшим вариантом; в JDK 8 выбор зависит от приложения.
Для начала будем условно считать, что алгоритм G1 является более подходящим вариантом, но у каждого правила есть свои исключения. В случае уборки мусора эти исключения связаны с объемом ресурсов процессора, необходимых приложению, относительно доступного оборудования и вычислительными ресурсами, необходимыми потокам G1 для фоновой обработки.

Если вы используете JDK 8, способность алгоритма G1 избегать полной уборки мусора также станет ключевым фактором. Если уборщик мусора G1 не является лучшим вариантом, выбор между параллельными и последовательными уборщиками мусора зависит от количества процессоров на машине.

Для Хаброжителей скидка 25% по купону — Java

По факту оплаты бумажной версии книги на e-mail высылается электронная книга.

Источник

Эффективный java тюнинг кода на java 8 11 и дальше 2 е межд издание pdf

eD4ORmXtjQ6CPhpeWZy1aQQcWjDUX4xpu8 lBrT7iMFTlLgSEOlrWvxC6 12thymWhKICOZwz5bqHvenzSgHpadH

Эта книга написана Яковом Файном для детей от 11 до 18 лет. Это действительно первая книга по Java, которая создана именно для обучения детей. Яков Файн — автор и соавтор нескольких книг по Java, программист с многолетним опытом, так что не стоит думать, что книга написана новичком для новичков. Издание подойдет не только детям, но и преподавателям информатики, а также людям любого возраста, которые не имеют никакого представления о программировании.

eD4ORmXtjQ6CPhpeWZy1aQQcWjDUX4xpu8 lBrT7iMFTlLgSEOlrWvxC6 12thymWhKICOZwz5bqHvenzSgHpadH

eD4ORmXtjQ6CPhpeWZy1aQQcWjDUX4xpu8 lBrT7iMFTlLgSEOlrWvxC6 12thymWhKICOZwz5bqHvenzSgHpadH

eD4ORmXtjQ6CPhpeWZy1aQQcWjDUX4xpu8 lBrT7iMFTlLgSEOlrWvxC6 12thymWhKICOZwz5bqHvenzSgHpadH

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

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

В этом незаменимом руководстве рассматриваются следующие важные темы.

Применение лямбда-выражений для написания вычисляемых фрагментов кода, которые могут быть переданы служебным функциям.
Новые потоки ввода-вывода, организованные в отдельный прикладной программный интерфейс API, который позволяет значительно повысить эффективность коллекций и удобство обращения с ними.
Существенное обновление средств параллельного программирования, где применяются лямбда-выражения для выполнения операций фильтрации, отображения, сведения и достигается значительное повышение производительности при обращении с общими счетчиками и хеш-таблицами.
Полезные рекомендации по практическому применению лямбда-выражений в прикладных программах.
Описание долгожданной качественно разработанной библиотеки для даты, времени и календаря (JSR 310).
Прикладной программный интерфейс JavaFX, предназначенный на замену библиотеки Swing для построения графических пользовательских интерфейсов, а также интерпретатор Nashorn языка JavaScript.
Многочисленные мелкие изменения в библиотеке, позволяющие сделать программирование на Java более продуктивным и приятным занятием.

eD4ORmXtjQ6CPhpeWZy1aQQcWjDUX4xpu8 lBrT7iMFTlLgSEOlrWvxC6 12thymWhKICOZwz5bqHvenzSgHpadH

В версии Java SE 8 внедрены значительные усовершенствования, оказывающие влияние на технологии и прикладные программные интерфейсы API, образующие ядро платформы Java. Многие из прежних принципов и приемов программирования на Java больше не нужны, а новые средства вроде лямбда-выражений повышают производительность труда программистов, хотя разобраться в этих нововведениях не так-то просто.
Эта книга является полным, хотя и кратким справочником по версии Java SE 8. Она написана Кеем С.Хорстманном, автором книги Java SE 8. Вводный курс и классического двухтомного справочника по предыдущим версиям Java, и служит незаменимым учебным пособием для быстрого и легкого изучения этого языка и его библиотек. Учитывая масштабы Java и разнообразие новых языковых средств, внедренных в версии Java SE 8, материал этой книги подается небольшими порциями для быстроты усвоения и простоты понимания.
Многочисленные практические рекомендации автора книги и примеры кода помогут читателям, имеющим опыт программирования на Java, быстро воспользоваться преимуществами лямбда-выражений, потоков данных и прочими усовершенствованиями языка и платформы Java. В книге освещается все, что нужно знать прикладным программистам о современной версии Java, включая следующее.
Ясное и доходчивое изложение синтаксиса лямбда-выражений, позволяющих лаконично выражать выполняемые действия.
Подробное введение в новый прикладной программный интерфейс API потоков данных, благодаря которому обработка данных становится более гибкой и эффективной.
Рассмотрение основных принципов параллельного программирования, стимулирующих к разработке программ с точки зрения взаимодействия параллельно выполняемых задач, а не низкоуровневых потоков исполнения и блокировок.
Современный взгляд на новые библиотеки вроде даты и времени.
Обсуждение других новых средств, которые могут быть особенно полезны для разработчиков серверных и мобильных приложений.

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

Источник

Поделиться с друзьями
admin
Сказочный портал
Adblock
detector