Обновить
128K+

Java *

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

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

Еще одна библиотека для работы с 433 MHz устройствами

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

Хочу поделиться JAVA библиотекой для работы с радио-устройствами домашней автоматизации (обычно 433.92 МГц) над которой я работаю в последнее время. Она еще достаточно сырая для серьезного использования, но для домашних поделок — в самый раз
Адрес на github — github.com/eschava/rf-protocols-java

Предпосылки к созданию


После покупки Cubietruck решил перенести на него все задачи умного дома, которые выполнялись на Ардуино. В основном это прием и передача радио-сообщений устройствам домашней автоматизации (розетки, датчики, отопление)
Все, что было найдено в сети, было либо сделано только для Raspberry Pi, либо слишком заточено под какую-то определенную функциональность. Поэтому решил реализовать все самому, используя привычный язык разработки (Java) и сделать как можно более гибким и расширяемым (реестр фабрик и все такое, как это принято в джаве)

Для работы с RF устройствами посредством GPIO портов выбрал достаточно малоизвестную, но многообещающую библиотеку libbulldog которая позволяет абстрагироваться от платформы на которой все запущено. На данный момент поддерживаются (теоретически) Raspberry Pi, BeagleBoard, Cubieboard, но тестировалось только на Cubieboard3 (aka Cubietruck) который есть у меня в наличии.
Также поддерживается (опять же теоретически) популярная библиотека для Raspberry PI Pi4j, но, к сожалению, не было возможности опробовать ее на практике

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

Домашняя бухгалтерия на платформе CUBA

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


Цель этой статьи — рассказать о возможностях платформы CUBA на примере создания небольшого полезного приложения.
CUBA предназначена для быстрой разработки бизнес-приложений на Java, мы уже писали о ней несколько статей на Хабре.

Обычно на платформе строятся либо реальные, но слишком большие и закрытые информационные системы, либо приложения в стиле “Hello World” или искусственные примеры типа “Библиотеки” на нашем сайте. Поэтому некоторое время назад я и решил попробовать убить сразу двух зайцев — написать для себя полезное приложение и выложить его в общий доступ как пример использования нашей платформы, благо предметная область простая и всем понятная.

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

Кейс Crocs: оптимизация продаж на сто миллионов. Часть 2

Время на прочтение7 мин
Охват и читатели3.1K
В прошлом посте мы начали рассказ о нашей оптимизации чекаут-процесса для Crocs и ознакомились с самыми широко распространенными вариациями тестирования онлайн ресурсов: А/Б и многовариантным тестированием. Стоит отметить, что в случае e-commerce основой успеха в этой части является возможность эффективного тестирования всего сайта и отдельных его элементов. В свою очередь, возможность тестирования и улучшения результатов тестирования напрямую зависит от технических возможностей отдельного взятого веб-ресурса. В проектах с большим оборотом функционал тестирования становится архиважным. Сегодня же мы расскажем об организации фреймворка для автоматизированного регрессионного тестирования, который был внедрен для Crocs, об использованных при этом ключевых технологиях, и о реализации самого кода.


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

Основные отличия Java IO и Java NIO

Время на прочтение7 мин
Охват и читатели249K
Когда я начал изучать стандартный ввод/вывод в Java, то первое время был немного шокирован обилием интерфейсов и классов пакета java.io.*, дополненных еще и целым перечнем специфических исключений.

Потратив изрядное количество часов на изучение и реализацию кучи разнообразных туториалов из Интернета, начал чувствовать себя уверенно и вздохнул с облегчением. Но в один прекрасный момент понял, что для меня все только начинается, так как существует еще и пакет java.nio.*, известный ещё под названием Java NIO или Java New IO. Вначале казалось, что это тоже самое, ну типа вид сбоку. Однако, как оказалось, есть существенные отличия, как в принципе работы, так и в решаемых с их помощью задачах.

Разобраться во всем этом мне здорово помогла статья Джакоба Дженкова (Jakob Jenkov) – “Java NIO vs. IO”. Ниже она приводиться в адаптированном виде.

Поспешу заметить, что статья не является руководством по использованию Java IO и Java NIO. Её цель – дать людям, начинающим изучать Java, возможность понять концептуальные отличия между двумя указанными инструментами организации ввода/вывода.
Читать дальше →

Consulo — IDE где Java и C# живут вместе

Время на прочтение3 мин
Охват и читатели54K
Здравствуйте. Прошло много времени после моих постов на хабре (тык, тык) на тему Consulo. Ниже расскажу, что изменилось за это время.

Для тех, кто пропустил мои посты:
Consulo — это форк IntelliJ IDEA Community Edition, который имеет поддержку .NET(C# на текущий момент), Java, Javascript(NodeJS), и многое другое. Проект собрал множество открытых плагинов в себе. При этом код остался открытым.



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

Интеграция Raspberry Pi с NetBeans 8.0

Время на прочтение3 мин
Охват и читатели9.7K
В марте этого года вышла новая версия NetBeans 8.0. Одной из её особенностей стала возможность работы через интерфейс NetBeans с встроенными версиями Java SE и ME. Разработчиками IDE от Oracle в качестве тестовой платформы предлагается использовать Raspberry Pi с устанавливаемой удалённо Java SE Embedded. Прежде я уже публиковал два перевода из журнала MagPi о Java программировании на Raspberry Pi, но в основном они были восприняты негативно, так как читатели не увидели в них чего-то особенного, характерного именно для такой связки, как Java и Raspberry Pi. Надеюсь, что после знакомства с этим уже оригинальным руководством, мне удастся немного смягчить позицию читателей в вопросе особенности подхода к Java программированию на встроенных системах типа Raspberry Pi.

Подготавливаем Raspberry Pi


Настроек Raspberry Pi немного. Ваш Raspberry Pi должен быть доступен в сети через SSH, а для вас на нём для чтения и записи должна быть доступна рабочая директория.

Подготавливаем NetBeans


Перед тем, как устанавливать новую платформу Java в NetBeans, я рекомендую прослушать небольшой доклад Льва Приймы по теме Java SE Embedded 8.


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

Поговорим за Hadoop

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

Введение

Как человеку с не очень устойчивой психикой, мне достаточно одного взгляда на картинку, подобную этой, для начала панической атаки. Но я решил, что страдать буду только сам. Цель статьи — сделать так, чтобы Hadoop выглядел не таким страшным.

Что будет в этой статье:

  • Разберем, из чего состоит фреймворк и зачем он нужен;
  • разберем вопрос безболезненного развертывания кластера;
  • посмотрим на конкретный пример;
  • немного коснемся новых фич Hadoop 2 (Namenode Federation, Map/Reduce v2).


Чего не будет в этой статье:

  • вообще статья обзорная, поэтому без сложностей;
  • не будем лезть в тонкости экосистемы;
  • не будем зарываться глубоко в дебри API;
  • не будем рассматривать все околоdevops-задачи.

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

Возвращаем дочерний класс из родительского. Факультатив

Время на прочтение3 мин
Охват и читатели23K
С какой целью это может понадобиться? Например, если хочется использовать "текучий интерфейс". Правда, если часть методов разместить в родительском классе, то для них не получится сделать полноценный «текучий интерфейс» — эти методы требуется приводить (кастовать) к дочернему.

Казалось бы, печаль да и только, но если очень хочется, то ведь можется. Поэтому, давайте слегка нарушим правило и «известим» родительский класс о его наследниках.
Читать дальше →

Hibernate и PostgreSQL JSON Type

Время на прочтение3 мин
Охват и читатели29K
Привет хабр! В этой статье не будет глубокого анализа json типа в PostgreSQL или очередных бесполезных попыток сравнить данную возможность PostgreSQL с NoSQL базами данных типа MongoDB. Я просто расскажу про то, как использовать Hibernate и PostgreSQL json. Думаю кому-нибудь это может оказаться полезно.

Объект внутри сущности


Предположим у вас есть реляционная модель данных. Вполне может возникнуть ситуация, что для некоторых из сущностей необходимо хранить какой либо объект(документ, если хотите). Конечно можно расширить для этого объекта модель данных одной(а может и несколькими) сущностью, или просто хранить этот объект в виде массива байт. Но у PostgreSQL уже достаточно давно появился тип данных json способный хранить json объект в соответствии с RFC 4627. Стало интересно, как это можно использовать, и какие возможности это может дать. При первом обращении к google я нашел несколько неструктурированных постов и Q&A которые что-то объясняли, но не давали полной картины. Немного потыкавшись и разобравшись что к чему, я пришел к выводу что использование этих полей очень удобно, и решил создать маленькую библиотечку, которая упростит использование json типов. Ниже я расскажу как ей пользоваться, ну и еще немного сравнения с первыми приходящими на ум альтернативами.
Читать дальше →

Простой USSD-запрос в Android 4.0+

Время на прочтение3 мин
Охват и читатели39K
В Android до сих пор нет API для USSD-запросов. Баг висит уже 6 лет!
Я находил разные способы создания и получения информации из USSD запросов, но в итоге ни один не устроил.
Затем я нашел упоминания о том, что с помощью обновленных в Android 4.0 служб спец. возможностей можно легко получать содержимое окон и так получить текст из окна и результатом USSD запроса. Попробовал — получается отлично! Без перезагрузок и надежно.
Читать дальше →

Баг Double.parseDouble() в Android

Время на прочтение2 мин
Охват и читатели27K
В поисках эпизодически вылезающей ошибки, наткнулся на неожиданное поведение метода Double.parseDouble(). Исполнение кода
Double.parseDouble("4cff9d79-a696-4dfc-89f9-a265ae117257");

не привело к выбрасыванию исключения NumberFormatException. Код вполне корректно отработал и выдал результат — Infinity.
Читать дальше →

Java и облако Microsoft — краткие очерки

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

Что нужно для того, чтобы запустить свое приложение Java в облаке Microsoft? Сколько усилий надо затратить и человекочасов разработчика для того, чтобы хотя бы протестировать проект и решить, стоит ли вообще его мигрировать, или стоит подождать или вообще отложить переезд. Эта небольшая статья призван заполнить нишу размером в микрон и провести краткий экскурс в сегодняшнюю ситуацию с Java на Microsoft Azure.
 
Читать дальше →

Анонсированы новые функции Java 9

Время на прочтение2 мин
Охват и читатели58K
Компания Oracle серьёзно взялась за разработку JDK9 и опубликовала первый список «предложений на улучшение» (JEP), в которых описаны новые функции Java 9. Список невелик и консервативен, но его наверняка дополнят в предстоящие почти два года до выпуска Java 9.

Программные интерфейсы


Представлены три новых программных интерфейса.

  • Обновление Process API для лучшего взаимодействия с не-Java процессами операционной системы (сейчас разработчики часто вынуждены использовать нативный код).
  • Новый HTTP-клиент с поддержкой HTTP 2.0, веб-сокетов и заменой устаревшему HttpURLConnection.
  • Облегчённый JSON API для обработки и генерации JSON-документов и потоков данных.

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

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

Войти в IT: Долгая дорога в Java

Время на прочтение7 мин
Охват и читатели115K
Друзья, рады представить статью из цикла «Войти в IT», который уже давно публикуется в нашем корпоративном блоге. Это не «серьезные» технические статьи (такие тоже будут), а рассказы наших синьоров об их становлении в IT. Ведь иногда хочется просто взглянуть на индустрию глазами коллег и понять, как именно из молодых практикантов и «зеленых» джуниоров получаются эксперты мирового уровня. Что ж, дадим слово одному из наших героев.

image

Всем привет! Меня зовут Родион Горковенко, и я… нет, не то, о чем вы подумали. Я — Senior Java Developer в компании DataArt. Хочу поделиться историей, как я дошел до жизни такой и, возможно, немного подсказать молодым специалистам, как выжить в беспощадных джунглях Java и стать полноценным цифровым хищником.

Введение (красивая заставка)

Сначала я программировал на C. Были и другие языки, но большую часть времени (несколько лет) я писал именно на C. Поэтому и моя карьера в IT началась с этого языка. Однако область применения его ограничена сравнительно низкоуровневым софтом — я писал на нtv для микроконтроллеров, когда разрабатывал электронику, и позже — для POS-терминалов.

Ответ на вопрос «куда двигаться дальше?» был для меня не очень ясен. Можно, конечно, было углублять изучение C++, но небольшой опыт работы в команде на C/C++ оставил несколько негативное впечатление. Альтернативой была Java. О ней я не знал почти ничего, разве что, пару тестовых приложений для мобильников с JavaME написал еще в институте — конечно, не разбираясь подробно в нюансах языка.

Что ж, в течение года посвященного POS-терминалам, у меня было немного свободного времени до и после работы. Гугление подсказало, что нужно скачать Java Development Kit (JDK) с сайта Sun (теперь java.oracle.com) и, в общем, можно начинать.
Читать дальше →

BlueJ — java IDE для новичков

Время на прочтение3 мин
Охват и читатели51K
image
Пару лет назад я начал изучать программирование. Учился я в сфере, вообще не связаной с IT. Поэтому все учил сам. Статьи на хабре, различные туториалы и видеоуроки. После долгого гугления, я твердо решил, что хочу изучать Java. Причина такого выбора была банальна. Я нашел отличный онлайн курс, который был мне понятен.
Как в большинстве курсов, там использовался Eclipse IDE. Друзей-программистов, которые могли бы мне помочь, не было. И я с ужасом вспоминаю, как тяжело мне пришлось. Читая книгу и смотря уроки, я все понимал. Но почему-то, в эклипс это не запускалось. Те вещи, которые кажутся такими простыми для меня сейчас, на тот момент были непосильны. Иногда, изучая одну часть чего-либо, хочется полностью абстрагироваться от другой. На тот момент, моей задачей было понять, что такое переменная, научиться писать циклы, попробовать конструкцию if-else. А мне пришлось принимать решение, какой вид проекта я создаю. Запускать как программу или Апплет. Импортировать библиотеки и добавлять их в classpath. И тут часто встречаются моменты, которые на уроках пропускаются. А если ты совершишь маленькую ошибку, твое приложение может вообще не запуститься.

Вывод такой, что полному новичку нелегко разобраться в полноценном IDE, таком как Eclipse, NetBeans или IDEA. Я знаю много людей, которые отбросили идею программировать после первых попыток. Не из-за того, что не понимали концепций девелопмента, а именно из-за тяжелой настройки и разных конфигурационных моментов, с которыми они столкнулись в самом начале.
Так вот недавно, на сайте Oracle, я увидел рекламу: Bluej — Java IDE для новичков. Стало интересно, скачал, попробовал… И согласился с рекламой, что с таким IDE новичку будет, несомненно, проще изучать азы языка Java. Считайте эту статью небольшим введение в данный продукт.
Читать дальше →

Использование liquibase плагина для Maven

Время на прочтение2 мин
Охват и читатели23K
Привет хабр, много было уже на писано на тему liquibase и Maven, но я не смог найти ничего про liquibase-maven-plugin и его настройку, а ведь это очень удобный плагин. Вот я и решил написать о том, как его настроить.

Плагин liquibase-maven-plugin предназначен для управления liquibase из Maven. Вот пример команды mvn liquibase:update, для обновления базы данных.

Для начала предлагаю разобраться с тем, что такое Maven и liquibase.



Мавен — это инструмент для сборки Java проекта: компиляции, создания jar, создания дистрибутива программы, генерации документации. Более подробно о самом Maven можно прочитать в статье Apache Maven — основы



Liquibase — это система управления миграциями базы данных. Для ознакомления с liquiabase так же можно прочитать в статье Управление миграциями БД с Liquibase

После того, как мы разобрались с Maven и liquibase, можно перейти к созданию maven проекта и настройке liquibase плагина.
Читать дальше →

Сравнение скорости работы ArrayList и LinkedList на практике

Время на прочтение3 мин
Охват и читатели77K
Приветствую Вас!

ArrayList и LinkedList — знают все. В каких ситуациях работает быстро, а в какой ситуации работает медленной тот или другой список — знают тоже все, кто в теории, а кто на практике. Данный пост подходит для тех, кто только начинает изучать Java, или кто слышал, о том «что быстрее», но не видел на практике.
Читать дальше →

Еще раз о видеонаблюдении, камерах, RTSP, onvif. И «велосипед»!

Время на прочтение16 мин
Охват и читатели199K
Информация уже была на хабре: habrahabr.ru/post/115808 и habrahabr.ru/post/117735
Там описывается Motion-JPEG (MJPEG).
Мир не стоит на месте и видео наблюдение тоже. Всё чаще и чаще используются другие кодеки.
Тут описываю свой опыт в этом «мире».
Профессионалы ничего нового не узнают, другим может будет просто интересно.
Разрабатывалось всё в качестве обучения и тренировки.
Речь пойдет о RTP, RTSP, h264, mjpeg, onvif и всём вместе.
Перед прочтением обязательно прочитать статьи другого автора, указанные выше.
Читать дальше →

Джокер поднимает ставки

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

Итак, близится осень, а значит, вместе с ней близится и Java-конференция Joker 2014. Нынешний Джокер, второй по счёту, пройдёт в Питере 20-21 октября. На следующий день, 22 октября состоится традиционный Unconference, а 23 октября мы проведём JUG с кем-нибудь из наших спикеров.

Чем же интересен Joker образца 2014 года? Прежде всего тем, что подбирается очень и очень вкусный список тем, а от списка докладчиков некоторые особенно впечатлительные падают в обморок и спрашивают, возможно ли такое. Отвечаем: возможно!



Joker 2014 — это главное Java-событие года в России:
  • Более 30 докладов от экспертов мирового уровня. Если докладчик — не эксперт мирового уровня, то скорее всего, он не попадёт к нам в программу.
  • Возможность пообщаться с разработчиками самой технологии Java. Причём как из OpenJDK/OracleJDK, так и альтернативных реализаций: Azul, Excelsior, Red Hat
  • Огромная русскоязычная Java-тусовка. Ваши друзья, сокурсники, бывшие, нынешние и будущие коллеги.
  • Выступления по-настоящему больных на голову творческих людей, среди которых Влад Горелов со своим научно-техническим рэпом и невероятный супергерой Джигурдокер.


Интересно? Тогда добро пожаловать под кат!
Why so seriuos?

Реактивные акторы на java

Время на прочтение17 мин
Охват и читатели43K
Существует много технологий для организации параллельных вычислений, одна из наиболее перспективных и простых (да-да) — модель акторов. Она позволяет частично избавится от насущных проблем параллелизма, вроде состояния гонки, блокирующих ожиданий окончания операций, бесконечных мьютексов и синхронизаций и многого иного. Так же подобный подход существенно облегчает распараллеливание кода.

Знакомится будем на примере фреймворка akka используя язык java (сам akka написан на scala).
Читать дальше →