Как стать автором
Поиск
Написать публикацию
Обновить
183.29

Java *

Объектно-ориентированный язык программирования

Сначала показывать
Порог рейтинга
Уровень сложности

«Для сообщества критически важно установить стандарты»: Марчин Москала о Kotlin

Время на прочтение6 мин
Количество просмотров7.3K


Пару лет назад было много блог-постов «смотрите, какой интересный язык Kotlin», где объяснялись основы. В 2019-м разжёвывать азы уже не требуется, зато теперь появляется публикация совсем другого формата. Марчин Москала, который уже не первый год учит людей этому языку, сейчас выпускает книгу «Effective Kotlin» — то есть уже не просто «как писать на Kotlin», а «как писать на Kotlin наилучшим образом».

А скоро Марчин приедет к нам на Mobius с докладом. Поэтому мы поспрашивали его и про новую книгу, и про доклад, и про обучение людей Kotlin, и о происходящем в индустрии вокруг этого языка. И про то, чем различаются слова «effective» и «efficient».
Читать дальше →

Переупаковка пакетов в Gradle

Время на прочтение4 мин
Количество просмотров3.9K

В своей статье хочу рассказать об очередной хитрости, которую можно довольно просто реализовать с помощью Gradle — переупаковке пакетов библиотек. Каждый, кто хоть чуть чуть работал с этой системой сборки, знает, что она автоматически умеет решать конфликты разных версий библиотек, а при желании можно повлиять на это, например зафорсить конкретную версию какой-нибудь библиотеки:


configurations.all {
    resolutionStrategy {
        force "org.ow2.asm:asm:7.2"
    }
}

К сожалению, это не всегда помогает решить проблему конфликта версий. Например, есть известная проблема, что некоторые устройства htc в прошивке уже имеют библиотеку gson и если ваша версия gson-а отличается от встроенной, то могут возникнуть проблемы, так как ClassLoader загрузит в память только один класс и в данном случае это будет системный.


Такая проблема также может возникнуть и при разработке библиотек. Если вы подключите в свой проект 2 библиотеки, использующие одну и ту же стороннюю библиотеку разных версий, например 1 и 2, то Gradle разрулит и возьмет самую новую версию, вторую. Но если в этой сторонней библиотеке нет обратной совместимости и вторая версия не может быть просто так использована вместо первой, то будут проблемы, которые наверняка будет очень сложно отследить по стектрейсу. Библиотека, ожидающая первую версию, получит классы второй и просто упадет.


Я столкнулся с конфликтом версий при написании градл плагина, в нем используется библиотека asm, которая и конфликтовала. После написания плагина, я проверил его работоспособность на тестовом проекте: все отлично, проверил на pet project-е, тоже все хорошо, но когда подключил к реальному рабочему проекту с кучей сторонних зависимостей, столкнулся с проблемой.



Решение проблемы под катом.

Читать дальше →

Обработка ошибок в Kotlin/Java: как правильно это делать?

Время на прочтение7 мин
Количество просмотров20K

Источник


Обработка ошибок в любой разработке играет важнейшую роль. В программе может пойти не так практически всё: пользователь введёт некорректные данные, или они могут прийти такими по http, или мы ошиблись при написании сериализации/десериализации и в процессе обработки программа падает с ошибкой. Да может банально закончится место на диске.


спойлер

¯_(ツ)_/¯, нет единого способа, и в каждой конкретной ситуации придётся подбирать наиболее подходящий вариант, но есть рекомендации, как это делать лучше.

Читать дальше →

Инструменты для запуска и разработки Java приложений, компиляция, выполнение на JVM

Время на прочтение9 мин
Количество просмотров69K

Ни для кого не секрет, что на данный момент Java — один из самых популярных языков программирования в мире. Дата официального выпуска Java — 23 мая 1995 года.

Эта статья посвящена основам основ: в ней изложены базовые особенности языка, которые придутся кстати начинающим “джавистам”, а опытные Java-разработчики смогут освежить свои знания.

* Статья подготовлена на основе доклада Евгения Фраймана — Java разработчика компании IntexSoft.
В статье присутствуют ссылки на внешние материалы
.




Читать дальше →

Тайм-киллер из детства

Время на прочтение5 мин
Количество просмотров38K


Уверен, многие из читающих иногда занимались на уроках бесполезной ерундой вместо того, чтобы слушать учителя. Я точно так делал, и одним из способов убить время были игры на бумаге. Особенно интересной мне казалась игра на превью (название которой мне до сих пор неизвестно), а причин тут две: она не требует второго человека и её можно завершить! Правда сделать это удавалось крайне редко. Долгое время мне было интересно, насколько простым может оказаться решение, и сейчас, спустя много лет, не составит труда найти его программным путём.

Читать дальше →

Школа Java-разработчиков в Нижнем Новгороде

Время на прочтение1 мин
Количество просмотров2.4K
Всем привет!

Мы открываем бесплатную школу для начинающих Java-разработчиков в Нижнем Новгороде. Если ты — студент последних курсов или выпускник вуза, обладаешь небольшим опытом в IT или в смежной профессии, живешь в Нижнем или его окрестностях — welcome!

image

Регистрация на обучение — вот здесь, заявки принимаем до 30 октября.

Подробности — под катом.
Читать дальше →

Понимание брокеров сообщений. Изучение механики обмена сообщениями посредством ActiveMQ и Kafka. Глава 2. ActiveMQ

Время на прочтение27 мин
Количество просмотров141K
Продолжение перевода небольшой книги:
«Understanding Message Brokers»,
автор: Jakub Korab, издательство: O'Reilly Media, Inc., дата издания: June 2017, ISBN: 9781492049296.

Предыдущая часть: Понимание брокеров сообщений. Изучение механики обмена сообщениями посредством ActiveMQ и Kafka. Глава 1. Введение
Читать дальше →

Ещё раз об ImmutableList в Java

Время на прочтение7 мин
Количество просмотров19K

В своей предыдущей статье "Рукоблудие вокруг ImmutableList в Java" я предложил вариант решения поднятой в статье "Неизменяемых коллекций в Java не будет – ни сейчас, ни когда-либо" проблемы отсутствия в Java неизменяемых списков.


Решение тогда было проработано только на уровне «есть такая идея», а реализация в коде была кривовата, поэтому и воспринято всё было несколько скептически. В данной статье предлагаю доработанный вариант решения. Логика использования и API доведены до приемлемого уровня. Реализация в коде – до уровня бета-версии.

Читать дальше →

Подготовка к Spring Professional Certification. Spring Boot

Время на прочтение5 мин
Количество просмотров17K

Приветствую всех. Эта статья раскроет основные вопросы по теме "Spring Boot". Она ориентирована на начинающих разработчиков, и может быть полезной при подготовке к собеседованию. Она получилась достаточно компактной, по сравнению с остальными статьями.


Оглавление
  1. Внедрение зависимостей, контейнер, IoC, бины
  2. AOP (аспектно-ориентированное программирование)
  3. JDBC, транзакции, JPA, Spring Data
  4. Spring Boot
  5. Spring MVC
  6. Spring Security
  7. REST
  8. Тестирование



Читать дальше →

Первая в России большая ламповая встреча Scala-комьюнити — как это было

Время на прочтение4 мин
Количество просмотров5.3K
Привет! Я Юля, DevRel в Tinkoff.ru.

28 сентября Tinkoff вместе со Scala-сообществом России провели масштабную, но очень уютную встречу разработчиков, тестировщиков и всех неравнодушных к Scala. В статье я поделюсь впечатлениями, как все прошло.

Сначала — пара слов о том, для чего мы активно включаемся в такие мероприятия. Просто мы любим Scala, используем этот язык и очень хотим, чтобы сообщество развивалось и пополнялось интересными людьми.



Мы ушли от стандартного формата конференций и собрали ламповую встречу для близких по духу людей. Мы нашли самый уютный лофт в сердце Москвы — Deworkacy в «Красном Октябре» — и пригласили по-настоящему звездный состав спикеров.

Нам важно, чтобы конференция походила на встречу старых друзей, но при этом была на высоком уровне по содержательной части докладов и воркшопов. В итоге около 400 участников собрались послушать спикеров, поучаствовать в жарких дискуссиях и потусить на афтерпати.
Вопросы к спикерам и интерес к затронутым темам показали, что мы попали в самую цель и смогли угадать желания scala-сообщества.

Небольшой видео-пруф, передающий настроение: youtu.be/ThmyLu7kOFk

Ссылки на видео докладов, фотоотчет и описание докладов под катом. Погнали!
Читать дальше →

Подготовка к Spring Professional Certification. Spring REST

Время на прочтение5 мин
Количество просмотров45K

Сегодняшняя статья рассмотрит основные вопросы про REST в Spring. Она будет особенно полезна для начинающих программистов.


Официальный гид от Pivotal, в котором написано про темы для подготовки.



Оглавление
  1. Внедрение зависимостей, контейнер, IoC, бины
  2. AOP (аспектно-ориентированное программирование)
  3. JDBC, транзакции, JPA, Spring Data
  4. Spring Boot
  5. Spring MVC
  6. Spring Security
  7. REST
  8. Тестирование


Читать дальше →

Анонс митапа ThinkJava #10 в Харькове

Время на прочтение2 мин
Количество просмотров1K


Мы позаботились о том, чтобы один из пятничных вечеров октября Java-разработчики Харькова смогли провести особенно интересно и продуктивно. 

Мы анонсируем, вы записываете, а потом все дружно 18 октября (если что, это будет вечер совершенно необычной пятницы :)) приходим на ThinkJava #10.
Читать дальше →

Подготовка к Spring Professional Certification. Spring Security

Время на прочтение5 мин
Количество просмотров17K

Эта статья является переводом статьи по подготовке к Spring Professional Certification.


В ней будет рассмотрена тема Spring Security и основные вопросы по ней.


Ее также можно использовать для подготовки к собеседованию.


↓ Остальные статьи доступны по ссылкам в оглавлении ↓


Оглавление
  1. Внедрение зависимостей, контейнер, IoC, бины
  2. AOP (аспектно-ориентированное программирование)
  3. JDBC, транзакции, JPA, Spring Data
  4. Spring Boot
  5. Spring MVC
  6. Spring Security
  7. REST
  8. Тестирование



Читать дальше →

Ближайшие события

IT-Хогвартс: Школа программистов hh.ru

Время на прочтение4 мин
Количество просмотров18K
В этом году Школа программистов hh.ru отмечает свой юбилей: вот уже десять лет как мы превращаем людей в full stack разработчиков. Обучение в Школе бесплатное, и это принципиально. Учебный процесс состоит из двух больших блоков: теория и проектная работа в команде. Два основных направления: backend и frontend.



Читать дальше →

Обзор программы Joker 2019: парад планет, или Что нас ожидает

Время на прочтение10 мин
Количество просмотров5K
Любое событие, особенно если оно завершилось, можно сравнить с чем-то необычным. Например, был на митапе, и он оказался слетом ведьм для обмена премудростями, или, допустим, забежал на вечеринку — как будто попал под ливень с грозой. И вот уже в конце месяца 25-26 октября в Санкт-Петербурге пройдет Joker 2019, еще ничего не произошло, но я для себя сравниваю эту конференцию с парадом планет.

Парад планет — не такое частое астрономическое явление, чтобы можно было себе позволить его пропустить. Дальше я попытаюсь рассказать, какие планеты нас ожидают и почему нужно спешить попасть в этот мчащийся поезд. Под катом много ссылок на предыдущие доклады и поблочный обзор программы.

image
Читать дальше →

Книга «Современный язык Java. Лямбда-выражения, потоки и функциональное программирование»

Время на прочтение10 мин
Количество просмотров17K
imageПривет, Хаброжители! Преимущество современных приложений — в передовых решениях, включающих микросервисы, реактивные архитектуры и потоковую обработку данных. Лямбда-выражения, потоки данных и долгожданная система модулей платформы Java значительно упрощают их реализацию.

Книга поможет вам овладеть новыми возможностями современных дополнений, таких как API Streams и система модулей платформы Java. Откройте для себя новые подходы к конкурентности и узнайте, как концепции функциональности улучшают работу с кодом.

В этой книге: • Новые возможности Java • Потоковые данные и реактивное программирование • Система модулей платформы Java.
Читать дальше →

GridmiAPI — простая и гибкая библиотека Android для работы с REST&RPC

Время на прочтение3 мин
Количество просмотров1.6K
Здравствуйте, хабровчане!

Когда занимаешься разработкой сетевых приложений под платформу Android, понимаешь, что одно и другое приложение похоже друг на друга. С этой мыслью у большинства разработчиков инициализируется и другая мысль — «Почему бы мне не использовать какие-либо готовые решения, ведь явно моя задача не нова?». С этого момента начинается поиск подходящих библиотек для решения актуального на сей момент вопроса. По истечению некоторого времени — профит. Казалось бы всё хорошо, ведь библиотека найдена и осталась только написать реализацию решения текущего вопроса. И тут начинаются проблемы. Связаны они с управлением потоков, да и вообще Java никогда не славилась своей компактностью, все «волшебство» должно быть реализовано непосредственно разработчиком. Порой я нахожу в этом только положительные стороны, ведь логика каждого проекта отличается друг от друга кардинально. Вам постоянно приходится переключатся с потока на поток, что не очень удобно и как описывалось ранее — получается громоздко. Решение данной проблемы было реализовано и ранее, но не столь компактно, как хотелось бы. На помощь приходит библиотека для работы с HTTP — GridmiAPI. Это максимально компактное решение, которое в свою очередь позволяет оперировать данными в реальном времени.
Читать дальше →

Подготовка к Spring Professional Certification. Вопросы по Spring MVC

Время на прочтение5 мин
Количество просмотров18K

Приветствую всех.


Это уже 5 статья из цикла статей для подготовки с Spring Professional Certification.


Оглавление
  1. Внедрение зависимостей, контейнер, IoC, бины
  2. AOP (аспектно-ориентированное программирование)
  3. JDBC, транзакции, JPA, Spring Data
  4. Spring Boot
  5. Spring MVC
  6. Spring Security
  7. REST
  8. Тестирование

Напомню, что эти статьи — это ответы на вопросы из официального гида от Pivotal для подготовки к сертификации.




Читать дальше →

Размеры Java-объектов разного типа

Время на прочтение6 мин
Количество просмотров7.7K

Введение


Содержит ли Java-объект:

  • поля, объявленные в суперклассе?
  • private поля, объявленные в суперклассе?
  • методы?
  • элементы массива?
  • длину массива?
  • другой объект (в себе)?
  • hash-код?
  • тип (свой)?
  • имя (своё)?

Ответы на эти (и другие) вопросы можно получить с помощью библиотеки классов org.openjdk.jol которая, в частности, позволяет уяснить, что объект — это область памяти:

  • содержащая:
    • заголовок (до 16 байт), и в нём:
      • hash-код
      • ссылку на тип
      • длину массива (для массива)
    • все поля (включая private), объявленные во всех суперклассах
    • или элементы массива (для массива)
  • не содержащая:
    • статические переменные
    • методы
    • другие объекты в себе
    • своё имя (то есть у объекта нет имени)


Подготовка


Здесь приведены результаты оценки памяти объектов разного типа по способу из описания пакета java.lang.instrument (смотри также здесь). Эти результаты позволяют ответить на большинство поставленных выше вопросов.
Читать дальше

Подготовка к Spring Professional Certification. Контейнер, IoC, бины

Время на прочтение10 мин
Количество просмотров119K

Доброго времени суток, Хабр.


Сегодня я решил представить вам перевод цикла статей для подготовки к Spring Professional Certification.


Это перевод только первой статьи, если он зайдет аудитории, я продолжу выпуск переводов.  


Зачем я это делаю, ведь уже есть куча профильных материалов?
  1. Часто в них информация не структурирована, не собрана, или не актуальна
  2. Молодые разработчики могут не знать английский. Этот цикл можно использовать не только для сертификации, но и для самообучения/повторения материалов.
  3. Этими материалами можно пользоваться при подготовке к собеседованию, т.к. они выстроены в виде вопросов и ответов.
  4. Важное, и самое главное преимущество — этот QA сделан из вопросов из  официального Study Guide от Pivotal. 

  • Некоторые вопросы, которые казались мне лишними или которых не было в гиде я осознанно упустил.

Оглавление
  1. Внедрение зависимостей, контейнер, IoC, бины
  2. AOP (аспектно-ориентированное программирование)
  3. JDBC, транзакции, JPA, Spring Data
  4. Spring Boot
  5. Spring MVC
  6. Spring Security
  7. REST
  8. Тестирование

Читать дальше →

Вклад авторов