Выбираем темы для рассмотрения в следующие выходные! 🤨
Anonymous Poll
30%
OkHttp
19%
AOP
7%
HATEOS
44%
Minecraft Forge API
👍3
(периодически обновляемое)
Если хотите найти информацию по Java, ранее опубликованную на канале - для Вас подготовлено оглавление!
Обновлено оглавление (12.07.25)
Читайте, используйте, будут вопросы - пишите!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7
Java for Beginner pinned «☄️ Оглавление для обучающих постов. (периодически обновляемое) Если хотите найти информацию по Java, ранее опубликованную на канале - для Вас подготовлено оглавление! ✔️ Пользуйтесь на здоровье! 🔜 Часть 1. 🔜 Часть 2. 🔜 Часть 3. SPRING 🔜 Часть 4. SPRING…»
А вы знали, что первой социальной платформой, в которой появились виртуальное представление личности пользователя уже в современном понимании и виде, был Snapchat?
В 2016 году компания Snap приобрела Bitmoji и материнскую компанию Bitstrips за 64,2 миллиона долларов и добавила в Snapchat возможность настраивать цифровые аватары.
Proof
#facts
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1
"Автоматизация процессов начинается с автоматизации мышления."
Георгий Лопато, разработчик советских ЭВМ, сказал это в 1970 году на конференции в Минске.
Биография
#Citation #Biography
Please open Telegram to view this post
VIEW IN TELEGRAM
Wikipedia
Лопато, Георгий Павлович
Георгий Павлович Лопато (23 августа 1924 (1924-08-23) — 13 февраля 2003) — советский учёный, ветеран вычислительной техники. Член-корреспондент АН СССР (1979) и член-корреспондент НАН Белоруссии.
👍1
Комментарии в Java
1. Что такое комментарии в Java?
Комментарии — это части исходного кода, которые игнорируются компилятором Java и не включаются в скомпилированный байт-код. Они предназначены для добавления пояснений, документации или временного исключения кода из выполнения. В Java существуют три типа комментариев: однострочные, многострочные и Javadoc, каждый из которых имеет свои особенности и области применения.
Зачем нужны комментарии?
Документация: Объясняют назначение кода, классов, методов и сложных алгоритмов.
Читаемость: Упрощают понимание кода другими разработчиками или при возвращении к проекту спустя время.
Поддержка API: Javadoc-комментарии используются для генерации документации API.
Отладка: Позволяют временно исключать фрагменты кода без их удаления.
Командная работа: Унифицируют понимание кода в команде, особенно в больших проектах.
2. Синтаксис комментариев
Java поддерживает три типа комментариев, каждый из которых имеет уникальный синтаксис и назначение.
2.1. Однострочные комментарии (//)
Описание: Начинаются с // и продолжаются до конца строки.
Применение: Используются для коротких пояснений или аннотаций к отдельным строкам кода.
Синтаксис:
2.2. Многострочные комментарии (/* */)
Описание: Начинаются с /* и заканчиваются */, охватывая одну или несколько строк.
Применение: Используются для более длинных пояснений или временного исключения блока кода.
Синтаксис:
2.3. Javadoc-комментарии (/** */)
Описание: Начинаются с /** и заканчиваются */, используются для генерации документации API.
Применение: Документируют классы, методы, поля и пакеты, включая теги, такие как @param, @return и т.д.
Синтаксис:
Примечания к синтаксису:
Комментарии не могут быть вложенными. Например, нельзя поместить /* */ внутрь другого /* */.
Javadoc-комментарии обрабатываются инструментом javadoc для создания HTML-документации.
Однострочные комментарии могут следовать за кодом в той же строке, в то время как многострочные и Javadoc-комментарии обычно размещаются перед кодом.
3. Типы комментариев и их особенности
3.1. Однострочные комментарии (//)
Назначение: Используются для кратких пояснений, аннотаций к переменным или временных заметок.
Особенности:
Игнорируются компилятором.
Подходят для пояснений, которые не требуют много текста.
Часто используются для "инлайн"-комментариев (например, после строки кода).
Пример:
3.2. Многострочные комментарии (/* */)
Назначение: Используются для описания сложной логики, временного исключения кода или добавления заметок, которые не помещаются в одну строку.
Особенности:
Могут охватывать несколько строк, что делает их удобными для больших пояснений.
Часто используются для комментирования блоков кода при отладке.
Не поддерживают вложенность (например, /* /* */ */ вызовет ошибку).
Пример:
3.3. Javadoc-комментарии (/** */)
Назначение: Используются для документирования кода и генерации профессиональной документации API.
Особенности:
Поддерживают специальные теги (например, @param, @return, @throws) для описания параметров, возвращаемых значений и исключений.
Используются инструментом javadoc для создания HTML-документации.
Обычно размещаются непосредственно перед классами, методами или полями.
#Java #для_новичков #beginner #java_syntax #commentaries
1. Что такое комментарии в Java?
Комментарии — это части исходного кода, которые игнорируются компилятором Java и не включаются в скомпилированный байт-код. Они предназначены для добавления пояснений, документации или временного исключения кода из выполнения. В Java существуют три типа комментариев: однострочные, многострочные и Javadoc, каждый из которых имеет свои особенности и области применения.
Зачем нужны комментарии?
Документация: Объясняют назначение кода, классов, методов и сложных алгоритмов.
Читаемость: Упрощают понимание кода другими разработчиками или при возвращении к проекту спустя время.
Поддержка API: Javadoc-комментарии используются для генерации документации API.
Отладка: Позволяют временно исключать фрагменты кода без их удаления.
Командная работа: Унифицируют понимание кода в команде, особенно в больших проектах.
2. Синтаксис комментариев
Java поддерживает три типа комментариев, каждый из которых имеет уникальный синтаксис и назначение.
2.1. Однострочные комментарии (//)
Описание: Начинаются с // и продолжаются до конца строки.
Применение: Используются для коротких пояснений или аннотаций к отдельным строкам кода.
Синтаксис:
// Это однострочный комментарий
int x = 10; // Устанавливаем начальное значение x
2.2. Многострочные комментарии (/* */)
Описание: Начинаются с /* и заканчиваются */, охватывая одну или несколько строк.
Применение: Используются для более длинных пояснений или временного исключения блока кода.
Синтаксис:
/* Это многострочный комментарий.
Он может занимать несколько строк.
Используется для описания сложной логики. */
int y = 20;
2.3. Javadoc-комментарии (/** */)
Описание: Начинаются с /** и заканчиваются */, используются для генерации документации API.
Применение: Документируют классы, методы, поля и пакеты, включая теги, такие как @param, @return и т.д.
Синтаксис:
/**
* Вычисляет сумму двух чисел.
* @param a Первое число
* @param b Второе число
* @return Сумма чисел
*/
public int add(int a, int b) {
return a + b;
}
Примечания к синтаксису:
Комментарии не могут быть вложенными. Например, нельзя поместить /* */ внутрь другого /* */.
Javadoc-комментарии обрабатываются инструментом javadoc для создания HTML-документации.
Однострочные комментарии могут следовать за кодом в той же строке, в то время как многострочные и Javadoc-комментарии обычно размещаются перед кодом.
3. Типы комментариев и их особенности
3.1. Однострочные комментарии (//)
Назначение: Используются для кратких пояснений, аннотаций к переменным или временных заметок.
Особенности:
Игнорируются компилятором.
Подходят для пояснений, которые не требуют много текста.
Часто используются для "инлайн"-комментариев (например, после строки кода).
Пример:
int counter = 0; // Счетчик для отслеживания итераций
counter++; // Увеличиваем счетчик
3.2. Многострочные комментарии (/* */)
Назначение: Используются для описания сложной логики, временного исключения кода или добавления заметок, которые не помещаются в одну строку.
Особенности:
Могут охватывать несколько строк, что делает их удобными для больших пояснений.
Часто используются для комментирования блоков кода при отладке.
Не поддерживают вложенность (например, /* /* */ */ вызовет ошибку).
Пример:
/* Этот метод временно отключен для отладки.
Он будет восстановлен после тестирования.
int computeValue(int input) {
return input * 2;
}
*/
3.3. Javadoc-комментарии (/** */)
Назначение: Используются для документирования кода и генерации профессиональной документации API.
Особенности:
Поддерживают специальные теги (например, @param, @return, @throws) для описания параметров, возвращаемых значений и исключений.
Используются инструментом javadoc для создания HTML-документации.
Обычно размещаются непосредственно перед классами, методами или полями.
#Java #для_новичков #beginner #java_syntax #commentaries
👍4
Пример:
Основные Javadoc-теги:
4. Правильное применение комментариев
Правильное использование комментариев улучшает читаемость, поддерживаемость и качество кода.
Вот рекомендации по их применению:
4.1. Однострочные комментарии
Когда использовать:
Для кратких пояснений к переменным, строкам кода или логике.
Для временных заметок или TODO-комментариев.
Лучшие практики:
Пишите кратко и по делу (например, // Инициализация счетчика).
Избегайте очевидных комментариев (например, // Увеличиваем x на 1 для x++).
Размещайте комментарий на той же строке или над ней, если он поясняет конкретную строку.
Пример:
4.2. Многострочные комментарии
Когда использовать:
Для описания сложной логики или алгоритмов.
Для временного исключения кода при отладке.
Для добавления заметок о контексте или ограничениях.
Лучшие практики:
Используйте для пояснений, которые не помещаются в одну строку.
Избегайте чрезмерного комментирования кода, который можно удалить.
Форматируйте комментарии для читаемости (например, выравнивайте строки).
Пример:
4.3. Javadoc-комментарии
Когда использовать:
Для документирования публичных и защищенных классов, методов и полей.
Для создания документации API, которая будет использоваться другими разработчиками.
Лучшие практики:
Пишите Javadoc для всех публичных элементов API.
Используйте теги (@param, @return) для описания параметров и возвращаемых значений.
Пишите краткие, но полные описания, избегая избыточной информации.
Обновляйте Javadoc при изменении кода.
Пример:
4.4. Общие рекомендации
Самодокументирующийся код: Пишите код так, чтобы он был понятен без комментариев, используя описательные имена переменных и методов.
Избегайте избыточности: Не комментируйте очевидные вещи (например, // Присваиваем 5 для x = 5).
Обновляйте комментарии: Устаревшие комментарии могут ввести в заблуждение.
Используйте TODO и FIXME: Отмечайте незавершенные задачи или проблемы в коде (например, // TODO: Добавить обработку ошибок).
5. Назначение комментариев
Комментарии выполняют несколько ключевых функций:
5.1. Документация кода
Объясняют назначение классов, методов и сложных алгоритмов, делая код понятным для других разработчиков.
5.2. Улучшение читаемости
Поясняют логику, которая может быть неочевидной, особенно в сложных алгоритмах или низкоуровневых операциях.
5.3. Поддержка API
Javadoc-комментарии создают профессиональную документацию, которая используется в библиотеках и фреймворках.
5.4. Отладка и сопровождение
Позволяют временно исключать код или оставлять заметки для будущих изменений.
5.5. Командная работа
Унифицируют понимание кода в команде, особенно в больших или распределенных проектах.
#Java #для_новичков #beginner #java_syntax #commentaries
/**
* Класс для управления данными пользователя.
* @author John Doe
* @version 1.0
*/
public class User {
/**
* Имя пользователя.
*/
private String name;
/**
* Возвращает имя пользователя.
* @return имя пользователя
*/
public String getName() {
return name;
}
}
Основные Javadoc-теги:
@param <имя> <описание>: Описывает параметр метода.
@return <описание>: Описывает возвращаемое значение.
@throws <тип_исключения> <описание>: Указывает исключения, которые может выбросить метод.
@author <имя>: Указывает автора кода.
@version <версия>: Указывает версию класса или метода.
@see <ссылка>: Ссылка на другой класс, метод или ресурс.
4. Правильное применение комментариев
Правильное использование комментариев улучшает читаемость, поддерживаемость и качество кода.
Вот рекомендации по их применению:
4.1. Однострочные комментарии
Когда использовать:
Для кратких пояснений к переменным, строкам кода или логике.
Для временных заметок или TODO-комментариев.
Лучшие практики:
Пишите кратко и по делу (например, // Инициализация счетчика).
Избегайте очевидных комментариев (например, // Увеличиваем x на 1 для x++).
Размещайте комментарий на той же строке или над ней, если он поясняет конкретную строку.
Пример:
int retries = 3; // Максимальное количество попыток подключения
4.2. Многострочные комментарии
Когда использовать:
Для описания сложной логики или алгоритмов.
Для временного исключения кода при отладке.
Для добавления заметок о контексте или ограничениях.
Лучшие практики:
Используйте для пояснений, которые не помещаются в одну строку.
Избегайте чрезмерного комментирования кода, который можно удалить.
Форматируйте комментарии для читаемости (например, выравнивайте строки).
Пример:
/* Алгоритм сортировки пузырьком.
Сравнивает соседние элементы и меняет их местами,
если они находятся в неправильном порядке. */
for (int i = 0; i < array.length - 1; i++) {
for (int j = 0; j < array.length - i - 1; j++) {
// ...
}
}
4.3. Javadoc-комментарии
Когда использовать:
Для документирования публичных и защищенных классов, методов и полей.
Для создания документации API, которая будет использоваться другими разработчиками.
Лучшие практики:
Пишите Javadoc для всех публичных элементов API.
Используйте теги (@param, @return) для описания параметров и возвращаемых значений.
Пишите краткие, но полные описания, избегая избыточной информации.
Обновляйте Javadoc при изменении кода.
Пример:
/**
* Проверяет, является ли число четным.
* @param number Число для проверки
* @return true, если число четное, иначе false
* @throws IllegalArgumentException если число отрицательное
*/
public boolean isEven(int number) {
if (number < 0) {
throw new IllegalArgumentException("Число не может быть отрицательным");
}
return number % 2 == 0;
}
4.4. Общие рекомендации
Самодокументирующийся код: Пишите код так, чтобы он был понятен без комментариев, используя описательные имена переменных и методов.
Избегайте избыточности: Не комментируйте очевидные вещи (например, // Присваиваем 5 для x = 5).
Обновляйте комментарии: Устаревшие комментарии могут ввести в заблуждение.
Используйте TODO и FIXME: Отмечайте незавершенные задачи или проблемы в коде (например, // TODO: Добавить обработку ошибок).
5. Назначение комментариев
Комментарии выполняют несколько ключевых функций:
5.1. Документация кода
Объясняют назначение классов, методов и сложных алгоритмов, делая код понятным для других разработчиков.
5.2. Улучшение читаемости
Поясняют логику, которая может быть неочевидной, особенно в сложных алгоритмах или низкоуровневых операциях.
5.3. Поддержка API
Javadoc-комментарии создают профессиональную документацию, которая используется в библиотеках и фреймворках.
5.4. Отладка и сопровождение
Позволяют временно исключать код или оставлять заметки для будущих изменений.
5.5. Командная работа
Унифицируют понимание кода в команде, особенно в больших или распределенных проектах.
#Java #для_новичков #beginner #java_syntax #commentaries
👍3
6. Комментарии и работа под капотом
6.1. Обработка компилятором
Игнорирование комментариев: Компилятор Java полностью игнорирует все комментарии (однострочные, многострочные и Javadoc) при создании байт-кода. Они не включаются в .class-файлы.
Javadoc-обработка: Javadoc-комментарии обрабатываются отдельным инструментом javadoc, который извлекает их из исходного кода и создает HTML-документацию. Эти комментарии также не попадают в байт-код.
Пример:
6.2. Память и производительность
Отсутствие влияния на память: Поскольку комментарии не включаются в байт-код, они не занимают память в Metaspace, куче или стеке во время выполнения программы.
Размер исходного кода: Комментарии увеличивают размер исходных .java-файлов, но это не влияет на скомпилированный код или производительность.
Javadoc и сборка: Генерация Javadoc-документации требует дополнительных ресурсов (памяти и процессорного времени) во время сборки проекта, но это происходит на этапе компиляции, а не выполнения.
6.3. Инструменты и Javadoc
Инструменты анализа: IDE (например, IntelliJ IDEA, Eclipse) используют Javadoc-комментарии для автодополнения, подсказок и генерации документации. Это улучшает разработку, но не влияет на выполнение.
Рефлексия: Комментарии не доступны через API рефлексии, так как они не включаются в байт-код. Однако Javadoc-теги могут быть использованы фреймворками (например, Spring) через предварительную обработку исходного кода.
6.4. Оптимизация и комментарии
Отсутствие накладных расходов: Поскольку комментарии не влияют на байт-код, они не создают дополнительных затрат на производительность во время выполнения.
Размер документации: Чрезмерное использование Javadoc-комментариев может увеличить размер сгенерированной документации, но это редко является проблемой.
Обфускация: Инструменты, такие как ProGuard, не затрагивают комментарии, так как они отсутствуют в байт-коде.
6.5. Ошибки, связанные с комментариями
Устаревшие комментарии: Неправильные или устаревшие комментарии могут ввести в заблуждение, особенно если код изменился, а комментарии — нет.
Ошибки в Javadoc: Неправильное использование тегов (например, @param для несуществующего параметра) может вызвать предупреждения при генерации документации.
Комментирование кода: Длительное оставление закомментированного кода может затруднить чтение и сопровождение. Лучше использовать системы контроля версий для хранения старого кода.
Пример устаревшего комментария:
7. Лучшие практики
Пишите самодокументирующийся код: Используйте описательные имена переменных и методов, чтобы минимизировать необходимость комментариев.
Избегайте очевидных комментариев: Не пишите комментарии, которые дублируют очевидную логику.
Обновляйте комментарии: Убедитесь, что комментарии соответствуют текущему состоянию кода.
Используйте Javadoc для публичного API: Документируйте все публичные классы, методы и поля с помощью Javadoc.
Форматируйте многострочные комментарии: Используйте выравнивание и перенос строк для улучшения читаемости.
Используйте TODO и FIXME: Отмечайте незавершенные задачи или проблемы.
Ограничьте комментирование кода: Вместо длительного хранения закомментированного кода используйте системы контроля версий (например, Git).
#Java #для_новичков #beginner #java_syntax #commentaries
6.1. Обработка компилятором
Игнорирование комментариев: Компилятор Java полностью игнорирует все комментарии (однострочные, многострочные и Javadoc) при создании байт-кода. Они не включаются в .class-файлы.
Javadoc-обработка: Javadoc-комментарии обрабатываются отдельным инструментом javadoc, который извлекает их из исходного кода и создает HTML-документацию. Эти комментарии также не попадают в байт-код.
Пример:
public class Example {
// Это не попадет в байт-код
/* Это тоже не попадет */
/**
* Это обрабатывается javadoc, но не включается в байт-код
*/
public void method() {}
}
6.2. Память и производительность
Отсутствие влияния на память: Поскольку комментарии не включаются в байт-код, они не занимают память в Metaspace, куче или стеке во время выполнения программы.
Размер исходного кода: Комментарии увеличивают размер исходных .java-файлов, но это не влияет на скомпилированный код или производительность.
Javadoc и сборка: Генерация Javadoc-документации требует дополнительных ресурсов (памяти и процессорного времени) во время сборки проекта, но это происходит на этапе компиляции, а не выполнения.
6.3. Инструменты и Javadoc
Инструменты анализа: IDE (например, IntelliJ IDEA, Eclipse) используют Javadoc-комментарии для автодополнения, подсказок и генерации документации. Это улучшает разработку, но не влияет на выполнение.
Рефлексия: Комментарии не доступны через API рефлексии, так как они не включаются в байт-код. Однако Javadoc-теги могут быть использованы фреймворками (например, Spring) через предварительную обработку исходного кода.
6.4. Оптимизация и комментарии
Отсутствие накладных расходов: Поскольку комментарии не влияют на байт-код, они не создают дополнительных затрат на производительность во время выполнения.
Размер документации: Чрезмерное использование Javadoc-комментариев может увеличить размер сгенерированной документации, но это редко является проблемой.
Обфускация: Инструменты, такие как ProGuard, не затрагивают комментарии, так как они отсутствуют в байт-коде.
6.5. Ошибки, связанные с комментариями
Устаревшие комментарии: Неправильные или устаревшие комментарии могут ввести в заблуждение, особенно если код изменился, а комментарии — нет.
Ошибки в Javadoc: Неправильное использование тегов (например, @param для несуществующего параметра) может вызвать предупреждения при генерации документации.
Комментирование кода: Длительное оставление закомментированного кода может затруднить чтение и сопровождение. Лучше использовать системы контроля версий для хранения старого кода.
Пример устаревшего комментария:
// Умножает число на 2
int multiplyByThree(int x) {
return x * 3; // Комментарий не соответствует коду
}
7. Лучшие практики
Пишите самодокументирующийся код: Используйте описательные имена переменных и методов, чтобы минимизировать необходимость комментариев.
// Хорошо: имя метода понятно без комментария
public double calculateTotalPrice(List<Item> items) {
return items.stream().mapToDouble(Item::getPrice).sum();
}
Избегайте очевидных комментариев: Не пишите комментарии, которые дублируют очевидную логику.
// Плохо: избыточный комментарий
x = x + 1; // Увеличиваем x на 1
Обновляйте комментарии: Убедитесь, что комментарии соответствуют текущему состоянию кода.
Используйте Javadoc для публичного API: Документируйте все публичные классы, методы и поля с помощью Javadoc.
Форматируйте многострочные комментарии: Используйте выравнивание и перенос строк для улучшения читаемости.
/*
* Этот метод выполняет сложный расчет.
* Он учитывает несколько факторов:
* - Входные данные
* - Контекст выполнения
*/
Используйте TODO и FIXME: Отмечайте незавершенные задачи или проблемы.
// TODO: Добавить обработку ошибок
// FIXME: Исправить баг с отрицательными значениями
Ограничьте комментирование кода: Вместо длительного хранения закомментированного кода используйте системы контроля версий (например, Git).
#Java #для_новичков #beginner #java_syntax #commentaries
🔥4👍2
Что выведет код?
#Tasks
public class Task140725 {
public static void main(String[] args) {
int a = 1 << 31;
int b = a >> 31;
int c = a >>> 31;
System.out.println(b + " " + c);
}
}
#Tasks
👍3
👍3
Что такое ForkJoinPool в Java? 🤓
Ответ:
ForkJoinPool — реализация ExecutorService для задач, которые можно разделить на подзадачи (разделяй и властвуй). Используется в Stream API для параллельных потоков.
Пример:
ForkJoinPool pool = ForkJoinPool.commonPool();
pool.submit(() -> System.out.println("Task in ForkJoinPool"));
Подходит для рекурсивных задач, таких как сортировка или обработка больших коллекций..
#собеседование
Ответ:
Пример:
ForkJoinPool pool = ForkJoinPool.commonPool();
pool.submit(() -> System.out.println("Task in ForkJoinPool"));
Подходит для рекурсивных задач, таких как сортировка или обработка больших коллекций..
#собеседование
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
А вы знали, что первый компьютерный "системный администратор" появился в 1960-х?
В 1960-х годах операторы мейнфреймов, таких как IBM System/360, начали называться системными администраторами. Они следили за работой компьютеров, что стало основой современной профессии сисадмина.
#facts
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
"Компьютеры должны учиться у человека, а не наоборот."
Лев Королев, советский математик, сказал это в 1980-х годах на лекции в МГУ, обсуждая развитие ИИ.
Биография
#Citation #Biography
Please open Telegram to view this post
VIEW IN TELEGRAM
Wikipedia
Королёв, Лев Николаевич
Лев Никола́евич Королёв (6 сентября 1926, Подольск — 5 января 2016, Москва) — советский и российский системный программист и математик, доктор технических наук (1967), заведующий кафедрой автоматизации систем вычислительных комплексов факультета вычислительной…
👍3
Подробная инструкция по установке Maven на Windows
Зачем устанавливать Maven
Установка Maven на систему необходима по следующим причинам:
Автоматизация сборки: Maven предоставляет стандартизированный жизненный цикл для компиляции, тестирования, упаковки и развертывания проектов.
Управление зависимостями: Maven автоматически загружает библиотеки из репозиториев (например, Maven Central), упрощая управление зависимостями.
CI/CD-интеграция: CI/CD-системы (Jenkins, GitLab CI, GitHub Actions) требуют системной установки Maven для выполнения сборок.
Независимость от IDE: Системный Maven позволяет запускать команды (mvn clean install) из терминала, что полезно для серверов или скриптов.
Контроль версий: Системная установка позволяет использовать конкретную версию Maven, обеспечивая воспроизводимость сборок.
Кастомизация: Системный Maven дает полный контроль над настройками через settings.xml и поддерживает расширения.
В памяти Maven работает как Java-приложение, загружая модель POM, зависимости и плагины в оперативную память. Установка на систему минимизирует зависимость от IDE, но требует управления версиями и конфигурацией.
Установка Maven на Windows
Требования
JDK: Установленный Java Development Kit (версия 8 или выше, рекомендуется OpenJDK или Oracle JDK).
Интернет: Для загрузки Maven и зависимостей.
Права администратора: Для настройки переменных окружения (опционально).
Шаги установки
Проверка JDK:
Убедитесь, что JDK установлен:
Скачивание Maven:
Перейдите на официальный сайт Apache Maven.
Скачайте бинарный архив, например, apache-maven-3.9.9-bin.zip.
Распакуйте архив в удобную директорию, например, C:\Program Files\Apache\maven-3.9.9.
Настройка переменных окружения:
Откройте "Свойства системы".
Нажмите Win + R, введите sysdm.cpl и нажмите Enter.
Перейдите на вкладку "Дополнительно" → "Переменные среды".
Создайте переменную M2_HOME:
В разделе "Системные переменные" нажмите "Создать".
Имя: M2_HOME, Значение: C:\Program Files\Apache\maven-3.9.9.
Добавьте Maven в PATH:
Найдите переменную Path в "Системных переменных" и добавьте %M2_HOME%\bin.
Проверьте переменную JAVA_HOME:
Убедитесь, что JAVA_HOME указывает на директорию JDK, например, C:\Program Files\Java\jdk-11.0.16.
Если отсутствует, создайте: Имя: JAVA_HOME, Значение: C:\Program Files\Java\jdk-11.0.16.
Проверка установки:
Откройте командную строку (Win + R → cmd).
Выполните:
Вывод должен показать версию Maven, Java и другие детали:
Настройка локального репозитория:
По умолчанию Maven использует ~/.m2/repository (например, C:\Users\<username>\.m2\repository) для кэширования зависимостей.
Опционально настройте settings.xml в C:\Users\<username>\.m2 для указания зеркал, прокси или профилей:
Нюансы:
Убедитесь, что JAVA_HOME указывает на JDK, а не JRE, иначе Maven не сможет компилировать код.
Если mvn не распознается, проверьте правильность PATH.
Используйте Maven Wrapper (mvnw) в проектах для независимости от системной версии.
#Java #middle #Maven #Maven_install
Зачем устанавливать Maven
Установка Maven на систему необходима по следующим причинам:
Автоматизация сборки: Maven предоставляет стандартизированный жизненный цикл для компиляции, тестирования, упаковки и развертывания проектов.
Управление зависимостями: Maven автоматически загружает библиотеки из репозиториев (например, Maven Central), упрощая управление зависимостями.
CI/CD-интеграция: CI/CD-системы (Jenkins, GitLab CI, GitHub Actions) требуют системной установки Maven для выполнения сборок.
Независимость от IDE: Системный Maven позволяет запускать команды (mvn clean install) из терминала, что полезно для серверов или скриптов.
Контроль версий: Системная установка позволяет использовать конкретную версию Maven, обеспечивая воспроизводимость сборок.
Кастомизация: Системный Maven дает полный контроль над настройками через settings.xml и поддерживает расширения.
В памяти Maven работает как Java-приложение, загружая модель POM, зависимости и плагины в оперативную память. Установка на систему минимизирует зависимость от IDE, но требует управления версиями и конфигурацией.
Установка Maven на Windows
Требования
JDK: Установленный Java Development Kit (версия 8 или выше, рекомендуется OpenJDK или Oracle JDK).
Интернет: Для загрузки Maven и зависимостей.
Права администратора: Для настройки переменных окружения (опционально).
Шаги установки
Проверка JDK:
Убедитесь, что JDK установлен:
java -version
Вывод должен показать версию Java (например, openjdk 11.0.16). Если JDK отсутствует, скачайте и установите с Adoptium или Oracle.
Скачивание Maven:
Перейдите на официальный сайт Apache Maven.
Скачайте бинарный архив, например, apache-maven-3.9.9-bin.zip.
Распакуйте архив в удобную директорию, например, C:\Program Files\Apache\maven-3.9.9.
Настройка переменных окружения:
Откройте "Свойства системы".
Нажмите Win + R, введите sysdm.cpl и нажмите Enter.
Перейдите на вкладку "Дополнительно" → "Переменные среды".
Создайте переменную M2_HOME:
В разделе "Системные переменные" нажмите "Создать".
Имя: M2_HOME, Значение: C:\Program Files\Apache\maven-3.9.9.
Добавьте Maven в PATH:
Найдите переменную Path в "Системных переменных" и добавьте %M2_HOME%\bin.
Проверьте переменную JAVA_HOME:
Убедитесь, что JAVA_HOME указывает на директорию JDK, например, C:\Program Files\Java\jdk-11.0.16.
Если отсутствует, создайте: Имя: JAVA_HOME, Значение: C:\Program Files\Java\jdk-11.0.16.
Проверка установки:
Откройте командную строку (Win + R → cmd).
Выполните:
mvn -version
Вывод должен показать версию Maven, Java и другие детали:
Apache Maven 3.8.6
Maven home: C:\Program Files\Apache\maven-3.8.6
Java version: 11.0.16, vendor: Adoptium
Настройка локального репозитория:
По умолчанию Maven использует ~/.m2/repository (например, C:\Users\<username>\.m2\repository) для кэширования зависимостей.
Опционально настройте settings.xml в C:\Users\<username>\.m2 для указания зеркал, прокси или профилей:
<settings>
<localRepository>C:/custom/m2/repository</localRepository>
</settings>
В памяти: При запуске Maven загружает mvn.bat (или mvn.cmd), который вызывает Java-процесс. JVM загружает Maven Core, плагины и зависимости в оперативную память. Локальный репозиторий минимизирует сетевые запросы, но может занимать значительное место на диске.
Нюансы:
Убедитесь, что JAVA_HOME указывает на JDK, а не JRE, иначе Maven не сможет компилировать код.
Если mvn не распознается, проверьте правильность PATH.
Используйте Maven Wrapper (mvnw) в проектах для независимости от системной версии.
#Java #middle #Maven #Maven_install
👍6
Что выведет код?
#Tasks
public class Task150725 {
public static void main(String[] args) {
new Child150725();
}
}
class Parent150725 {
Parent150725() {
System.out.println("Parent: " + getClass().getSimpleName());
}
}
class Child150725 extends Parent150725 {
Child150725() {
System.out.println("Child: " + getClass().getSimpleName());
}
}
#Tasks
👍2
Варианты ответа:
Anonymous Quiz
39%
Parent: Child150725 Child: Child150725
39%
Parent: Parent150725 Child: Child150725
17%
Ошибка компиляции
6%
Parent: Parent150725
👍3
Что такое Path и Files в Java? 🤓
Ответ:
Path и Files (пакет java.nio.file, Java 7+) упрощают работу с файлами и директориями. Path представляет путь к файлу, а Files предоставляет утилитные методы.
Пример:
Path path = Paths.get("file.txt");
Files.write(path, "Hello".getBytes());
String content = Files.readString(path); // Hello
Более современная и удобная альтернатива File.
#собеседование
Ответ:
Пример:
Path path = Paths.get("file.txt");
Files.write(path, "Hello".getBytes());
String content = Files.readString(path); // Hello
Более современная и удобная альтернатива File.
#собеседование
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
А вы знали, что термин "бэкслэш" был придуман для клавиатур в 1961 году?
Символ "/" (бэкслэш) был введён Бобом Бемером для языка ALGOL и клавиатур IBM. Он стал ключевым для путей в файловых системах, таких как Windows (например, C:).
#facts
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
"Шахматы на компьютере — это проверка интеллекта машины."
Владимир Арлазаров, создатель шахматной программы "Каисса", сказал это в 1974 году на чемпионате по компьютерным шахматам.
Биография
#Citation #Biography
Please open Telegram to view this post
VIEW IN TELEGRAM
Wikipedia
Арлазаров, Владимир Львович
Владимир Львович Арлазаров (род. 19 октября 1939, Москва) — советский и российский учёный, доктор технических наук, профессор, член-корреспондент Российской академии наук . В. Л. Арлазаров — учёный в области системного программирования, теории игр, искусственного…
👍3🗿1
Ключевые слова и зарезервированные слова в Java
1. Что такое ключевые слова и зарезервированные слова в Java?
Ключевые слова (keywords) в Java — это зарезервированные идентификаторы, которые имеют особое значение для компилятора и определяют синтаксические конструкции языка. Они используются для объявления классов, методов, переменных, управления потоком программы и других аспектов. Зарезервированные слова включают ключевые слова и несколько дополнительных идентификаторов, которые зарезервированы для будущего использования, но в настоящее время не имеют активной роли.
Зачем нужны ключевые слова?
Определение структуры программы: Ключевые слова задают синтаксис для классов, методов, циклов, условий и других конструкций.
Управление поведением: Они определяют, как JVM интерпретирует и выполняет код (например, synchronized для многопоточной обработки).
Читаемость и стандартизация: Ключевые слова унифицируют синтаксис, делая код понятным для всех разработчиков.
Безопасность типов: Некоторые ключевые слова (например, instanceof) обеспечивают безопасную работу с типами данных.
2. Синтаксис ключевых слов
Ключевые слова в Java — это фиксированные строки, которые нельзя использовать в качестве идентификаторов (имен переменных, классов и т.д.). Они пишутся в нижнем регистре и имеют строгий синтаксис, зависящий от контекста их использования.
Общий синтаксис:
Ключевые слова используются в определенных позициях в коде, в зависимости от их назначения.
Например:
Список ключевых слов
Java (на момент Java 21) имеет 50 ключевых слов и 3 зарезервированных слова.
Вот полный список, разделенный по категориям:
Модификаторы доступа
public, protected, private
Модификаторы класса, метода и поля
abstract, final, static, synchronized, native, strictfp, transient, volatile
Управление потоком
if, else, switch, case, default, break, continue, return, for, while, do
Объявление типов
class, interface, enum, record (с Java 14), extends, implements
Управление исключениями
try, catch, finally, throw, throws
Пакеты и модули
package, import, module (с Java 9), exports, opens, requires, uses, provides, to, with (связаны с модульной системой)
Типы данных и примитивы
boolean, byte, char, short, int, long, float, double, void
Прочее
new, this, super, instanceof, assert
Зарезервированные слова (не используются, но зарезервированы)
const и goto: Зарезервированы для совместимости с C/C++, но не используются в Java.
_ (подчеркивание): С Java 9 зарезервировано и не может использоваться как идентификатор.
3. Типы ключевых слов и их особенности
3.1. Модификаторы доступа
Описание:
Управляют видимостью классов, полей, методов и конструкторов.
Примеры:
public: Элемент доступен из любого места.
private Элемент доступен только внутри класса.
protected Элемент доступен в пакете и подклассах.
Пример:
3.2. Модификаторы класса, метода и поля
Описание:
Определяют поведение или свойства элементов.
Примеры:
static Указывает, что элемент принадлежит классу, а не объекту.
final Запрещает изменение (переопределение или наследование).
abstract Указывает, что класс или метод не имеет реализации.
Пример:
3.3. Управление потоком
Описание:
Управляют выполнением программы (циклы, условия, прерывания).
Примеры:
if, else Условное выполнение.
for, while, do Циклы.
break, continue Прерывание или пропуск итераций.
Пример:
#Java #для_новичков #beginner #java_syntax #keywords
1. Что такое ключевые слова и зарезервированные слова в Java?
Ключевые слова (keywords) в Java — это зарезервированные идентификаторы, которые имеют особое значение для компилятора и определяют синтаксические конструкции языка. Они используются для объявления классов, методов, переменных, управления потоком программы и других аспектов. Зарезервированные слова включают ключевые слова и несколько дополнительных идентификаторов, которые зарезервированы для будущего использования, но в настоящее время не имеют активной роли.
Зачем нужны ключевые слова?
Определение структуры программы: Ключевые слова задают синтаксис для классов, методов, циклов, условий и других конструкций.
Управление поведением: Они определяют, как JVM интерпретирует и выполняет код (например, synchronized для многопоточной обработки).
Читаемость и стандартизация: Ключевые слова унифицируют синтаксис, делая код понятным для всех разработчиков.
Безопасность типов: Некоторые ключевые слова (например, instanceof) обеспечивают безопасную работу с типами данных.
2. Синтаксис ключевых слов
Ключевые слова в Java — это фиксированные строки, которые нельзя использовать в качестве идентификаторов (имен переменных, классов и т.д.). Они пишутся в нижнем регистре и имеют строгий синтаксис, зависящий от контекста их использования.
Общий синтаксис:
Ключевые слова используются в определенных позициях в коде, в зависимости от их назначения.
Например:
public class MyClass { // Ключевое слово public и class
void myMethod() { // Ключевое слово void
if (true) { // Ключевое слово if
return; // Ключевое слово return
}
}
}
Список ключевых слов
Java (на момент Java 21) имеет 50 ключевых слов и 3 зарезервированных слова.
Вот полный список, разделенный по категориям:
Модификаторы доступа
public, protected, private
Модификаторы класса, метода и поля
abstract, final, static, synchronized, native, strictfp, transient, volatile
Управление потоком
if, else, switch, case, default, break, continue, return, for, while, do
Объявление типов
class, interface, enum, record (с Java 14), extends, implements
Управление исключениями
try, catch, finally, throw, throws
Пакеты и модули
package, import, module (с Java 9), exports, opens, requires, uses, provides, to, with (связаны с модульной системой)
Типы данных и примитивы
boolean, byte, char, short, int, long, float, double, void
Прочее
new, this, super, instanceof, assert
Зарезервированные слова (не используются, но зарезервированы)
const и goto: Зарезервированы для совместимости с C/C++, но не используются в Java.
_ (подчеркивание): С Java 9 зарезервировано и не может использоваться как идентификатор.
3. Типы ключевых слов и их особенности
3.1. Модификаторы доступа
Описание:
Управляют видимостью классов, полей, методов и конструкторов.
Примеры:
public: Элемент доступен из любого места.
private Элемент доступен только внутри класса.
protected Элемент доступен в пакете и подклассах.
Пример:
public class Example {
private int value;
protected void method() {}
}
3.2. Модификаторы класса, метода и поля
Описание:
Определяют поведение или свойства элементов.
Примеры:
static Указывает, что элемент принадлежит классу, а не объекту.
final Запрещает изменение (переопределение или наследование).
abstract Указывает, что класс или метод не имеет реализации.
Пример:
public abstract class AbstractClass {
public static final int CONSTANT = 10;
abstract void doSomething();
}
3.3. Управление потоком
Описание:
Управляют выполнением программы (циклы, условия, прерывания).
Примеры:
if, else Условное выполнение.
for, while, do Циклы.
break, continue Прерывание или пропуск итераций.
Пример:
for (int i = 0; i < 5; i++) {
if (i == 3) break; // Прерывает цикл
}
#Java #для_новичков #beginner #java_syntax #keywords
👍4
3.4. Объявление типов
Описание:
Определяют пользовательские типы и их связи.
Примеры:
class Объявляет класс.
interface Объявляет интерфейс.
extends, implements Указывают наследование и реализацию.
Пример:
3.5. Управление исключениями
Описание:
Обеспечивают обработку ошибок.
Примеры:
try, catch, finally Обрабатывают исключения.
throw, throws Генерируют или объявляют исключения.
Пример:
3.6. Пакеты и модули
Описание:
Управляют структурой и модульностью кода.
Примеры:
package, import Определяют и импортируют пакеты.
module, exports (с Java 9) Управляют модульной системой.
Пример:
3.7. Типы данных и примитивы
Описание:
Определяют типы переменных и возвращаемых значений.
Примеры:
int, double, boolean Примитивные типы.
void Указывает отсутствие возвращаемого значения.
Пример:
3.8. Прочее
Описание:
Специальные операции и управление объектами.
Примеры:
new Создает объект.
this Ссылается на текущий объект.
instanceof Проверяет тип объекта.
Пример:
4. Ключевые слова и работа под капотом
4.1. Обработка компилятором
Синтаксический анализ: Компилятор распознает ключевые слова как токены во время парсинга исходного кода. Каждое ключевое слово соответствует определенной конструкции в байт-коде.
Проверка корректности: Компилятор проверяет правильность использования ключевых слов (например, private не может применяться к локальным переменным).
Байт-код: Ключевые слова преобразуются в инструкции байт-кода.
Например:
new преобразуется в инструкцию new для создания объекта.
if преобразуется в условные переходы (if_icmp).
Пример:
Байт-код (упрощенно):
4.2. Память и ключевые слова
Metaspace: Метаданные классов, включая информацию о модификаторах (public, static, final), хранятся в Metaspace. Ключевые слова сами по себе не занимают память в куче или стеке.
Объекты в куче: Ключевые слова, такие как new, создают объекты в куче. Например, new String("Hello") выделяет память для объекта String.
Локальные переменные: Ключевые слова, такие как int или boolean, определяют типы локальных переменных, которые хранятся в стеке вызовов.
Пример:
4.3. Оптимизация в JVM
JIT-компиляция: JIT-компилятор оптимизирует инструкции, связанные с ключевыми словами, встраивая их в машинный код. Например, if может быть оптимизирован в прямой переход.
Кэширование проверок: Проверки доступа (public, private) кэшируются JIT-компилятором, минимизируя накладные расходы.
Ключевые слова и производительность: Ключевые слова, такие как final или static, могут улучшать производительность, позволяя JVM выполнять оптимизации (например, инлайн-функции или статическое связывание).
4.4. Ошибки в памяти
Утечки памяти: Неправильное использование ключевых слов, таких как new, может привести к созданию объектов, которые не собираются сборщиком мусора.
Переполнение стека: Глубокая рекурсия с использованием return или циклов (for, while) может вызвать StackOverflowError.
Некорректное использование volatile: Неправильное применение volatile может нарушить видимость изменений в многопоточных приложениях.
Пример утечки памяти:
4.5. Рефлексия и ключевые слова
Ключевые слова, такие как public, private и final, доступны через API рефлексии (например, Field.getModifiers). Это позволяет фреймворкам, таким как Spring, анализировать структуру классов.
Неправильное использование модификаторов через рефлексию (например, setAccessible(true)) может нарушить инкапсуляцию.
#Java #для_новичков #beginner #java_syntax #keywords
Описание:
Определяют пользовательские типы и их связи.
Примеры:
class Объявляет класс.
interface Объявляет интерфейс.
extends, implements Указывают наследование и реализацию.
Пример:
public class MyClass implements MyInterface {
// Код
}
3.5. Управление исключениями
Описание:
Обеспечивают обработку ошибок.
Примеры:
try, catch, finally Обрабатывают исключения.
throw, throws Генерируют или объявляют исключения.
Пример:
try {
throw new Exception("Ошибка");
} catch (Exception e) {
// Обработка
}
3.6. Пакеты и модули
Описание:
Управляют структурой и модульностью кода.
Примеры:
package, import Определяют и импортируют пакеты.
module, exports (с Java 9) Управляют модульной системой.
Пример:
package com.example;
import java.util.List;
3.7. Типы данных и примитивы
Описание:
Определяют типы переменных и возвращаемых значений.
Примеры:
int, double, boolean Примитивные типы.
void Указывает отсутствие возвращаемого значения.
Пример:
int x = 10;
void doNothing() {}
3.8. Прочее
Описание:
Специальные операции и управление объектами.
Примеры:
new Создает объект.
this Ссылается на текущий объект.
instanceof Проверяет тип объекта.
Пример:
Object obj = new String("Hello");
if (obj instanceof String) {
// Проверка типа
}
4. Ключевые слова и работа под капотом
4.1. Обработка компилятором
Синтаксический анализ: Компилятор распознает ключевые слова как токены во время парсинга исходного кода. Каждое ключевое слово соответствует определенной конструкции в байт-коде.
Проверка корректности: Компилятор проверяет правильность использования ключевых слов (например, private не может применяться к локальным переменным).
Байт-код: Ключевые слова преобразуются в инструкции байт-кода.
Например:
new преобразуется в инструкцию new для создания объекта.
if преобразуется в условные переходы (if_icmp).
Пример:
if (x > 0) {
return x;
}
Байт-код (упрощенно):
iload x
ifgt label
ireturn
label: ireturn
4.2. Память и ключевые слова
Metaspace: Метаданные классов, включая информацию о модификаторах (public, static, final), хранятся в Metaspace. Ключевые слова сами по себе не занимают память в куче или стеке.
Объекты в куче: Ключевые слова, такие как new, создают объекты в куче. Например, new String("Hello") выделяет память для объекта String.
Локальные переменные: Ключевые слова, такие как int или boolean, определяют типы локальных переменных, которые хранятся в стеке вызовов.
Пример:
public class Example {
private int value = 10; // value хранится в куче
public void method() {
int local = 20; // local хранится в стеке
}
}
4.3. Оптимизация в JVM
JIT-компиляция: JIT-компилятор оптимизирует инструкции, связанные с ключевыми словами, встраивая их в машинный код. Например, if может быть оптимизирован в прямой переход.
Кэширование проверок: Проверки доступа (public, private) кэшируются JIT-компилятором, минимизируя накладные расходы.
Ключевые слова и производительность: Ключевые слова, такие как final или static, могут улучшать производительность, позволяя JVM выполнять оптимизации (например, инлайн-функции или статическое связывание).
4.4. Ошибки в памяти
Утечки памяти: Неправильное использование ключевых слов, таких как new, может привести к созданию объектов, которые не собираются сборщиком мусора.
Переполнение стека: Глубокая рекурсия с использованием return или циклов (for, while) может вызвать StackOverflowError.
Некорректное использование volatile: Неправильное применение volatile может нарушить видимость изменений в многопоточных приложениях.
Пример утечки памяти:
List<Object> list = new ArrayList<>();
while (true) {
list.add(new Object()); // Создает объекты без освобождения
}
4.5. Рефлексия и ключевые слова
Ключевые слова, такие как public, private и final, доступны через API рефлексии (например, Field.getModifiers). Это позволяет фреймворкам, таким как Spring, анализировать структуру классов.
Неправильное использование модификаторов через рефлексию (например, setAccessible(true)) может нарушить инкапсуляцию.
#Java #для_новичков #beginner #java_syntax #keywords
👍3