Skip to content

Commit c74974e

Browse files
Copilotbrunoborges
andauthored
Add Russian translations for all language pattern content files
Translate 23 YAML content files from German to Russian under translations/content/ru/language/. All translatable fields (title, oldApproach, modernApproach, summary, explanation, whyModernWins[].title, whyModernWins[].desc, support.description) are translated. YAML structure, keys, emoji icons, and code references are preserved unchanged. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Co-authored-by: brunoborges <129743+brunoborges@users.noreply.github.com>
1 parent dcf3ca0 commit c74974e

23 files changed

+391
-0
lines changed
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
title: "Вызов C-кода из Java"
2+
oldApproach: "JNI (Java Native Interface)"
3+
modernApproach: "FFM (Foreign Function & Memory API)"
4+
summary: "FFM позволяет Java напрямую вызывать C-библиотеки без шаблонного кода JNI и без знания Java на стороне C."
5+
explanation: "Java предлагает два подхода для вызова нативного кода C/C++: традиционный JNI и современный FFM API. При использовании JNI нужно объявить метод как native, запустить javac -h для генерации заголовочного файла C и реализовать функцию с громоздким JNI C API (JNIEnv, jstring и т.д.). FFM, ставший стандартным API в Java 22, устраняет всё это: C-код остаётся чистым C — никаких JNI-соглашений не требуется. Это значительно упрощает вызов существующих библиотек C/C++ без каких-либо изменений. На стороне Java используется Arena для безопасного управления памятью вне кучи и MethodHandle для downcall, что обеспечивает гибкость и безопасность."
6+
whyModernWins:
7+
- icon: "👁"
8+
title: "C-код остаётся чистым C"
9+
desc: "Функции C не нужны JNI-аннотации или шаблонный JNIEnv — любая существующая C-библиотека может быть вызвана напрямую."
10+
- icon: ""
11+
title: "Более гибкий подход"
12+
desc: "Большинство существующих библиотек C/C++ можно вызывать напрямую без написания адаптерного кода или генерации заголовочных файлов."
13+
- icon: "🛠️"
14+
title: "Упрощённый рабочий процесс"
15+
desc: "Не нужно останавливаться, запускать javac -h или реализовывать интерфейс, определённый в сгенерированном .h-файле."
16+
support:
17+
description: "Стандартизирован в JDK 22 (март 2024); ранее находился в инкубационной фазе с JDK 14"
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
title: "Компактный канонический конструктор"
2+
oldApproach: "Явная валидация в конструкторе"
3+
modernApproach: "Компактный конструктор"
4+
summary: "Валидация и нормализация полей record без повторения списка параметров."
5+
explanation: "Record может объявить компактный канонический конструктор, который опускает список параметров и присваивания полей. Компилятор автоматически присваивает параметры полям после выполнения вашей логики валидации. Это идеально подходит для проверки предусловий, защитного копирования и нормализации."
6+
whyModernWins:
7+
- icon: "✂️"
8+
title: "Меньше повторений"
9+
desc: "Не нужно повторять список параметров и вручную присваивать каждое поле."
10+
- icon: "🛡️"
11+
title: "Валидация"
12+
desc: "Отлично подходит для проверки на null, валидации диапазонов и защитного копирования."
13+
- icon: "📖"
14+
title: "Более понятное намерение"
15+
desc: "Компактный синтаксис акцентирует внимание на валидации, а не на шаблонном коде."
16+
support:
17+
description: "Доступно в JDK 16 (март 2021)"
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
title: "Компактные исходные файлы"
2+
oldApproach: "Церемония классов для main"
3+
modernApproach: "void main()"
4+
summary: "Писать полноценную программу без объявления класса и public static void main."
5+
explanation: "Компактные исходные файлы устраняют церемонию объявлений классов и сигнатуры метода main для простых программ. В сочетании с неявным импортом java.io.IO даже println доступен напрямую."
6+
whyModernWins:
7+
- icon: "🚀"
8+
title: "Ноль церемоний"
9+
desc: "Никакого класса, никакого public static void main, никакого String[] args."
10+
- icon: "🎓"
11+
title: "Дружелюбно для начинающих"
12+
desc: "Новые программисты могут писать полезный код с первой же строки."
13+
- icon: "📝"
14+
title: "Похоже на скрипт"
15+
desc: "Идеально для быстрых прототипов, скриптов и примеров."
16+
support:
17+
description: "Финализировано в JDK 25 LTS (JEP 512, сент. 2025)."
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
title: "Методы по умолчанию в интерфейсах"
2+
oldApproach: "Абстрактные классы для общего поведения"
3+
modernApproach: "Методы по умолчанию в интерфейсах"
4+
summary: "Размещать реализации методов непосредственно в интерфейсах, обеспечивая множественное наследование поведения."
5+
explanation: "До Java 8 совместное использование поведения между несвязанными классами требовало абстрактных классов, что ограничивало одиночным наследованием. Методы по умолчанию позволяют интерфейсам предоставлять реализации методов, так что классы могут наследовать поведение от нескольких интерфейсов. Это было ключевым для развития Collections API (например, List.forEach, Map.getOrDefault) без нарушения существующих реализаций."
6+
whyModernWins:
7+
- icon: "🔀"
8+
title: "Множественное наследование"
9+
desc: "Классы могут реализовывать множество интерфейсов с методами по умолчанию — в отличие от единственного абстрактного класса."
10+
- icon: "📦"
11+
title: "Эволюция API"
12+
desc: "Добавлять новые методы в интерфейсы без нарушения существующих реализаций."
13+
- icon: "🧩"
14+
title: "Компонуемое поведение"
15+
desc: "Свободно комбинировать возможности из нескольких интерфейсов."
16+
support:
17+
description: "Доступно с JDK 8 (март 2014)."
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
title: "Оператор diamond с анонимными классами"
2+
oldApproach: "Повторение аргументов типа"
3+
modernApproach: "Diamond <>"
4+
summary: "Оператор diamond теперь работает и с анонимными классами."
5+
explanation: "Java 7 представила <>, но это не работало с анонимными внутренними классами. Java 9 исправила это, так что аргументы типа в правой части никогда не нужно повторять."
6+
whyModernWins:
7+
- icon: "📏"
8+
title: "Единые правила"
9+
desc: "Diamond работает везде — как в конструкторах, так и в анонимных классах."
10+
- icon: "🧹"
11+
title: "Меньше избыточности"
12+
desc: "Аргументы типа указываются один раз слева и никогда не повторяются."
13+
- icon: "🔧"
14+
title: "Принцип DRY"
15+
desc: "Компилятор уже знает тип — зачем писать его дважды?"
16+
support:
17+
description: "Diamond с анонимными классами с JDK 9 (сент. 2017)."
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
title: "Исчерпывающий switch без default"
2+
oldApproach: "Обязательная ветка default"
3+
modernApproach: "Исчерпываемость sealed"
4+
summary: "Компилятор проверяет, что все sealed-подтипы охвачены — default не требуется."
5+
explanation: "При switch по sealed-типу компилятор знает все возможные подтипы и проверяет, что каждый случай обработан. Если добавить новый подтип, компилятор укажет на каждый switch, который стал неполным."
6+
whyModernWins:
7+
- icon: ""
8+
title: "Безопасность на этапе компиляции"
9+
desc: "Добавьте новый подтип — компилятор покажет каждое место, которое нужно обновить."
10+
- icon: "🚫"
11+
title: "Нет мёртвого кода"
12+
desc: "Никакой недостижимой ветки default, скрывающей ошибки."
13+
- icon: "📐"
14+
title: "Алгебраические типы"
15+
desc: "sealed + records + исчерпывающий switch = настоящие ADT в Java."
16+
support:
17+
description: "Доступно в JDK 21 LTS (сент. 2023)"
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
title: "Гибкое тело конструктора"
2+
oldApproach: "Валидация после super()"
3+
modernApproach: "Код перед super()"
4+
summary: "Валидировать и вычислять значения до вызова super() или this()."
5+
explanation: "Java 25 снимает ограничение, согласно которому super() должен быть первым оператором. Теперь можно валидировать аргументы, вычислять производные значения и подготавливать состояние перед делегированием родительскому конструктору."
6+
whyModernWins:
7+
- icon: "🛡️"
8+
title: "Раннее завершение"
9+
desc: "Валидировать аргументы до выполнения конструктора суперкласса."
10+
- icon: "🧮"
11+
title: "Сначала вычислить"
12+
desc: "Вывести значения и подготовить данные до вызова super()."
13+
- icon: "🧹"
14+
title: "Никаких обходных путей"
15+
desc: "Больше не нужны статические вспомогательные методы или паттерн Factory для обхода ограничения."
16+
support:
17+
description: "Финализировано в JDK 25 LTS (JEP 513, сент. 2025)."
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
title: "Охраняемые паттерны с when"
2+
oldApproach: "Вложенный if"
3+
modernApproach: "Клауза when"
4+
summary: "Добавлять условия к ветвям паттернов с помощью охранников when."
5+
explanation: "Охраняемые паттерны позволяют уточнить совпадение по типу дополнительным булевым условием. Благодаря этому вся логика ветвления остаётся в switch, а не вложена в ветви в виде if-операторов."
6+
whyModernWins:
7+
- icon: "🎯"
8+
title: "Точное совпадение"
9+
desc: "Объединить тип и условие в одной метке case."
10+
- icon: "📐"
11+
title: "Плоская структура"
12+
desc: "Никаких вложенных if/else внутри ветвей switch."
13+
- icon: "📖"
14+
title: "Читаемое намерение"
15+
desc: "Клауза when читается как естественный язык."
16+
support:
17+
description: "Доступно в JDK 21 LTS (сент. 2023)"
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
title: "Markdown в комментариях Javadoc"
2+
oldApproach: "Javadoc на основе HTML"
3+
modernApproach: "Javadoc на Markdown"
4+
summary: "Писать комментарии Javadoc на Markdown вместо HTML для лучшей читаемости."
5+
explanation: "Java 23 вводит комментарии Javadoc на Markdown с синтаксисом /// как альтернативу традиционному формату /** */ на основе HTML. Синтаксис Markdown более естественен для написания и чтения: поддерживаются блоки кода, выделение, списки и ссылки. Компилятор преобразует Markdown в HTML для вывода Javadoc."
6+
whyModernWins:
7+
- icon: "📖"
8+
title: "Естественный синтаксис"
9+
desc: "Обратные кавычки для inline-кода и ``` для блоков вместо HTML-тегов."
10+
- icon: "✍️"
11+
title: "Проще писать"
12+
desc: "Никакого {@code}, <pre>, <p>-тегов — просто пишите Markdown."
13+
- icon: "👁"
14+
title: "Лучше в редакторах"
15+
desc: "Markdown отлично отображается в современных IDE и текстовых редакторах."
16+
support:
17+
description: "Доступно с JDK 23 (сент. 2024)"
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
title: "Объявления импорта модулей"
2+
oldApproach: "Множество импортов"
3+
modernApproach: "import module"
4+
summary: "Импортировать все экспортируемые пакеты модуля одним объявлением."
5+
explanation: "Объявления импорта модулей позволяют импортировать всё, что экспортирует модуль, одной строкой. Особенно полезно для java.base, который охватывает коллекции, ввод-вывод, потоки и многое другое."
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 25 LTS (JEP 511, сент. 2025)."

0 commit comments

Comments
 (0)