Обновить
512K+

Java *

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

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

Статистика кода JDK 7

Время на прочтение7 мин
Охват и читатели16K
Захотелось получить статистику Java исходников и узнать, сколько в среднем бывает параметров у методов, методов в классах, конструкторов и т. д. Вопрос не совсем праздный, потому что на основе этих данных можно вычислить оптимальный размер по умолчанию для контейнеров для этих сущностей в программной модели кода (AST), чтобы сэкономить память. В частности, речь идет о проекте Spoon. С помощью этой библиотеки я и провел анализ, кстати.

Что может быть логичнее, чем протестировать статистику исходников JDK, чтобы делать некие предположения о любом Java-коде. Попутно я собрал самые необычные экземпляры — например, методы с наибольшим кол-вом параметров.
Читать дальше →

Удаленное управление роботом Lego Mindstorms по JMX и IP Video

Время на прочтение7 мин
Охват и читатели21K
Основной модуль конструктора Lego Mindstorms EV3 может работать с прошивкой leJOS, позволяющей запускать Java-приложения. Специально для этого Oracle выпустил и поддерживает отдельную версию полноценной Java SE.

Нормальная JVM позволила мне использовать встроенный в нее протокол Java Management Extensions (JMX), чтобы реализовать удаленное управление роботом-манипулятором. Для объединения управляющих элементов, показаний датчиков и картинок с установленных на роботе IP-камер используется мнемосхема, сделанная на платформе AggreGate.


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

Elasticsearch — сортируем выдачу руками

Время на прочтение5 мин
Охват и читатели20K
Благодаря своей гибкости и масштабируемости, сегодня Elasticsearch находит применение во все более широком круге задач — от поиска до аналитики. Однако есть ряд вопросов, с которыми Elasticsearch не справится в одиночку.

Например, ваша поисковая выдача меняется от пользователя к пользователю. И сортировка, основанная только на данных самого документа (TF/IDF или сортировки по любым полям документа), не дает нужного результата. При этом в поисковой выдаче интернет-магазина вы хотите показать товар, который пользователь уже смотрел на первых позициях.

Другой пример. Параметр, влияющий на сортировку, меняется слишком часто: Elasticsearch построен на базе Lucene и использует append-only хранилище, обновление документов фактически отсутствует. Каждое изменение документа приводит к его переиндексации и влечет периодическое перестроение сегментов хранилища. Иными словами, если вы хотите отсортировать выдачу по количеству просмотров документа на сайте, то самое тупое, что можно сделать, — это записывать каждый просмотр в Elasticsearch. И здесь, похоже, назрел вопрос использования внешнего хранилища мета-информации, используемой для сортировки документов.


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

Автоматическое тестирование JavaFX приложений

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


Добрый день!

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

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

Обход CloudFlare ScrapeShield в Java (Android)

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


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

Причина достаточно тривиальна — являясь автором Android-клиента к весьма нишевому сайту, я в то же время не вхожу ни в число его администраторов, ни в число соучредителей. Таки образом ни о каких решениях руководства сайта я не осведомлён до момента их фактического вступления в силу.

Не так давно на этот сайт началась DDoS-атака, и администрация включила DDoS-защиту от CloudFlare. Соответственно, приложение-клиент, использовавшее до этого стандартные механизмы авторизации через POST+Cookie, перестало авторизовывать пользователей. Общение с администрацией ни к чему не привело — «что мы можем сделать, лучше уж без мобильных клиентов, чем вообще никак».

Естественно, всё это начало отражаться на рейтингах и породило весьма нелестные отзывы.
Читать дальше →

Как мы работаем со справочниками на интеграционной шине

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

Принципы решения


При интеграции корпоративных систем возникает задача управления справочными данными. Для решения этой задачи часто используется Master Data Managment(MDM). MDM — это хранилище, которое содержит “эталонные” справочные данные, так называемые “золотые записи”. Справочники в MDM содержат очищенные полные и непротиворечивые данные.

Часто MDM используется как платформа для централизованного ведения справочников. Ввод и валидация справочных данных производится в MDM, а оттуда они реплицируются в IT-системы. Такой подход имеет несколько проблем

  • Создать эталонную модель данных, которая подойдет всем системам не так-то просто.
  • Справочные данные становятся оторванными от приложений.
  • Репликация данных из MDM часто требует серьезной доработки систем. Для систем “из коробки” такая доработка может быть очень дорогой.

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

Разрабатываем ИК-пульт ДУ для фотоаппарата

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


После прочтения статьи на Хабре «Делаем ИК-пульт ДУ для фотоаппарата», захотелось поделиться опытом разработки ИК-пульта ДУ для фотоаппаратов в виде приложения под Android (от идеи до публикации).
Читать дальше →

MyBatis и OSGi

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

Поднятие MyBatis


Мало кто предполагает, какие трудности постигают нас на пути внедрения уже знакомых технологий в новые системы. Одна из не очевидных трудностей — это подружить MyBatis с OSGi компонентами. Самая неординарная трудность — это спрятать свои классы в приватную часть системы. Мы ведь не хотим выставлять свои объекты наружу. Как в корпусе телефона прячем свою SIM карту и MicroSD карту. Да, мы знаем, что эти штуки есть, но ни кому показывать не хотим. То же самое с объектами внутри OSGi компонента (bundle).

Так вот, MyBatis, будучи сторонней библиотекой, не может достучаться до приватных объектов. А нам так хочется закрыть от всех свои тайны. Аж руки чешутся и стул скрипит от нетерпения.
Читать дальше →

Анонс конференции ThinkJava #2

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


5 июня в Харькове пройдет вторая конференция разработчиков ThinkJava #2. Здесь вы сможете познакомиться с новыми технологиями и методологиями, больше узнать о возможностях мира Java и NoSQL, об отладке Java-приложений с помощью инструментария JDK и подключении к JVM «на лету», и многом другом.
Читать дальше →

Пишем свой Spliterator

Время на прочтение11 мин
Охват и читатели58K
Многие из вас уже попробовали на вкус Stream API — потоки Java 8. Наверняка у некоторых возникло желание не только пользоваться готовыми потоками от коллекций, массивов, случайных чисел, но и создать какой-то принципиально новый поток. Для этого вам потребуется написать свой сплитератор. Spliterator — это начинка потока, публичная часть его внутренней логики. В этой статье я расскажу, как и зачем я писал сплитератор.
Читать дальше →

Обзор Java App Bundlers

Время на прочтение6 мин
Охват и читатели9K
Итак, в прошлый раз я писал об инструменте для сборки приложений JavaFXPackager. Там было 2 каких-то способа собрать приложение, но ни один из них не мог быть удобно вызван просто из кода. Но мы же труЪ Java-программисты. И вот для таких труЪ-программистов с версии 8u20 и был создан в JDK специальный API в JavaFXPackager, который позволяет просто вот так взять и собрать бандл из ваших бинарников. Одна проблема — этот API незадокументирован. Но не беда, разберёмся.
Читать дальше →

Состоялась встреча по продуктам Atlassian в Москве

Время на прочтение4 мин
Охват и читатели8.5K
21 апреля мы организовали в Mail.Ru Group мероприятие для обмена опытом использования JIRA и других продуктов Atlassian — Moscow Atlassian Meetup.

Событие было запланировано на 19 часов, но посетители начали собираться уже за полчаса до начала. В ожидании докладов кто-то подключался к Wi-Fi, а кто-то наливал себе кофе. Когда все собрались, зал был полон — на встрече было более 100 человек, еще 200 наблюдали за происходящим с помощью онлайн-трансляции. В этом посте я хочу опубликовать видеозаписи и слайды докладов, а также подробнее рассказать о самих докладах.

Автоматизация работы редакции контентных проектов
Андрей Молчанов, Mail.Ru Group




Первый доклад на конференции был мой. Я рассказывал о том, каким образом с помощью JIRA и разработанного нами плагина удалось автоматизировать часть рутинной работы редакции.

Редакция — это люди, которые обеспечивают наши контентные проекты (Леди Mail.Ru, Hi-Tech Mail.Ru и др.) материалами. Обеспечивают — значит заказывают статьи у внешних и внутренних авторов, оплачивают их, размещают на сайте и затем анализируют статистику.

Сначала мы реализовали учет каждого материала — от заказа до оплаты в виде JIRA Issue. Это позволило вести списки статей на дашборде вместо традиционных записей в блокноте или почте. Кроме того, мы подключили наш Calendar Plugin для наглядного отображения редакционного плана.
Читать дальше →

Navigation Drawer + Fragments: допиливаем гугловский гайд

Время на прочтение3 мин
Охват и читатели22K
Берем пример по ссылке – работает отлично. Добавляем одну ма-а-аленькую строчку:

fragmentTransaction. addToBackStack(null);

и тут же выясняется, что заголовок в ActionBar при возврате не обновляется, равно как и позиция в самом Navigation Drawer… Казалось бы – можно поручить обновление заголовка самому фрагменту, но, во-первых, это не тривиально, т.к. из FragmentActivity нет прямого доступа к getSupportActionBar(), а, во-вторых, надо же еще как-то Navigation Drawer извещать о том, что подсветить следует совсем другой пункт списка. А какой?



Мое решение ниже.
Читать дальше →

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

Как прошел JPoint 2015: полный аншлаг и любопытные подробности

Время на прочтение5 мин
Охват и читатели13K
Java-конференция JPoint собрала в Москве рекордное количество зрителей: более 1000 человек. Доклады представляли одновременно в четырех залах «Radisson Славянской» (это не считая «экспертных зон» в холле), и все они оказывались заполнены. Это при том, что речь о хардкорном техническом мероприятии: случайному человеку, не связанному с Java, здесь делать было нечего. Что именно собрало столько зрителей?



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

Spring Boot: от начала до продакшена

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

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

Анонс четвертой встречи Java User Group EKB

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

JUG.EKB — Java User Group Екатеринбурга, на встречах JUG.EKB мы обсуждаем различные технологий из мира Java, делимся опытом и пьем кофе во имя Java!
Мы регулярно проводим встречи JUG.EKB с лекциями Java экспертов на самые интересные темы.
Наш сайт jugekb.ru, сообщество в ВК — vk.com/jugekb.

Приглашаем всех java разработчиков на четвертую встречу JUG.EKB.
Подробности внутри

Открыто видео курса «Multicore programming in Java» на русском (30+30 часов)

Время на прочтение2 мин
Охват и читатели61K
Добрый день.

Я занимаюсь IT-преподаванием. Читал Java Core (материалы тут).
Сейчас написал и продаю курс «Scala for Java Developers»

В этом посте решил открыть видео двух курсов (проходивших в режиме вебинаров) по многопоточности под JVM (это 16 + 16 двухчасовых лекций).

Больше о материалах (программа, полезные ссылки) можно прочитать в постах-объявлениях о вебинарах (Программа курса «Multicore programming in Java» (25 марта 2014), Программа и материалы курса «Multicore programming in Java» (31 июля)).

Курс рассчитан на слушателей, которые начинают изучать многопоточность с нуля (после крепкого курса Java Core, Middle Developer из чистого web-а или перешедшим из скриптовых/интерпретируемых языков программирования). Он не будет подходить тем, кто перешел из «суровых» С/С++ или ищет «академической высоты».

Детально рассматриваются темы Hardware, New Java memory Model, java.util.concurrent (atomics, blocking queues, thread pool, locks, synchronizers), message passing alternative, software transactional memory alternative, Java 7 Fork/Join, Java 8 Parallel Streams (+Lambdas, +Stream API), CSP/JCSP alternative

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

93 видео-лекции по Scala

Время на прочтение4 мин
Охват и читатели39K
В ходе подготовки спецкурса «Scala for Java Developers» под платформу онлайн-обучения UDEMY, я анализирую другие «лекционные» видео. В библиотеке накопилось какое-то количество ссылок на дельных учебные материалы по Scala (видео на английском).

Для большинства видео указано количество просмотров. Надо сделать несколько замечаний:
1. Количество просмотров не является главным критерием качества и полезности видео, но этот может служить каким-то указателем на ценность.
2. Здесь не все популярное видео, что я встречал, а лишь то, что ценно по моему личному мнению.
3. Если кто-то знает еще хорошее видео — пишите, добавлю в списки.


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

Немного Fitbit прохладной весной

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


DataArt, как и весь мир, с интересом наблюдает за новинками в сфере носимой электроники. В этой статье мы хотели бы рассмотреть разработку для Fitbit.

О Fitbit

Сейчас Fitbit выпускает множество самых разных интересных девайсов: клипсы Zip и One, браслеты Flex, Charge, ChargeHR и Surge и умные весы Aria. Последние новинки — ChargeHR и Surge.

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

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

Веб на чистой Java. Изучаем Vaadin — крутой фреймворк для создания веб-приложений

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


В клиент-серверной архитектуре место Java-приложения — преимущественно на серверной стороне, при этом веб-интерфейс пишется отдельной группой фронт-енд разработчиков на JavaScript. Java не предлагает адекватных средств для создания современного веб-интерфейса (когда в последний раз ты видел Java-апплет..?) ни с точки зрения дизайна, ни с точки зрения реализации клиент-серверного взаимодействия.

А что, если бы все клиент-серверное приложение целиком писалось на Java, но его клиентская часть была бы «нативной» для браузера и соответствовала бы самым современным представлениям о юзабилити?
Читать дальше →