Делаем свою простейшую систему сборки для Java
Довелось мне обучать одного знакомого, желающего войти в ИТ (привет, Саша!). Человек он упорный, прошел разные курсы, стажировки, упорно продолжает идти вперед и уже вполне тянет на уровень джуна и решает прикладные задачи. Но иногда внезапно задает такие вопросы, из которых я понимаю, что у него огромные дыры в базовых знаниях и представлениях. На курсах этому, видимо, не учат.
Один из последних вопросов был про устройство сборки, непонимание того как исходный код собирается в исполняемый и запускается. Начинающим обычно говорят в духе «вот создаешь Gradle‑проект, в IDE жмешь кнопочку запуска и все работает». Но как только возникает необходимость что‑то в этом простом процессе усложнить, или понять — начинаются проблемы.
Gradle/Maven при этом представляются таким черным ящиком, в котором есть кнопка сборки и запуска, а внутри — магия, превращающая исходный код в запущенную программу.
В этой статье я пробегусь по основам того, как в Java работает компиляция, а также покажу, как по шагам прийти от компиляции отдельных файлов вручную к идее необходимости системы сборки, и как написать свою простенькую систему. Ведь лучший способ понять, как что‑то устроено внутри — сделать это самому.
Читать статью
Довелось мне обучать одного знакомого, желающего войти в ИТ (привет, Саша!). Человек он упорный, прошел разные курсы, стажировки, упорно продолжает идти вперед и уже вполне тянет на уровень джуна и решает прикладные задачи. Но иногда внезапно задает такие вопросы, из которых я понимаю, что у него огромные дыры в базовых знаниях и представлениях. На курсах этому, видимо, не учат.
Один из последних вопросов был про устройство сборки, непонимание того как исходный код собирается в исполняемый и запускается. Начинающим обычно говорят в духе «вот создаешь Gradle‑проект, в IDE жмешь кнопочку запуска и все работает». Но как только возникает необходимость что‑то в этом простом процессе усложнить, или понять — начинаются проблемы.
Gradle/Maven при этом представляются таким черным ящиком, в котором есть кнопка сборки и запуска, а внутри — магия, превращающая исходный код в запущенную программу.
В этой статье я пробегусь по основам того, как в Java работает компиляция, а также покажу, как по шагам прийти от компиляции отдельных файлов вручную к идее необходимости системы сборки, и как написать свою простенькую систему. Ведь лучший способ понять, как что‑то устроено внутри — сделать это самому.
Читать статью
Teletype
Делаем свою простейшую систему сборки для Java
Довелось мне обучать одного знакомого, желающего войти в ИТ (привет, Саша!). Человек он упорный, прошел разные курсы, стажировки, упорно...
👍13🔥1
Вышла Java 21
Вышла общедоступная версия Java 21. В этот релиз попало около 2500 закрытых задач и 15 JEP'ов. Release Notes можно посмотреть здесь. Изменения API – здесь.
Java 21 является LTS-релизом, а значит у него будут выходить обновления как минимум 5 лет с момента выхода.
Читать статью
Вышла общедоступная версия Java 21. В этот релиз попало около 2500 закрытых задач и 15 JEP'ов. Release Notes можно посмотреть здесь. Изменения API – здесь.
Java 21 является LTS-релизом, а значит у него будут выходить обновления как минимум 5 лет с момента выхода.
Читать статью
Teletype
Вышла Java 21
Вышла общедоступная версия Java 21. В этот релиз попало около 2500 закрытых задач и 15 JEP\'ов. Release Notes можно посмотреть здесь...
👍9🔥3
Как создать потокобезопасный счетчик в Java
Из данной статьи вы узнаете, как на примере простого счетчика писать потокобезопасные программы. В начале автор рассказывает, почему обычный счетчик небезопасен для нескольких потоков. Затем применяет разные техники, повышая его потокобезопасность: synchronization, locks, Unsafe, VarHandle и AtomicInteger.
Читать статью
Из данной статьи вы узнаете, как на примере простого счетчика писать потокобезопасные программы. В начале автор рассказывает, почему обычный счетчик небезопасен для нескольких потоков. Затем применяет разные техники, повышая его потокобезопасность: synchronization, locks, Unsafe, VarHandle и AtomicInteger.
Читать статью
👍4
Журнал «Код» — это база для начинающих программистов. Отвечаем на самые простые вопросы и делимся мудростью.
Подписаться: @thecodemedia
Реклама. ООО "ЯНДЕКС". ИНН 7736207543. erid: 2RanymNEkMN
Подписаться: @thecodemedia
Реклама. ООО "ЯНДЕКС". ИНН 7736207543. erid: 2RanymNEkMN
👍2
23 шаблона проектирования для 99% разработчиков на Java
В этом исчерпывающем руководстве мы изучим все важные шаблоны ООП для написания кода.
Шаблоны проектирования — это испытанный способ решения проблемы в заданном контексте. Они скорее открыты, нежели придуманы, что очевидно и из применения слова «шаблон». Используя шаблон проектирования, вы получаете знания всех сообществ для безопасного решения этой проблемы.
Иногда требуется небольшая доработка, и при корректном применении шаблонов идеальное решение находится. Объектно-ориентированная разработка часто сопряжена с многочисленными задачами, например созданием объектов, структурированием кода, реализацией поведений на основе различных контекстов.
Читать статью
В этом исчерпывающем руководстве мы изучим все важные шаблоны ООП для написания кода.
Шаблоны проектирования — это испытанный способ решения проблемы в заданном контексте. Они скорее открыты, нежели придуманы, что очевидно и из применения слова «шаблон». Используя шаблон проектирования, вы получаете знания всех сообществ для безопасного решения этой проблемы.
Иногда требуется небольшая доработка, и при корректном применении шаблонов идеальное решение находится. Объектно-ориентированная разработка часто сопряжена с многочисленными задачами, например созданием объектов, структурированием кода, реализацией поведений на основе различных контекстов.
Читать статью
Teletype
23 шаблона проектирования для 99% разработчиков на Java
В этом исчерпывающем руководстве мы изучим все важные шаблоны ООП для написания кода.
👍8🔥5❤1
OOM: direct memory при работе с сетью TCP/IP через NIO в Java
Привет, меня зовут Денис Агапитов, я руководитель группы Platform Core компании Bercut. Работаю в компании без малого 20 лет, из них 18 пишу на Java.
Сегодня я расскажу об опыте увеличения производительности сетевого стэка и проблемах, с которыми можно столкнуться при использовании NIO в Java.
Эта статья основана на реальной практике борьбы с "OutOfMemory: direct memory".
Читать статью
Привет, меня зовут Денис Агапитов, я руководитель группы Platform Core компании Bercut. Работаю в компании без малого 20 лет, из них 18 пишу на Java.
Сегодня я расскажу об опыте увеличения производительности сетевого стэка и проблемах, с которыми можно столкнуться при использовании NIO в Java.
Эта статья основана на реальной практике борьбы с "OutOfMemory: direct memory".
Читать статью
Teletype
OOM: direct memory при работе с сетью TCP/IP через NIO в Java
Привет, меня зовут Денис Агапитов, я руководитель группы Platform Core компании Bercut. Работаю в компании без малого 20 лет, из них...
👍7
Особое мнение: смотрим на нагрузочные тесты как на функциональные
Что делать, если у команды появилась потребность регулярно оценивать производительность приложения и в динамике сравнивать быстродействие с прошлыми прогонами, а внедрять для этого решение enterprise-уровня - это как из пушки по воробьям? Мы решили пойти немного неочевидным, но продуктивным путём, воспользовавшись опытом реализации функциональных тестов и их интеграции в систему CI/CD, ведь, в сущности, почему нужно обязательно смотреть на тестирование производительности, как на что-то особенное? Что из этого получилось, и с какими проблемами при этом пока ещё приходится мириться - читайте в статье.
Читать статью
Что делать, если у команды появилась потребность регулярно оценивать производительность приложения и в динамике сравнивать быстродействие с прошлыми прогонами, а внедрять для этого решение enterprise-уровня - это как из пушки по воробьям? Мы решили пойти немного неочевидным, но продуктивным путём, воспользовавшись опытом реализации функциональных тестов и их интеграции в систему CI/CD, ведь, в сущности, почему нужно обязательно смотреть на тестирование производительности, как на что-то особенное? Что из этого получилось, и с какими проблемами при этом пока ещё приходится мириться - читайте в статье.
Читать статью
Telegraph
Особое мнение: смотрим на нагрузочные тесты как на функциональные
Всем привет! В команде Мир Plat.Form я занимаюсь системами сертификации эмиссии – наш отдел разрабатывает программные продукты для внутренних и внешних пользователей, автоматизирующие сертификацию всего, что в конечном итоге превращается в «кредитку» в вашем…
👍6
Конфигурирование пула соедининений JDBC в Hibernate
Возможно, вы не знаете, но Hibernate поддерживает пул соединений JDBC. 😳
Предложенная сегодня статья расскажет о том, как сконфигурировать пул соединений JDBC в Hibernate-приложении, а также в нативном Hibernate-приложении.
Приятного чтения!
Читать статью
Возможно, вы не знаете, но Hibernate поддерживает пул соединений JDBC. 😳
Предложенная сегодня статья расскажет о том, как сконфигурировать пул соединений JDBC в Hibernate-приложении, а также в нативном Hibernate-приложении.
Приятного чтения!
Читать статью
👍5
Профессия «Java-разработчик». Курс с нуля до трудоустройства за 10 месяцев.
Освойте язык крупного бизнеса и финансовых технологий и научитесь разрабатывать веб-приложения на фреймворке Spring.
Всесторонне подготовим к собеседованиям и поиску первой работы. Предложим вашу кандидатуру в партнерские компании!
Начнем писать код на первом уроке. На курсах вас ждут сотни упражнений в тренажере, задачки-испытания для тех, кто любит посложнее, а также 5 проектов, в рамках которых вы напишете полноценные приложения для портфолио на GitHub
🎁 Пройдите 5 бесплатных уроков из профессии и получите скидку 10% на курс!
Готовы попробовать прямо сейчас? Оставьте заявку, и мы расскажем, как пройти бесплатные курсы профессии!
Освойте язык крупного бизнеса и финансовых технологий и научитесь разрабатывать веб-приложения на фреймворке Spring.
Всесторонне подготовим к собеседованиям и поиску первой работы. Предложим вашу кандидатуру в партнерские компании!
Начнем писать код на первом уроке. На курсах вас ждут сотни упражнений в тренажере, задачки-испытания для тех, кто любит посложнее, а также 5 проектов, в рамках которых вы напишете полноценные приложения для портфолио на GitHub
🎁 Пройдите 5 бесплатных уроков из профессии и получите скидку 10% на курс!
Готовы попробовать прямо сейчас? Оставьте заявку, и мы расскажем, как пройти бесплатные курсы профессии!
👍4
SDKMan! - менеджер управления версиями Java
Каждый Java-разработчик рано или поздно сталкивается с проблемой управления на своем компьютере несколькими версиями Java, когда для одного проекта требуется Java 8, для другого — Java 11, для третьего — Java 17.
Для упрощения процесса переключения между версиями существует менеджер версий SDKMan!
Подробности в статье.
Читать статью
Каждый Java-разработчик рано или поздно сталкивается с проблемой управления на своем компьютере несколькими версиями Java, когда для одного проекта требуется Java 8, для другого — Java 11, для третьего — Java 17.
Для упрощения процесса переключения между версиями существует менеджер версий SDKMan!
Подробности в статье.
Читать статью
👍8
Кэширование контекста Spring между запусками тестов: как ускорить процесс локального тестирования
Тестирование является важным элементом процесса разработки программного обеспечения. При этом работа с тестами может занимать достаточно большое количество времени в сравнении с самой разработкой, в связи с этим возникает необходимость оптимизировать этот процесс. В этой статье рассказывается про плагин Sprinter для IntelliJ IDEA, который может помочь значительно сократить время на локальный запуск тестов.
Читать статью
Тестирование является важным элементом процесса разработки программного обеспечения. При этом работа с тестами может занимать достаточно большое количество времени в сравнении с самой разработкой, в связи с этим возникает необходимость оптимизировать этот процесс. В этой статье рассказывается про плагин Sprinter для IntelliJ IDEA, который может помочь значительно сократить время на локальный запуск тестов.
Читать статью
Teletype
Кэширование контекста Spring между запусками тестов: как ускорить процесс локального тестирования
Тестирование является важным элементом процесса разработки программного обеспечения. При этом работа с тестами может занимать достаточно...
👍6
Трансляция: все о Java 21
Восьми часовая трансляция, посвященная выходу Java 21. Она также включает в себя интервью с главным архитектором Java Mark Reinhold, главным архитектором языка Java Brian Goetz. Трансляцию проводят не безызвестные нам Ana-Maria Mihalceanu, Billy Korando и Nicolai Parlog.
Восьми часовая трансляция, посвященная выходу Java 21. Она также включает в себя интервью с главным архитектором Java Mark Reinhold, главным архитектором языка Java Brian Goetz. Трансляцию проводят не безызвестные нам Ana-Maria Mihalceanu, Billy Korando и Nicolai Parlog.
YouTube
All About Java 21 - Launch Event
The Java 21 Launch Event was a live stream here on YouTube. We went over all features in 21, had Q&As with prominent guests, convened with the Java Panel at Oracle Cloud World, and visited JUGs for their opinion on new features.
~~ Chapters ~~
0:00 Countdown…
~~ Chapters ~~
0:00 Countdown…
👍8❤3🔥2
Ссылки на методы в Java
Лямбды в Java полезны во многих направлениях. Лямбда-выражения можно использовать для более простых задач, а лямбда-утверждения — для более сложных. Лямбды могут вызывать другие методы для текущего объекта (this) и объектов, которые находятся в области видимости, таких как текущий элемент итерации и конечная локальная переменная за пределами лямбды. Лямбду всегда можно упростить, поместив код в другой метод.
Читать статью
Лямбды в Java полезны во многих направлениях. Лямбда-выражения можно использовать для более простых задач, а лямбда-утверждения — для более сложных. Лямбды могут вызывать другие методы для текущего объекта (this) и объектов, которые находятся в области видимости, таких как текущий элемент итерации и конечная локальная переменная за пределами лямбды. Лямбду всегда можно упростить, поместив код в другой метод.
Читать статью
Telegraph
Ссылки на методы в Java
Лямбды — гибкие и анонимные фрагменты кода Лямбды в Java полезны во многих направлениях. Лямбда-выражения можно использовать для более простых задач, а лямбда-утверждения — для более сложных. Лямбды могут вызывать другие методы для текущего объекта (this)…
👍4
Профессия «Java-разработчик». Курс с нуля до трудоустройства за 10 месяцев.
Освойте язык крупного бизнеса и финансовых технологий и научитесь разрабатывать веб-приложения на фреймворке Spring.
Всесторонне подготовим к собеседованиям и поиску первой работы. Предложим вашу кандидатуру в партнерские компании!
Начнем писать код на первом уроке. На курсах вас ждут сотни упражнений в тренажере, задачки-испытания для тех, кто любит посложнее, а также 5 проектов, в рамках которых вы напишете полноценные приложения для портфолио на GitHub
🎁 Пройдите 5 бесплатных уроков из профессии и получите скидку 10% на курс!
Реклама. ООО "ХЕКСЛЕТ РУС". ИНН 7325174845. erid: LjN8KMSti
Освойте язык крупного бизнеса и финансовых технологий и научитесь разрабатывать веб-приложения на фреймворке Spring.
Всесторонне подготовим к собеседованиям и поиску первой работы. Предложим вашу кандидатуру в партнерские компании!
Начнем писать код на первом уроке. На курсах вас ждут сотни упражнений в тренажере, задачки-испытания для тех, кто любит посложнее, а также 5 проектов, в рамках которых вы напишете полноценные приложения для портфолио на GitHub
🎁 Пройдите 5 бесплатных уроков из профессии и получите скидку 10% на курс!
Реклама. ООО "ХЕКСЛЕТ РУС". ИНН 7325174845. erid: LjN8KMSti
👍3
Python и Java: кто заберет золото?
Журнал IEEE Spectrum, издаваемый Институтом инженеров электротехники и электроники, представил свой обзор популярности языков программирования 2023 год, где Java находится в тройке лидеров.
Читать статью
Журнал IEEE Spectrum, издаваемый Институтом инженеров электротехники и электроники, представил свой обзор популярности языков программирования 2023 год, где Java находится в тройке лидеров.
Читать статью
👍7
Не используйте в своем коде паттерн Singleton
Паттерн Singleton популярен среди новичков из-за простоты реализации и возможности глобальной обработки состояний. Но стоит ли его использовать? Из статьи вы узнаете про недостатки Singleton, а также про альтернативу, способную его заменить.
Читать статью
Паттерн Singleton популярен среди новичков из-за простоты реализации и возможности глобальной обработки состояний. Но стоит ли его использовать? Из статьи вы узнаете про недостатки Singleton, а также про альтернативу, способную его заменить.
Читать статью
👍6
Аннотации и рефлексия в Java
Аннотации и рефлексия являются ключевыми концепциями в Java, предоставляя разработчикам мощные инструменты для создания более гибких, адаптивных и понятных приложений. Аннотации предоставляют способ добавить метаданные к классам, методам и полям, что позволяет компилятору и другим инструментам анализировать код более глубоко. Рефлексия, с другой стороны, позволяет программам анализировать и модифицировать свой собственный состав и поведение во время выполнения.
Читать статью
Аннотации и рефлексия являются ключевыми концепциями в Java, предоставляя разработчикам мощные инструменты для создания более гибких, адаптивных и понятных приложений. Аннотации предоставляют способ добавить метаданные к классам, методам и полям, что позволяет компилятору и другим инструментам анализировать код более глубоко. Рефлексия, с другой стороны, позволяет программам анализировать и модифицировать свой собственный состав и поведение во время выполнения.
Читать статью
Teletype
Аннотации и рефлексия в Java
Аннотации и рефлексия являются ключевыми концепциями в Java, предоставляя разработчикам мощные инструменты для создания более гибких...
👍4
Внимание, Backend-разработчики и разработчики мобильных приложений на Java!
Присоединяйтесь к IT_ONE CAREER MEETUP, который состоится 26 октября в 18:00. IT_One – разработчик программного обеспечения для крупных игроков российского бизнеса и государственных органов. Компания реализует крупнейшие проекты цифровой трансформации страны. Спектр задач – от поддержки приложения до разработки концептуальной бизнес-архитектуры уровня корпорации.
IT_ONE CAREER MEETUP #2 - это 2 актуальные темы:
Работа с базами данных: эффективное проектирование и оптимизация запросов для backend-разработчиков
Спикер: Александр Черняев, Старший разработчик, IT_One
Узнаем:
— Зачем нужна оптимизация SQL-запросов;
—Организацию процесса мониторинга и оптимизации SQL-запросов разработчиками;
— Общие рекомендации по проектированию и оптимизация SQL-запросов.
Разработка мобильных приложений на Java: Android-разработка с использованием Java
Спикер: Сергей Мехоношин, Старший Android-разработчик, IT_One
Обсудим:
— Историю Java в Android-разработке;
— Java и 2017 год;
— Какое место занимает Java в мобильной разработке под Android сегодня?
Не упустите возможность узнать о последних тенденциях и лучших практиках в вашей области! Присоединяйтесь к нам и получите ценные знания от опытных специалистов. Ждем вас на IT_ONE CAREER MEETUP!
Дата и время: 26 октября в 18:00
Регистрация и подробности: https://clck.ru/362UBb
Реклама. ООО "Акселератор Возможностей". ИНН 9704005146
Присоединяйтесь к IT_ONE CAREER MEETUP, который состоится 26 октября в 18:00. IT_One – разработчик программного обеспечения для крупных игроков российского бизнеса и государственных органов. Компания реализует крупнейшие проекты цифровой трансформации страны. Спектр задач – от поддержки приложения до разработки концептуальной бизнес-архитектуры уровня корпорации.
IT_ONE CAREER MEETUP #2 - это 2 актуальные темы:
Работа с базами данных: эффективное проектирование и оптимизация запросов для backend-разработчиков
Спикер: Александр Черняев, Старший разработчик, IT_One
Узнаем:
— Зачем нужна оптимизация SQL-запросов;
—Организацию процесса мониторинга и оптимизации SQL-запросов разработчиками;
— Общие рекомендации по проектированию и оптимизация SQL-запросов.
Разработка мобильных приложений на Java: Android-разработка с использованием Java
Спикер: Сергей Мехоношин, Старший Android-разработчик, IT_One
Обсудим:
— Историю Java в Android-разработке;
— Java и 2017 год;
— Какое место занимает Java в мобильной разработке под Android сегодня?
Не упустите возможность узнать о последних тенденциях и лучших практиках в вашей области! Присоединяйтесь к нам и получите ценные знания от опытных специалистов. Ждем вас на IT_ONE CAREER MEETUP!
Дата и время: 26 октября в 18:00
Регистрация и подробности: https://clck.ru/362UBb
Реклама. ООО "Акселератор Возможностей". ИНН 9704005146
👍4
Плейлист с конференции Devoxx Belgium 2023
Плейлист со 189 видео с 20й конференции разработчиков Devoxx Belgium 2023, посвященной новейшим тенденциям в Java-разработке и другим ИТ-областям.
Java 21, Spring Boot 3, Kubernetes, GraalVM, AI и множество других тем докладов, в которых ведущие эксперты делятся информацией о последних разработках в этих направлениях.
Плейлист со 189 видео с 20й конференции разработчиков Devoxx Belgium 2023, посвященной новейшим тенденциям в Java-разработке и другим ИТ-областям.
Java 21, Spring Boot 3, Kubernetes, GraalVM, AI и множество других тем докладов, в которых ведущие эксперты делятся информацией о последних разработках в этих направлениях.
👍7🔥4
Java 21: новый подход к созданию строк
Java 21 предлагает много классных функциональностей, и одна из них — шаблоны строк (англ. String Templates). При том, что их целевое назначение не ограничивается только строковой интерполяцией, для Java-разработчиков они служат еще одним “правильным” способом конкатенации строк.
Что значит “правильный” способ? Поизучав байт-код, я узнала кое-что интересное и удивительное о различных техниках конкатенации и интерполяции строк в современном языке Java.
Читать статью
Java 21 предлагает много классных функциональностей, и одна из них — шаблоны строк (англ. String Templates). При том, что их целевое назначение не ограничивается только строковой интерполяцией, для Java-разработчиков они служат еще одним “правильным” способом конкатенации строк.
Что значит “правильный” способ? Поизучав байт-код, я узнала кое-что интересное и удивительное о различных техниках конкатенации и интерполяции строк в современном языке Java.
Читать статью
Teletype
Java 21: новый подход к созданию строк
Java 21 предлагает много классных функциональностей, и одна из них — шаблоны строк (англ. String Templates). При том, что их целевое...
👍6