Skip to content

Commit dcf3ca0

Browse files
Copilotbrunoborges
andauthored
Add Russian translations for io/ content patterns
Translate all 10 io/ pattern files from German to Russian: - deserialization-filters.yaml - file-memory-mapping.yaml - files-mismatch.yaml - http-client.yaml - inputstream-transferto.yaml - io-class-console-io.yaml - path-of.yaml - reading-files.yaml - try-with-resources-effectively-final.yaml - writing-files.yaml All files validated as well-formed YAML with required fields. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Co-authored-by: brunoborges <129743+brunoborges@users.noreply.github.com>
1 parent cc34226 commit dcf3ca0

10 files changed

+170
-0
lines changed
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
title: "Фильтры десериализации"
2+
oldApproach: "Принимать всё"
3+
modernApproach: "ObjectInputFilter"
4+
summary: "Ограничение допустимых для десериализации классов в целях предотвращения атак."
5+
explanation: "ObjectInputFilter позволяет вести списки разрешённых и запрещённых классов, а также ограничивать глубину графа объектов, размеры массивов и счётчики ссылок. Это защищает от уязвимостей десериализации без внешних библиотек."
6+
whyModernWins:
7+
- icon: "🛡️"
8+
title: "Безопасность"
9+
desc: "Предотвращение десериализации неожиданных или вредоносных классов."
10+
- icon: "📐"
11+
title: "Детальный контроль"
12+
desc: "Управление глубиной, размерами массивов, ссылками и шаблонами классов."
13+
- icon: "🏗️"
14+
title: "На уровне JVM"
15+
desc: "Установка глобального фильтра для всех десериализаций в JVM."
16+
support:
17+
description: "Доступно в JDK 9 (сент. 2017)"
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
title: "Отображение файлов в память"
2+
oldApproach: "MappedByteBuffer"
3+
modernApproach: "MemorySegment с Arena"
4+
summary: "Отображение файлов размером более 2 ГБ с детерминированной очисткой через MemorySegment."
5+
explanation: "Foreign Function & Memory API (JEP 454) вводит MemorySegment для безопасного и эффективного доступа к памяти. В отличие от MappedByteBuffer, MemorySegment поддерживает файлы размером более 2 ГБ (Integer.MAX_VALUE), обеспечивает детерминированную очистку через Arena и лучшую производительность на современном оборудовании."
6+
whyModernWins:
7+
- icon: "📏"
8+
title: "Без ограничений по размеру"
9+
desc: "Отображение файлов размером более 2 ГБ без обходных путей."
10+
- icon: "🔒"
11+
title: "Детерминированная очистка"
12+
desc: "Arena гарантирует освобождение памяти при выходе из области видимости, а не при сборке мусора."
13+
- icon: ""
14+
title: "Лучшая производительность"
15+
desc: "Оптимизировано для современных моделей памяти и оборудования."
16+
support:
17+
description: "Доступно в JDK 22 (март 2024)"
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
title: "Files.mismatch()"
2+
oldApproach: "Ручное побайтовое сравнение"
3+
modernApproach: "Files.mismatch()"
4+
summary: "Эффективное сравнение двух файлов без загрузки их в память."
5+
explanation: "Files.mismatch() возвращает позицию первого отличающегося байта или -1, если файлы идентичны. Читает лениво и прерывается при первом отличии."
6+
whyModernWins:
7+
- icon: ""
8+
title: "Эффективное использование памяти"
9+
desc: "Не загружает полные файлы в байтовые массивы."
10+
- icon: "🎯"
11+
title: "Точное определение различия"
12+
desc: "Возвращает точную позицию байта первого отличия."
13+
- icon: "📏"
14+
title: "Один вызов"
15+
desc: "Никакой ручной логики сравнения байтовых массивов."
16+
support:
17+
description: "Доступно в JDK 12 (март 2019)"
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
title: "Современный HTTP-клиент"
2+
oldApproach: "HttpURLConnection"
3+
modernApproach: "HttpClient"
4+
summary: "Использование встроенного HttpClient для чистых современных HTTP-запросов."
5+
explanation: "HttpClient поддерживает HTTP/1.1 и HTTP/2, асинхронные запросы, WebSocket, пользовательские исполнители и пул соединений. Больше не нужно приводить URLConnection или вручную читать потоки InputStream."
6+
whyModernWins:
7+
- icon: "📐"
8+
title: "Builder API"
9+
desc: "Текучий Builder для запросов, заголовков и таймаутов."
10+
- icon: "🔄"
11+
title: "Поддержка HTTP/2"
12+
desc: "Встроенный HTTP/2 с мультиплексированием и Server Push."
13+
- icon: ""
14+
title: "Асинхронность"
15+
desc: "sendAsync() возвращает CompletableFuture."
16+
support:
17+
description: "Доступно в JDK 11 (сент. 2018)"
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
title: "InputStream.transferTo()"
2+
oldApproach: "Ручной цикл копирования"
3+
modernApproach: "transferTo()"
4+
summary: "Копирование InputStream в OutputStream одним вызовом."
5+
explanation: "transferTo() читает все байты из входного потока и записывает их в выходной поток. Никакого управления буфером, никаких циклов. Используется оптимизированный внутренний буфер."
6+
whyModernWins:
7+
- icon: "📏"
8+
title: "Одна строка"
9+
desc: "Замена всего цикла чтения/записи одним вызовом метода."
10+
- icon: ""
11+
title: "Оптимизировано"
12+
desc: "Размер внутреннего буфера оптимизирован для производительности."
13+
- icon: "🛡️"
14+
title: "Без ошибок"
15+
desc: "Никаких ошибок смещения на единицу при управлении буфером."
16+
support:
17+
description: "Доступно в JDK 9 (сент. 2017)"
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
title: "Класс IO для консольного ввода-вывода"
2+
oldApproach: "System.out / Scanner"
3+
modernApproach: "Класс IO"
4+
summary: "Новый класс IO предоставляет простые, краткие методы для консольного ввода и вывода."
5+
explanation: "Java 25 вводит класс IO (java.io.IO) как часть неявно объявленных классов. Он предоставляет статические методы println(), print(), readln() и read(), которые заменяют неудобное сочетание System.out и Scanner. IO.readln(prompt) объединяет приглашение ввода и чтение в одном вызове. Класс автоматически доступен в компактных исходных файлах и может использоваться в обычных классах через импорт."
6+
whyModernWins:
7+
- icon: ""
8+
title: "Значительно проще"
9+
desc: "Два метода заменяют семь строк настройки Scanner, приглашения, чтения и очистки."
10+
- icon: "🔒"
11+
title: "Без утечек ресурсов"
12+
desc: "Не нужно закрывать Scanner — методы IO управляют ресурсами внутри."
13+
- icon: "🎓"
14+
title: "Удобно для начинающих"
15+
desc: "Новые разработчики могут использовать консольный ввод-вывод без знания Scanner, System.out или операторов import."
16+
support:
17+
description: "Предварительный просмотр в JDK 25 как часть неявно объявленных классов (JEP 495)"
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
title: "Фабричный метод Path.of()"
2+
oldApproach: "Paths.get()"
3+
modernApproach: "Path.of()"
4+
summary: "Использование Path.of() — современного фабричного метода интерфейса Path."
5+
explanation: "Path.of() — это фабричный метод, добавленный непосредственно в интерфейс Path, заменяющий вспомогательный класс Paths. Он лучше обнаруживается и соответствует шаблону List.of(), Map.of() и т.д."
6+
whyModernWins:
7+
- icon: "📐"
8+
title: "Единообразный API"
9+
desc: "Следует шаблону фабрики .of() как List.of(), Set.of()."
10+
- icon: "📖"
11+
title: "Легко найти"
12+
desc: "Находится непосредственно в типе Path, а не в отдельном классе Paths."
13+
- icon: "🧹"
14+
title: "На один класс меньше"
15+
desc: "Не нужно импортировать вспомогательный класс Paths."
16+
support:
17+
description: "Доступно в JDK 11 (сент. 2018)"
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
title: "Чтение файлов"
2+
oldApproach: "BufferedReader"
3+
modernApproach: "Files.readString()"
4+
summary: "Чтение всего файла в строку одной строкой кода."
5+
explanation: "Files.readString() читает всё содержимое файла в строку. Автоматически обрабатывает кодировку (по умолчанию UTF-8) и очистку ресурсов. Для больших файлов предпочтительнее Files.lines() для ленивой потоковой обработки."
6+
whyModernWins:
7+
- icon: "📏"
8+
title: "Одна строка"
9+
desc: "Замена 8 строк шаблонного кода BufferedReader."
10+
- icon: "🧹"
11+
title: "Автоматическая очистка"
12+
desc: "Дескриптор файла закрывается автоматически."
13+
- icon: "🌐"
14+
title: "UTF-8 по умолчанию"
15+
desc: "Правильная кодировка по умолчанию — никакой путаницы с кодировкой символов."
16+
support:
17+
description: "Доступно в JDK 11 (сент. 2018)"
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
title: "Улучшенный try-with-resources"
2+
oldApproach: "Повторное объявление переменной"
3+
modernApproach: "Эффективно финальная переменная"
4+
summary: "Использование существующих эффективно финальных переменных непосредственно в try-with-resources."
5+
explanation: "Java 9 позволяет использовать эффективно финальные переменные непосредственно в try-with-resources без повторного объявления. Это чище, когда ресурс был создан за пределами блока try."
6+
whyModernWins:
7+
- icon: "🧹"
8+
title: "Без повторного объявления"
9+
desc: "Использование существующего имени переменной напрямую."
10+
- icon: "📖"
11+
title: "Меньше путаницы"
12+
desc: "Нет отдельного имени переменной внутри блока try."
13+
- icon: "📏"
14+
title: "Лаконично"
15+
desc: "Меньше строк при той же безопасности ресурсов."
16+
support:
17+
description: "Доступно в JDK 9 (сент. 2017)"
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
title: "Запись файлов"
2+
oldApproach: "FileWriter + BufferedWriter"
3+
modernApproach: "Files.writeString()"
4+
summary: "Запись строки в файл одной строкой кода."
5+
explanation: "Files.writeString() записывает содержимое в файл с кодировкой UTF-8 по умолчанию. Для добавления содержимого, создания файла и т.п. можно передавать опции."
6+
whyModernWins:
7+
- icon: "📏"
8+
title: "Одна строка"
9+
desc: "Не нужна обёртка Writer или try-with-resources."
10+
- icon: "🛡️"
11+
title: "Безопасные значения по умолчанию"
12+
desc: "Кодировка UTF-8, корректное закрытие дескриптора файла."
13+
- icon: "🔧"
14+
title: "Опции"
15+
desc: "Флаги OpenOption для добавления содержимого, создания файла и т.д."
16+
support:
17+
description: "Доступно в JDK 11 (сент. 2018)"

0 commit comments

Comments
 (0)