Обновить
128K+

Java *

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

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

Разработка игрового сервера на Nadron

Время на прочтение11 мин
Охват и читатели4.7K
В этой статье я расскажу об основных моментах разработки игрового сервера на фреймворке Nadron, о стеке технологий, используемых мной в разработке, и приведу пример структуру проекта для браузерной игры.
Читать дальше →

Записки о миграции на Java 10

Время на прочтение6 мин
Охват и читатели16K
Здравствуй, Хабр. Как ты помнишь, недавно произошёл официальный релиз Java 10. Учитывая, что практически все сейчас используют преимущественно 8-ку, с выходом 10-ки нас ждут такие вкусности как модульность (вошла в 9-ку) и local variable type inference. Звучит неплохо, можно попробовать поэкспериментировать с переносом какого-нибудь существующего проекта на 10-ку.

image

О том, какие разновидности боли ждут нас, можно узнать под катом.
Читать дальше →

Нечеткий поиск (fuzzy search) в реляционных базах данных

Время на прочтение4 мин
Охват и читатели20K
Для поиска нужной информации на веб-сайтах и в мобильных приложениях часто используется поиск по словам или фразам, которые пользователь свободно вводит с клавиатуры (а не выбирает например из списка). Естественно, что пользователь может допускать ошибки и опечатки. В этом случае полнотекстовый поиск, полнотекстовые индексы, которые реализованы в большинстве баз данных не дают ожидаемого результата и практически бесполезны. Такой функционал все чаще реализуют на основе elasticsearch.

Решения с использованием elasticsearch имеют один существенный недостаток — очень большая вероятность рассогласования основной базы данных, например PostgreSQL, MySQL, mongodb и elasticsearch, в которой хранятся индексы для поиска.
Читать дальше →

Характер Kotlin

Время на прочтение10 мин
Охват и читатели16K
Привет, Хабр! Надеемся в обозримом будущем и до Kotlin добраться. Мимо этой статьи (февральская) пройти не смогли.

Читаем и комментируем!
Читать дальше →

[Видео] Доклады с митапа Android Paranoid

Время на прочтение8 мин
Охват и читатели9.3K
Android почти исполнилось десять лет.

Мы решили отметить это праздничным чаепитием со всеми, кто пришел в питерский офис Яндекса на второй митап Android Paranoid. Сказано — сделано. К нашему сожалению, маршмеллоу, шоколадное печенье и желейные бобы закончились еще 28 марта.



Вместо них — доклады, записанные на видео, и короткая выжимка полезной информации для Android-разработчиков. Под катом о том,

  • что происходит после нажатия на иконку приложения;
  • как перевести приложение на Kotlin и уместиться в 300 строк кода;
  • как менялись инструменты фоновой работы в Android;
  • как быстро получить анимации в RecyclerView.

Как я проходил тестовое задание на летнюю стажировку в Яндекс

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

Привет Хабр, сегодня я расскажу о том, как я проходил тестовое задание на летнюю стажировку в Яндекс. Эта публикация будет полезна начинающим разработчикам, любителям олимпиадного программирования, тем кто неравнодушен к С++ и Java, или просто хочет прочесть интересную статью после трудного рабочего дня.

Чего ожидать от этой статьи?

  • Introduction, о том что такое стажировки в Яндкесе, как и когда на них подать
  • Мотивация к написанию данной статьи
  • Примеры задач, моё решение и краткий разбор (Можно смело пропустить первые два пункта, и начинать именно отсюда)

Introduction


Для тех кто мало знаком с системой отбора на стажировку в Яндексе расскажу вкратце. На сайте яндекса, за несколько месяцев до лета объявляется оплачиваемая вакансия для начинающих разработчиков, в том отделе, в котором вы бы хотели работать (i.e. Яндекс.Диск, Яндекс.Алиса). По ссылке, нужно заполнить форму, о том где Вы учитесь, чем занимаетесь, какой был опыт работы, о чем писали дипломную работы итп. После заполнения формы Вам на почту присылают тестовое задание, на выполнение которого у Вас есть 6 часов, в любой день в течении недели с момента, когда Вы получили это письмо.
Читать дальше →

JavaScript, Java, какая теперь разница?

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



На прошлом JPoint пообещал написать статью про использование GraalVM для смешивания Java и JS. Вот она.


В чем проблема? В повседневной практике часто встречаются приложения, состоящие из двух частей: JavaScript-фронтенд и Java-бэкенд. Организация интеропа между ними требует усилий. Как правило, делают их люди с разных сторон баррикад, и при попытке залезть в чужую область они начинают страдать. Еще есть фуллстек веб-разработчики, но про них всё понятно: они должны страдать всегда.


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

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

JPoint 2018: разбор полётов

Время на прочтение6 мин
Охват и читатели5.8K
6-7 апреля 2018 года в Москве проводилась Java-конференция JPoint 2018. Далее представлен «разбор полётов» конференции, прошедшей при активной поддержке и участии популярного подкаста Разбор полётов: информация и впечатления о докладах, организации мероприятия, проиллюстрированные большим количеством фотографий.


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

Как подписать сообщение алгоритмом ГОСТ Р 34.11/34.10-2001 на Java

Время на прочтение3 мин
Охват и читатели15K
В этот статье я расскажу, как подписать произвольное сообщение приватным ключом и сертификатом по алгоритму ГОСТ Р 34.11/34.10-2001 присоединённой (attached) подписью на языке Java.

Для проекта электронного документооборота мне потребовалось сделать подпись алгоритмом ГОСТ. Несмотря на то, что появился он давным-давно, к своему удивлению, я не смог найти в сети ни одного завершённого примера, который бы получал на вход сообщение, ключ и сертификат, а на выходе давал бы подписанное сообщение.

Все найденные примеры или использовали стороннее платное ПО КриптоПро, или не собирались с современными версиями Java, или подписанные сообщения потом не валидировались.

В общем, я потратил много времени, чтобы разобраться, и решил, что полный готовый пример кому-нибудь да пригодится.
Читать дальше →

Знакомство с реактивными потоками – для Java-разработчиков

Время на прочтение12 мин
Охват и читатели25K
Привет, Хабр!

Сегодня мы вернемся к одной из тем, затрагиваемых в нашей замечательной книге "Реактивные шаблоны проектирования". Речь пойдет об Akka Streams и потоковой передаче данных в целом — в книге Роланда Куна этим вопросам посвящены главы 10 и 15-17.
Читать дальше →

IntelliJ IDEA 2018.1 — улучшенный анализ кода, поддержка частичных коммитов Git, Android Studio 3.0 и многое другое

Время на прочтение9 мин
Охват и читатели21K
Привет, Хабр! Недавно мы запустили IntelliJ IDEA 2018.1 – первое большое обновление в этом году. В нем вас ждет множество важных улучшений: поддержка частичных коммитов Git, отображение внешних аннотаций в коде, функциональность, добавленная из Android Studio 3.0, и многое другое. Ниже мы расскажем об этом подробнее, а попробовать новую версию можно здесь.

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

Блеск и нищета Java для настольных систем

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

Вы не поверите, но в 2018 году всё ещё нужно разрабатывать Desktop приложения.

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

— Здравствуйте, меня зовут Юрий, я пишу Desktop приложения в 2018 году.
— Здравствуй, Юрий, давайте ему похлопаем, он смог поделиться своей проблемой!

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

Зачем мы всё ещё это делаем, если есть web с его новыми продвинутыми возможностями: Progressive Web Apps, Service Worker, Web RTC, Web GL и т.д?

Под катом расскажу как с этим жить и при чём тут Java.
Читать дальше →

Разбор основных концепций параллелизма

Время на прочтение17 мин
Охват и читатели90K
Всем кофе!

Завтра у нас плавненько стартует практически юбилейный поток курс «Разработчик Java» — уже шестой по счёту начиная с апреля прошлого года. А это значит, что мы снова подобрали, перевели интереснейший материал, которым делимся с вами.

Поехали!

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

РАЗДЕЛ 1

Вступление

С момента своего создания Java поддерживает ключевые концепции параллелизма, такие как потоки и блокировки. Эта памятка поможет Java-разработчикам, работающим с многопоточными программами, понять основные концепции параллелизма и способы их применения.

РАЗДЕЛ 2

Концепции

Концепция Описание
Atomicity (атомарность) Атомарная операция — это операция, которая выполняется полностью или не выполняется совсем, частичное выполнение невозможно.
Visibility (видимость) Условия, при которых один поток видит изменения, сделанные другим потоком

Таблица 1: Концепции параллелизма

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

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

JNI: Подружим Java и C++

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

Введение


Бывают моменты, когда в Java некоторые действия выполняются за пределами обычных Java-классов. Например, необходимо исполнить код, написанный на C/C++ или другом каком-нибудь языке.

В данной статье рассмотрим данный вопрос с практической точки зрения, а именно напишем простой пример взаимодействия кода Java с кодом C++, используя JNI. Статья не содержит чего-то сверхестественного, это скорее памятка для тех, кто с этим не работал.
Читать дальше →

Рустам Мехмандаров и Александр Тарасов — семантические чудеса и автоматизация экспериментов на jug.msk.ru

Время на прочтение2 мин
Охват и читатели2.4K
5 апреля 2018 года, как раз накануне конференции JPoint 2018, прошла очередная встреча московского сообщества Java-разработчиков jug.msk.ru. Рустам Мехмандаров рассказал об опыте решения задач с использованием Apache Jena. Александр Тарасов поведал про использование DSL на основе языка Kotlin для автоматизации экспериментов.


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

О стримах и таблицах в Kafka и Stream Processing, часть 1

Время на прочтение16 мин
Охват и читатели65K
* Michael G. Noll — активный контрибьютор в Open Source проекты, в том числе в Apache Kafka и Apache Storm.

Статья будет полезна в первую очередь тем, кто только знакомится с Apache Kafka и/или потоковой обработкой [Stream Processing].


В этой статье, возможно, в первой из мини-серии, я хочу объяснить концепции Стримов [Streams] и Таблиц [Tables] в потоковой обработке и, в частности, в Apache Kafka. Надеюсь, у вас появится лучшее теоретическое представление и идеи, которые помогут вам решать ваши текущие и будущие задачи лучше и/или быстрее.

Содержание:

* Мотивация
* Стримы и Таблицы простым языком
* Иллюстрированные примеры
* Стримы и Таблицы в Kafka простым языком
* Пристальный взгляд на Kafka Streams, KSQL и аналоги в Scala
* Таблицы стоят на плечах гигантов (на стримах)
* Turning the Database Inside-Out
* Заключение
Читать дальше →

[Питер] Встреча JUG.ru с Дмитрием Александровым — Java на GPU

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

В среду, 11 апреля, в петербургском офисе компании T-Systems пройдет встреча JUG.ru с Дмитрием Александровым, Java Champion-ом, ведущим экспертом-программистом в T-Systems. Тема встречи — Java на GPU.


Участие бесплатное, регистрация обязательная. Зарегистрироваться можно тут.




Сегодня GPU-ресурсы доступны не только на игровых ПК, но и на ноутбуках или облачных машинах. Ценой определённых усилий они могут быть использованы, чтобы добиться массивных оптимизаций на стандартных устройствах.

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

Концепция BaselineTopology в Apache Ignite 2.4

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

image


На момент появления в Apache Software Foundation проекта Ignite он позиционировался как чистое in-memory-решение: распределенный кэш, поднимающий в память данные из традиционной СУБД, чтобы выиграть во времени доступа. Но уже в релизе 2.1 появился модуль встроенной персистентности (Native Persistence), который позволяет классифицировать Ignite как полноценную распределенную базу данных. С тех пор Ignite перестал зависеть от внешних систем обеспечения персистентного хранения данных, и вязанка граблей конфигурации и администрирования, на которые не раз наступали пользователи, исчезла.


Однако persistent-режим порождает свои сценарии и новые вопросы. Как предотвратить неразрешимые конфликты данных в ситуации split-brain? Можем ли мы отказаться от перебалансировки партиций, если выход узла теперь не означает, что данные на нем потеряны? Как автоматизировать дополнительные действия вроде активации кластера? BaselineTopology нам в помощь.

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

Открытый вебинар «Примеры паттернов»

Время на прочтение1 мин
Охват и читатели8.1K
Доброго дня!

Намедни наш замечательный Виталий Чибриков в рамках его курса «Разработчик Java» провёл открытый урок, где разобрал в чём же польза паттернов в проектировании и вне, на примере нескольких из них в формате: постановка проблемы, решение и пример для каждого.



Если есть какие-то вопросы, то можете задать их тут или завтра на Дне открытых дверей.

Спасибо!

Использование rrd4j для OpenHab2 persistence

Время на прочтение8 мин
Охват и читатели9.6K
OpenHab – популярный сервер «умного дома» (или IoT, как сейчас модно говорить) и уже обозревался на Хабре. Тем не менее, документации по отдельным аспектам настройки сервера не так много, как хотелось бы. А на русском её, считай что и нет.

Важной особенностью OpenHab является модульность. Сам по себе сервер обеспечивает базовые функции (даже без какого бы то ни было UI). Весь остальной функционал предоставляется плагинами. Одним из типов плагинов является persistence – предоставление возможности хранить историю значения для айтемов (параметров устройств). Это необходимо для отображения исторических данных (графики) и восстановления состояния айтемов при рестарте сервера.

Существующие плагины позволяют использовать для хранения все популярные БД. Я же расскажу про настройку очень интересного бекэнда – rrd4j. Это высокопроизводительное хранилище для данных, которые представляют собой ряды значений, привязанных ко времени. Автор вдохновлялся набором RRDTools, но переписал его функционал на Java (OpenHab тоже написан на Java), оптимизировал и расширил функционал. Файлы хранилищ rrd4j не совместимы с файлами RRDTools.
Читать дальше →