Обновить
128K+

Java *

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

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

Обработка русского языка на Java

Время на прочтение4 мин
Охват и читатели14K

Рассказ пойдет об одной новой, общедоступной Java/Kotlin библиотеке, для работы с русским языком. Она позволяет получить исходные формы + морфологическую информацию для большинства слов русского языка. Статья предназначена для тех, кто создает ботов, обрабатывает сообщения и занимается поиском. Для справки, ключевое отличие лемматизации от стеммизации (урезания до нормализованной формы) состоит в том, что лемма удовлятворяет правилам языка, например для слова "яблоками" леммой будет "яблоко", а не просто урезанный корень. Лемма может быть и более сложной, например для слова люди, начальная форма – человек. В этой статье мы рассмотрим способ быстрого извлечения такой информации из морфологического словаря.

Запустить процесс

AWS Lambda с Java: быстро и недорого

Время на прочтение10 мин
Охват и читатели8K

AWS Lambda - популярная платформа для разработки serverless-функций, и как Java-разработчик мне нравится иметь возможность использовать эту платформу. Однако, есть некоторые важные моменты, о которых стоит помнить при работе с ней.

Читать далее

Насколько быстрее Java 17?

Время на прочтение4 мин
Охват и читатели14K

Решение задачи по составлению расписания турнира с разъездами (TTP) — один из вычислительных тестов в нашем наборе

Позавчера вышла Java 17 с кучей новых функций и усовершенствований. Большинство из них требуют изменения кода. Кроме производительности. Просто заменяете JDK — и получаете бесплатную прибавку производительности. Но насколько большую? Стоит ли она того? Для этого мы провели бенчмарки JDK 17, JDK 16 и JDK 11.
Читать дальше →

Kotlin Null-Safety vs ClassLoader

Время на прочтение7 мин
Охват и читатели6.2K

Недавно я проходил собеседование и одним из вопросов, стал такой загадочный экземпляр:
"А какое главное преимущество системы типов Kotlin перед Java"?

Честно говоря, выделить какое преимущество считалось главным, оказалось неразрешимой для меня задачей: Nothing, отсутсвие Wildcard и First-Class Functions вместо Java-костыля с Functional Interface (имеется ввиду 8я версия Java) не заняли первых мест в личном топе интервьюера, который мне предложили угадать.

Оказалось что главное в Kotlin - возможность обьявить Nullable Type и Null Safety подход (Замечу, что по моему опыту собственные или библиотечные Optional или Maybe решают эту проблему, и пишутся за 10 минут на Java 7. А еще есть аннотации Nullable, позволяющие проверять поля в сompile-time. Короче, есть много способов заставить делать Null проверки в plain Java. Ну да ладно).

Но речь пойдет не о странных вопросах, связанных со вкусовыми предпочтениями интервьюеров относительно синтаксического сахара.
Дело в том, что Null Safety в Kotlin можно сломать, притом не выходя из под его безопасного купола в суровый дикий мир Java и Null-Referrences.

Как?

Long story short: ClassLoader ведет себя интересным образом при попытке загрузить статические поля классов рекурсивно ссылающиеся на классы друг-друга.

Под катом примеры кода и подробное объяснение того, как он обманывает проверки на Nullable. Я искренне надеюсь что специфические знания Java/Kotlin для статьи не нужны - я объясню все детали на ходу, и уложу расследование в 10 минут.

Начнем.

Java от Oracle снова бесплатна

Время на прочтение2 мин
Охват и читатели46K

Тезисно: 

Java 17 полна решимости пробить барьер, имеющийся на границе Java 8 и Java 9. Теперь, начиная с 17-ой версии, Oracle будет предоставлять Oracle JDK бесплатно, даже для коммерческих целей. Единственное чего делать нельзя — это перепродавать Oracle JDK.

В статье приведен перевод полного текста анонса с блога Oracle: https://blogs.oracle.com/java/post/free-java-license.

Читать текст

Вышла Java 17

Время на прочтение7 мин
Охват и читатели61K

Вышла общедоступная версия Java 17. В этот релиз попало более 2700 закрытых задач и 14 JEP'ов. Изменения API можно посмотреть по этой ссылке.

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

Что должен знать Java Software Engineer

Время на прочтение7 мин
Охват и читатели14K

Есть много разных понятий для человека, который занимается программированием: кодер, разработчик, программист и т.д. Мне же больше по душе такое понятие, как инженер-программист или software engineer, т.к. данное понятие охватывает наибольшее количество тем и направлений, необходимых для разработки. Это лично моё виденье.

Так чем же принципиально software engineer отличается от остальных регалий? Ответ достаточно прост и очевиден - набором знаний о технологиях и большим кругозором в сфере, которой он себя посветил. Кроме того, сталкиваясь с какой-либо проблемой или задачей, он уже понимает какой подход нужен для её решения, или знает, что надо "подтянуть", чтобы быть компетентным в данном вопросе.

Т.к. на данный момент мой основной язык программирования Java, то и рассматривать данный вопрос я буду со стороны Java. Однако общая концепция хорошо ложится на другие языки с небольшой корректировкой "под себя".

Цель статьи привести - познакомить читателя с предлагаемым мною набором знаний. Ниже я привожу набор направлений и технологий, которыми должен обладать с теоретической и практической точки зрения software engineer.

Читать далее

Java. Adapter Pattern in Game Server

Время на прочтение3 мин
Охват и читатели8.6K

Адаптер - это шаблон структурного проектирования, который позволяет объектам с несовместимыми интерфейсами взаимодействовать друг с другом.

Так же известен как “Обертка”.

Проблема

Чтобы продемонстрировать этот шаблон, я буду использовать упрощенный пример игровой механики, в которой есть интерфейс IEnemy, но один из врагов отличается от других и не имеет реализации метода атаки. Вместо этого этот конкретный враг (SpecialEnemy) накладывает заклинания.

Читать далее о паттерне Адаптер

Java 17 и Jakarta EE 9 — минимальные требования для Spring Framework 6

Время на прочтение3 мин
Охват и читатели21K


От переводчика: на конференции SpringOne были сделаны довольно важные анонсы относительно нового поколения Spring Framework, на Хабре это почему-то это прошло незамеченным. Судя по всему, в ближайшее время мы будем жить не просто в мире “Java 8/Java 11+”, а появится ещё один водораздел: “Spring 5/Spring 6+”. Чем это грозит? Например, если вы используете Hibernate 5.4, то придется принудительно обновиться на Hibernate 5.5+.


1 сентября на SpringOne было объявлено, что минимальные требования для Spring Framework 6 и Spring Boot 3, который будет доступен в 4 квартале 2022 года, сдвигаются в сторону увеличения:


  • Java 17+ (c Java 8-17 в линейке Spring Framework версии 5.3.x)
  • Jakarta EE 9+ (с Java EE 7-8 в линейке Spring Framework версии 5.3.x)
Читать дальше →

Представляем Spring GraphQL

Время на прочтение4 мин
Охват и читатели6.6K

Вслед за анонсом проекта Spring GraphQL и выходом майлстоуна 1.0 мы публикуем этот пост с более подробной информацией.

Читать далее

Внешние данные конфигурации в Spring

Время на прочтение9 мин
Охват и читатели111K

Большинство наших приложений зависят от внешних сервисов, например серверов баз данных, SMS-шлюзов и систем наподобие PayPal. Эти сервисы могут существовать более чем в одной среде, то есть в средах разработки и эксплуатации. Если мы хотим подключиться к эксплуатационной среде, мы должны сначала пройти через среду разработки. Таким образом, во время создания приложений нам приходится переключаться между средами. Это связано с тем, что у каждой среды своя уникальная конфигурация со своими параметрами подключения и прочими значениями.

Читать далее

Строгая инкапсуляция внутренних API в JDK 17

Время на прочтение3 мин
Охват и читатели7.8K

В JDK 17 вошли 14 JEP, один из которых — JEP 403 (Strongly Encapsulate JDK Internals), — строго инкапсулирует все внутренние элементы JDK, за исключением некоторых критических API, таких как sun.misc.Unsafe. Как преемник JEP 396 (Strongly Encapsulate JDK Internals by Default) он еще больше ограничивает доступ к внутренним API и к ним больше нельзя получить доступ с помощью параметра --illegal-access.

Основной целью инкапсуляции является улучшение безопасности и сопровождаемости через использование стандартного API вместо внутреннего. Это также позволит разработчикам OpenJDK изменять внутреннюю реализацию, не ломая обратной совместимости. Проверить использование в вашем коде внутренних компонент можно с помощью утилиты JDeps с плагинами Maven и Gradle.

Для открытия определенных пакетов можно использовать параметр командной строки --add-opens или атрибут Add-Opens в манифесте JAR-файла. Например, открыть доступ к модулю java.util из всех безымянных модулей можно следующим образом:

Читать далее

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

С каким уровнем Java можно идти на стажировку, а с каким — претендовать на зарплату 250 000 рублей?

Время на прочтение5 мин
Охват и читатели53K

Привет, Хабр! Меня зовут Даниил Пилипенко, я — программный директор факультета backend-разработки направления «Программирование» в Skillbox и директор центра подбора IT-специалистов SymbioWay.

В этой статье я хочу рассказать, какого уровня знаний и навыков Java достаточно, чтобы идти на стажировку или устраиваться на работу, и на какую зарплату можно рассчитывать.

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

Мы подготовили для вас несколько карьерных треков, которые сразу разложат все по полочкам: 

Читать далее

Как объединить 5 языков программирования в одном Python проекте?

Время на прочтение7 мин
Охват и читатели41K

На сегодняшний день существует несколько тысяч языков программирования, каждый из которых создавался с определенной целью, пытаясь изменить и улучшить недостатки своих предшественников. Так, например, появился язык Kotlin, который был нацелен на замену Java в мобильной разработке. В 2010 году увидел свет язык Rust, разработчики которого пытались создать быстрый и безопасный язык, который закрывал бы многие недостатки C/C++.

Сейчас практически никто не ставит цели создать универсальный язык для всех задач и всех платформ, так как в каждой области есть свои потребности и нюансы для языка.

Но как объединить несколько разных языков в одном приложение, чтоб это работало?

Ознакомиться

Как и зачем я сдавал сертификацию Oracle — Java SE 11 Developer

Время на прочтение5 мин
Охват и читатели15K

Меня зовут Аксёнов Вячеслав и я бэкенд разработчик, пишу на Java/Kotlin, расскажу про то, как я сдавал сертификацию на знания Java SE 11 от Oracle. И какие нюансы я понял в процессе подготовки и сдаче.

Моя история

Осенний экспресс прибывает: анонс TechTrain 2021 Autumn

Время на прочтение6 мин
Охват и читатели1.2K

IT-экспресс TechTrain мчится в онлайн и открывает наш осенний сезон конференций.

Это бесплатное мероприятие, где с 8 докладами на самые разные темы выступят спикеры самого разного профиля. Пишете вы на Kotlin или C++, ближе вам DevOps или дата-инжиниринг — найдется доклад для вас.

Чтобы запрыгнуть на бесплатный осенний поезд, который отправится 18 сентября, достаточно пройти регистрацию на сайте.

А чтобы вспомнить или впервые увидеть доклады прошлого сезона, можете посмотреть их плейлист.

Все это, только в расширенном формате, ждет вас и на наших крупных осенних конференциях. Поэтому по программе TechTrain можно даже погадать: посмотрите на нее под катом, выберите самый интересный вам доклад, а в конце текста мы по вашему выбору нагадаем, на какой из наших конференций вам точно будет интересно.

Читать далее

Разрабатываем свои собственные буквенные часы

Время на прочтение6 мин
Охват и читатели21K
Источник

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

Часы являются малодоступными широкому кругу людей, ввиду их дороговизны (это явилось одним из стимулов для разработки своих собственных), а ещё имеются у производителя на разных языках.

И я подумал, почему бы не обдумать вероятность создания примерно таких часов, на русском языке?

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

Новые возможности в Java версий 12 — 17

Время на прочтение6 мин
Охват и читатели13K

Быстрый тур по новым, готовым к работе функциям при обновлении с Java 11 до Java 17.

Через три года после Java 11 - на данный момент последней версии с долгосрочной поддержкой (LTS), Java 17 LTS будет выпущена в сентябре 2021 года. Пришло время сделать краткий обзор новых функций, которыми разработчики могут пользоваться после обновления с 11 до 17. Обратите внимание, что было внесено гораздо больше улучшений - в этой статье основное внимание уделяется тем функциям, которые могут напрямую использоваться большинством разработчиков.

Читать далее

Как мы добавили поддержку языка Frege в IDEA. Часть 2

Время на прочтение9 мин
Охват и читатели2.7K

Привет! Это вторая часть рассказа о том, как мы поддерживали язык Frege в IntelliJ IDEA. Первую часть читайте здесь. Сейчас мы поделимся, как сделали автодополнение, систему сборки, интерпретатор и систему типов. И как все это тестировали.

Читать далее