Обновить
128K+

Java *

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

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

Как мы Raiffeisen Online создавали…

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

Интернет-банк уже давно превратился из роскоши в must have для любого уважающего себя банка. Излишне говорить, что приложение должно не просто быть, а должно быть надёжным, удобным и приятным в использовании. В одной статье не получится рассказать обо всех аспектах нашего интернет-банка Raiffeisen Online, но зато я расскажу о нашем опыте создания новой версии, его архитектуре и трудностях, с которыми столкнулась команда. Возможно, кому-то наш опыт поможет сэкономить время и усилия.
Читать дальше →

От оптимизаций до Machine Learning: интервью с автором Android High Performance Programming

Время на прочтение6 мин
Охват и читатели8K
Почти год назад вышла книга Android High Performance Programming. Книжка классная – но требующая комментариев. Скоро автор прилетит в Россию на конференцию Mobius 2017 Moscow, и с ним можно будет пообщаться вживую. Чтобы скоротать ожидание, давайте пообщаемся с Энрике в формате хабро-интервью.

Java или Kotlin? Как писать быстрый код? Можно ли в мобильном приложении использовать Tensorflow и другое машинное обучение? Срочно жмите кнопку «читать дальше»! ⇩

Итак, в гостях у нас
Enrique López Mañas (Энрике Лопес Маньяс) — независимый IT-консультант и разработчик, обладатель звания Android Google Developer Expert. Занимается мобильными технологиями и программированием более 10 лет, входит в десятку самых активных в Германии участников сообщества Java Open Source. Последнее время «заболел» Big Data и ML-технологиями, о чем мы с ним тоже сейчас кратко поговорим.


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

Работа с COM-портом Arduino из Java-приложения

Время на прочтение5 мин
Охват и читатели33K
Сап, хабр. Возможно, людям, начинающим изучать arduino, будет интересно, как легко и быстро организовать передачу информации между микроконтроллером и Java приложением. Данная связка открывает кучу интересных возможностей по сбору и обработке данных с датчиков, управлению различными свистелками-перделками, а также созданию своих первых IoT проектов.

Недавно на просторах интернета наткнулся на весьма простую библиотеку Java-Arduino Communication Library. Не найдя публикаций на эту тему здесь, решил поделиться с вами опытом использования. Для работы нам понадобятся установленные Arduino IDE, IntelliJ IDEA, Java SE Development Kit и, собственно, сам микроконтроллер (я тестировал на китайской Arduino Nano и Strela на базе Leonardo от Амперки, на обоих все все работало отлично).
Читать дальше →

Полезные скрипты при миграции из Oracle в PostgreSQL

Время на прочтение13 мин
Охват и читатели21K
Во время миграции из Oracle в PostgreSQL с помощью ora2pg встал вопрос с несоответствием типов данных между разными базами. По умолчанию не все колонки конвертируется правильно, а отсутствие в Oracle Boolean и вовсе порождает неоднозначность – часть колонок нужно перенести как числа, часть как логические значения. В тоже время hibernate знает все о типах данных и может создать эталонную схему.

Итоговый процесс переноса выглядел следующим образом: создание структуры таблиц через ora2pg, исправление структуры по эталонной схеме, перенос данных, конвертация blob и Boolean, добавление отсутствующих в PostgreSQL функций (nvl, nvl2, regexp_substr), создания оставшейся структуры — индексов, view и прочего.

Под катом накопившиеся за время конвертации sql скрипты для полуавтоматической миграции.
Читать дальше →

TextView и Spannable: выделение частей слова

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


Привет, Хабрамир! Меня зовут Оксана и я Android-разработчик в небольшой, но очень классной команде Trinity Digital.

Сегодня я буду рассказывать про маленькую часть большого проекта.

Проект зовется “Школа 2100” и представляет собой коллекцию электронных учебников с разными фичами: поиском, закладками-заметками, дополнительными материалами, тестовыми заданиями, etc. И как раз в том, что названо “тестовыми заданиями” кроется предмет обсуждения.

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

OpenShift.IO: all-in-one платформа для разработки и CI/CD

Время на прочтение4 мин
Охват и читатели11K
Тотальная контейнеризация и переосмысление роли контейнеров в процессе девелопмента и развития инфраструктуры не могла не сподвигнуть главных адептов open source мира на дальнейшие свершения. Red Hat уверенно гнет свою линию, и если несколько лет назад OpenShift был всего лишь PaaS-ом, то сегодня — это нечто большее. Сам по себе OpenShift понятен, но не прост. Сделать процесс управления контейнерами и развертывания приложений как можно более безболезненным и безопасным — главная задача, которую преследует OpenShift, и стоит отметить, ребята из Red Hat преуспели в этом. Но, сам по себе OpenShift никак не приближает к заветной мечте — предоставить девелоперу, ПМу, QA инженеру окружение, где будет все. Это такой себе идеальный мир без Jira или RedMine, без нескончаемых Jenkins слейвов, незаконченных обновлений стейджинга, различных IDE, которые по разному ведут себя с разными проектами, без ручных настроек проектов на GitHub. Этот идеальный мир — проект, который Red Hat анонсировали относительно недавно, а именно в мае 2017, и имя ему openshift.io.
Читать дальше →

Послевкусие от Kotlin, часть 3. Корутины — делим процессорное время

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


Java позволяет писать последовательный, параллельный и асинхронный код. Асинхронный — это когда регистрируется callback, который запустится после какого-либо события (например, файл прочитан). Это позволяет избежать блокировки потока, но ломает последовательность выполнения, так что на java пишут такой код скорее когда нет других вариантов. Kotlin даёт решение — корутины, с ними асинхронный код выглядит почти так же, как последовательный.

По корутинам мало статей. Конкретных примеров, показывающих их преимущества — ещё меньше.

Что нашёл:


Последнее интересно — большинство enterprise приложений всё время что-нибудь ждут: БД, другие приложения, изредка и файл нужно прочесть. И всё это может быть полностью асинхронным, а значит всё приложение можно перевести на асинхронную обработку запросов.

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

MBLTdev 2017 близко: запрограммируйся на хардкор

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

Привет, Хабр! Мы на финишной прямой. Выкатили полную программу конференции мобильных разработчиков MBLTdev 2017. Чего ждать, кого слушать, чем заняться — всё под катом.
Читать дальше →

Настройка двусторонней RSA и GOST аутентификации в приложении на JBoss EAP 7

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


Здравствуйте!

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

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

Необычный митап про Java в Питере 30 октября

Время на прочтение3 мин
Охват и читатели4K
Для тех, кто устал от технических митапов про библиотеки, инструменты, фреймворки, мы приготовили кое-что совсем иное — встречу-дискуссию “Java и велосипеды: когда стоит вкладываться в написание собственных инструментов на бэкенде?”



У нас всегда есть выбор. Разрабатывать фреймворки самим, или взять готовый у поставщика. Java, Spring, Hibernate, etc. Если мы берем что-то “из коробки”, вполне можем сделать хороший продукт. Если мы хотим создать нечто особенное, существенно выделяющее нас по сравнению с конкурентами, разработка собственных инструментов может быть оправдана — мы будем точно понимать, как он устроен, и сможем выжать из него максимум. Так в каком же случае имеет смысл вкладываться в разработку internal-инструментов, а в каком можно довольствоваться готовыми решениями?

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

Maven, где мои артефакты? Еще одна статья про управление зависимостями

Время на прочтение6 мин
Охват и читатели40K
Легко жить с maven, когда есть доступ к центральному репозиторию, или у компании есть один корпоративный репозиторий. Все меняется, если работаешь в закрытом контуре, а количество репозиториев ближе к сотне. Под катом история о том, где искать потерявшийся артефакт и как для этого приготовить maven.
Читать дальше →

Java XML API: выбираем правильно. StAX: работаем с удовольствием

Время на прочтение5 мин
Охват и читатели62K
Здравствуйте!
Несмотря на снижение популярности формата XML с начала 2000х, он прочно занял свои ниши. Я сталкивался с обработкой XML ~ в 60% проектов и посвятил ей занятие своей стажировки Masterjava. Наиболее частые его применения: XHTML, SOAP, различные конфигурации (например Tomcat, SoapUI, IntelliJ IDEA, Spring XML конфигурация), импорт-экспорт данных.

В Java есть несколько API для работы с XML и для разработчика важно понимать, какое из API требуется выбрать в каждой конкретной ситуации. В этой статье я кратко перечислю все Java XML API, их назначение и примеры использования, и подробнее остановлюсь на работе с достаточно редкой, но в ряде случаев единственно верной технологией StAX. Предполагается что с элементами XML вы уже знакомы.
Читать дальше →

Планирование задач в Android с использованием JobScheduler и IntentService

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


Иногда при разработке под OS Android возникает необходимость выполнять ресурсоемкие операции периодически, регулярно или по запросу, и для этих операций важно, например, наличие интернета или чтобы устройство "не спало". Чаще всего при решении подобных задач применяются AlarmManager, WakefulBroadcastReceiver, либо же вообще WakeLock контролируется вручную. Все это не рекомендуется в документации для разработчиков под Android, а WakefulBroadcastReceiver уже отмечен как deprecated с API level 26.0.0.


Что же мы можем сделать, чтобы следовать рекомендациям Google и создавать приложения с более гибким поведением на версиях Android 5.0+, в которых энергосбережению уделяется все больше внимания? Если вы готовы выставить минимальный API level 21.0.0 для своего приложения, предлагаю под катом пример использования JobScheduler в связке с IntentService для последовательного выполнения трудоемких задач.

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

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

Онлайн-квест от MBLTdev: призы и ответы

Время на прочтение2 мин
Охват и читатели6K
Привет, Хабр! В среду мы запилили квест, и судя по потоку комментариев и сообщений, квест вам понравился и заставил поломать голову. Мы рады! В этом посте подведём итоги: раскроем правильные ответы и вручим призы.

Статистика




Призы


Сегодня призы отправились победителям, проверяйте почту.

  • Годовые подписки на продукты JetBrains получили Инсаф, Михаил и Даниил.
  • Билеты на конференцию мобильных разработчиков MBLTdev 2017 — Алексей Лагута, Михаил и Артём.
  • Футболки MBLTdev 2017 — Устинов Валерий, Руслан Ахтямов и Павел Камаев.
  • Скидка 20% на билеты на MBLTdev 2017 — наш подарок всем кто прошёл квест до конца.

Теперь расскажем, как надо было решать задания. Под катом — ответы.
Читать дальше →

Spark — Потрясающий веб-микрофреймворк для Java

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

Небольшое вступление


Spark — это просто чудесный микрофреймворк для создания веб-приложений на джаве без особых усилий.  Spark стремится к простоте и обеспечивает только минимальный набор функций. Тем не менее он предоставляет все необходимое для создания веб-приложения, которые поместятся в несколько строк кода. С синтаксисом, вдохновленным Sinatra, код выглядит очень чистым.
Читать дальше →

Много, быстро, распределенно: как выбирать In-Memory Data Grid-решение

Время на прочтение11 мин
Охват и читатели14K
Нужен был способ дать машине память, чтобы она могла, в терминологии Тьюринга, быстро зарывать данные и так же быстро их выкапывать.
Нил Стивенсон, «Криптономикон»

IMDG
Фото модуля памяти на магнитных сердечниках в мейнфрейме IBM 1401, использованное в качестве фона на этом изображении, напоминает нам о временах, когда компьютеры были большими, а память — дорогой. Сегодня, как мы узнаем из поста ниже, все поменялось...

IMDG, гриды, In-Memory Data Grids — как только не называют системы, которые оказались темой поста. И хотя название совершенно правдиво, да и гриды, как инструмент, всё более популярны, многие до сих пор путают их то с системами распределённых кэшей, то с NoSQL-базами данных, а то и вовсе полагают, что «если разместить MySQL на RAM-диске, то получится почти IMDG».

Ещё не так давно решение накапливать информацию, а уже после её обрабатывать, казалось логичным, а появившиеся языки запросов к хранилищам информации выглядели отличным решением: каждая стадия процесса работы с информацией была выделенной и достаточно хорошо контролируемой. Но времена меняются, и сегодня всё чаще бизнес заявляет о желании обрабатывать информацию не «вчерашнюю», а текущую, в буквальном смысле иметь «обработку в онлайне», причём по отношению к информации достаточно больших объёмов. И здесь, хотим мы этого или нет, мы вынуждены искать новые инструменты.

Какие?

«Если бы сейчас начали сначала, снова выбрали бы Scala»: Tinkoff.ru о Scala-разработке

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


У Scala репутация языка, с которым сложности подстерегают с разных сторон: порог входа выше, чем у Java, а разработчиков куда меньше (так что может быть сложнее собрать команду). В итоге российские компании нечасто решаются его использовать. Но в Tinkoff.ru активно используют далеко не первый год — и мы решили расспросить компанию, как на практике живётся с Scala. Поскольку сложности могут быть и техническими, и кадровыми, вопросы задали двум разным сотрудникам: руководителю отдела разработки программных интерфейсов Роману Докучаеву и руководителю HR-проектов Ольге Шпунтенко.

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

Скажи «нет» Electron! Пишем быстрое десктопное приложение на JavaFX

Время на прочтение13 мин
Охват и читатели90K
В последнее время на программистских форумах развернулись неслабые дискуссии (для примера см. здесь, здесь и здесь, и эта сегодняшняя) об Electron и его влиянии на сферу разработки десктопных приложений.

Если вы не знаете Electron, то это по сути веб-браузер (Chromium) в котором работает только ваше веб-приложение… словно настоящая десктопная программа (нет, это не шутка)… это даёт возможность использовать веб-стек и разрабатывать кросс-платформенные десктопные приложения.

Самые новые, хипстерские десктопные приложения в наше время сделаны на Electron, в том числе Slack, VS Code, Atom и GitHub Desktop. Необычайный успех.

Мы писали десктопные программы десятилетиями. С другой стороны, веб только начал развиваться менее 20 лет назад, и на протяжении почти всего этого времени он служил только для доставки документов и анимированных «гифок». Никто не использовал его для создания полноценных приложений, даже самых простых!
Читать дальше →

Онлайн-квест от MBLTdev. Призы от JetBrains

Время на прочтение1 мин
Охват и читатели17K
Я хочу сыграть с тобой в одну игру…Твоё первое задание — найти вход в квест. Ищи подсказку в видео.


Самые быстрые получат призы:

— годовые подписки на любой продукт от JetBrains,
— классные футболки,
— билеты и скидки на конференцию мобильных разработчиков MBLTdev 2017.

UPD: Подведём итоги и раздадим призы в понедельник 9-го октября.

Иван Пономарёв и Николай Поташников об отображении табличных данных, Celesta и Flute на jug.msk.ru

Время на прочтение2 мин
Охват и читатели2.6K
21 сентября 2017 года на встрече московского сообщества Java-разработчиков выступили Иван Пономарёв и Николай Поташников. Иван — с докладом «Скрытая сложность повседневной задачи: отображение табличных данных», совместный рассказ обоих докладчиков — про программные продукты Celesta и Flute открытой платформы для создания бизнес-логики в Java-экосистеме.


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