Обновить
256K+

Java *

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

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

Делаем UI плагина в IntelliJ Idea «как у maven'a»

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

Предыстория


Встала задача создать для разработчиков и QA удобный способ стартовать порядка 20 серверных приложений, живущих в общем репозитрии (Spring с XML конфигурацией и общим для все частей приложения бутстрап классом).


Как сделать нечто удобное человеку, который последний раз GUI рисовал в Borland Delphi 6.0? Взять что-то уже готовое и приспособить для своих нужд, ну и раз уж будущие пользователи работают в IntelliJ Idea, появилась мысль соорудить плагин, который будет выглядеть и вести себя так, как это делает Maven Integration Plugin.


image


Под катом классы и некоторые утилитарные методы, которые помогут это сделать.

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

Краткий обзор Kotlin и сравнение с C#

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

От автора:


Эта статья представляет собой заметки на коленке и является скорее кратким обзором Kotlin, включая небольшое сравнение с языком С# с точки зрения синтаксиса. Это мое мнение и мои размышления по поводу этого сравнительно молодого языка в мире Java-платформы, который на мой взгляд имеет хорошие шансы добиться успеха.

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

Введение в RxJava: Создание последовательности

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

Теперь, когда мы понимаем основные принципы Rx, настало время научиться создавать и управлять последовательностями. Стиль управления последовательностями был позаимствован у оригинального C# LINQ, который в свою очередь был вдохновлен функциональным программироанием. Мы поделим все операции по темам, которые отсортированы в порядке возрастания сложности операций. Большинство операторов Rx управляют уже существующими последовательностями, но для начала мы научимся их создавать.

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

Сортировка слиянием по-простому

Время на прочтение4 мин
Охват и читатели230K
Кто-то сказал однажды, что
...any scientist who couldn't explain to an eight-year-old what he was doing was a charlatan.

Оказывается, это был Курт Воннегут.

Я не стремился доказать это высказывание. Я стремился опровергнуть свою тупость.


Допустим у нас есть два массива чисел, отсортированных по возрастанию.

int[] a1 = new int[] {21, 23, 24, 40, 75, 76, 78, 77, 900, 2100, 2200, 2300, 2400, 2500};
int[] a2 = new int[] {10, 11, 41, 50, 65, 86, 98, 101, 190, 1100, 1200, 3000, 5000};

Необходимо слить их в один упорядоченный массив.

int[] a3 = new int[a1.length + a2.length];

Это задача для сортировки слиянием.

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

Чего нам не хватает в Java

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


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

Отсутствуют материализованные дженерики (reified generics). Об этом не писал только ленивый, причём большинство комментариев свидетельствуют о непонимании сути затирания типов. Если Java-разработчик говорит: «Я не люблю затирание типов», то в большинстве случаев это означает «Мне нужен List int». Вопрос примитивной специализации дженериков лишь косвенно связан с затиранием, а польза от дженериков, видимых в ходе исполнения, сильно преувеличена молвой.

Беззнаковые вычисления (unsigned arithmetic) на уровне виртуальной машины. Отсутствие в Java поддержки беззнаковых арифметических типов вызывает недовольство разработчиков уже многие годы. Но это является обдуманным решением создателей языка. Наличие лишь знаковых вычислений существенно упрощает язык. Если сегодня начать внедрять беззнаковые типы, то это повлечёт за собой очень серьёзную переработку Java, что чревато массой больших и маленьких багов, которые будет трудно вылавливать. Заодно сильно возрастает риск дестабилизации всей платформы.

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

Здесь мы не будем вдаваться в подробности возможного Java-синтаксиса для обсуждаемой функциональности. К сожалению, подобные обсуждения вообще часто скатываются к спорам на тему синтаксиса, хотя куда важнее семантика.
Читать дальше →

Большой JVM-опрос: версии Java, альтернативные JVM-языки, версии Java EE

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

С прошлого аналогичного опроса прошло больше года, и пришла пора его повторить и расширить.

Ретроспектива:
Какие версии Java вы используете? — 18 февраля 2015
Какие версии Java вы используете? — 14 февраля 2014

Опросы под катом

F.A.Q. по Java-конференции для студентов в Москве

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


В последнее время мы получаем множество запросов по JPoint 2016 Student Day — Java-конференции для студентов, которую мы проведем в Москве уже в следующее воскресенье, 24 апреля.

Среди наиболее часто задаваемых вопросов — следующие:
  • зачем мы делаем конференции для студентов?
  • откуда взялось возрастное ограничение на участников — 25 лет?
  • чем конференция отличается от «взрослого» JPoint?
  • будет ли онлайн-трансляция?


В этом посте я постараюсь расставить все точки над i и объяснить, что к чему.
Читать дальше →

JetBrains разыскивает технического евангелиста с опытом Java

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

Меня зовут Андрей Чепцов, я работаю в JetBrains менеджером по маркетингу IntelliJ IDEA. JetBrains разрабатывает инструменты для программистов: IntelliJ IDEA, ReSharper, TeamCity, Kotlin и другие. Хотя я отвечаю за маркетинг продуктов, моя должность имеет очень опосредованное отношение к маркетингу в традиционном понимании этого слова. Мы уважаем разработчиков и не опускаемся до манипулятивного маркетинга. Лучший маркетинг наших продуктов – всегда честный рассказ о том, как они работают и как их использовать. Честность помогает заслужить доверие.

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

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

Микросервисная архитектура, Spring Cloud и Docker

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

Привет, Хабр. В этой статье я кратко расскажу о деталях реализации микросервисной архитектуры с использованием инструментов, которые предоставляет Spring Cloud на примере простого концепт-пруф приложения.



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

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

IoT-решение за 1,5 часа

Время на прочтение13 мин
Охват и читатели29K
Или как мы зажгли лампочку со смартфона через облачную службу на глазах изумленных студентов НГУ.

Полное техническое описание решения мы приводим внизу, а начнем с лирическо-философского пролога.

Глава 1. Лирическая


Практически все наши сотрудники получили высшее образование, и очень многие именно в Новосибирском государственном университете. Кто-то буквально недавно, кто-то – 10-20 лет назад, и все сталкивались с выбором будущей профессии. На последних курсах студентами мы выбирали кафедру, на которой проходили специализацию и защищали дипломы. И была такая замечательная традиция как Дни открытых дверей в институтах, лабораториях и компаниях, где сотрудники рассказывали, чем они занимаются, какие вопросы сейчас стоят перед наукой и технологиями и как можно в этом поучаствовать.

Что самое интересное в Днях открытых дверей для студента? Ходить, задавать вопросы, смотреть на реальных людей, которые занимаются настоящим делом, которое кому-то нужно.
Читать дальше →

Студенческий JPoint — счастливый билет в будущее

Время на прочтение9 мин
Охват и читатели7.3K
Кто ещё не знает, 24 апреля 2016 года в Москве пройдёт JPoint Student Day — конференция для студентов, изучающих Java-технологии и JVM-языки. На ней выступят гуру Java-мира с докладами, которые совсем не похожи на то, что читают на лекциях и рассказывают на практике. Это будет полное погружение в мир настоящей, боевой разработки — для кого-то первое, а для кого-то более тесное знакомство с профессией. Причём это не будет игра в одни ворота — можно будет задавать вопросы докладчикам, общаться с ними в перерывах и любое свободное время, рассказывать о своих проектах и заводить полезные знакомства. Которые, поверьте, вам пригодятся совсем скоро. Но обо всём по порядку.


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

Лямбда-выражения Java 8 — это замыкания?

Время на прочтение6 мин
Охват и читатели60K
Развернутый ответ на вопрос, вынесенный в заглавие поста, приводится в статье Брюса Эккеля в редакции от 25 ноября 2015 года. Мы решили разместить здесь перевод этой статьи и поинтересоваться, что вы думаете о функциональном программировании в Java, а также об актуальности такой книги:



Приятного чтения!

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

Анонс четвертой встречи Java User Group Севастополь

Время на прочтение3 мин
Охват и читатели2.1K
Добрый день!

JUG.SEV — это сообщество java-разработчиков Севастополя. Мы регулярно проводим встречи, на которых вы можете обсудить различные технологии из мира Java, обменяться опытом, а также просто интересно провести время!
Наш сайт jugsev.ru и сообщество в ВК.

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


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

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

Как мы забили на асинхронность при походах на бэкенды

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

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

Java-конференция JBreak: Покорение Сибири

Время на прочтение6 мин
Охват и читатели11K
В Москве и Петербурге большой Java-конференцией никого не удивить: JPoint и Joker регулярно собирают множество зрителей и зазывают известных спикеров. Но теперь JUG.ru замахнулся ещё и на Новосибирск, проведя там JBreak (или, стилизованно, jbreak;).

Такой решительный рывок вызывает множество вопросов. Получилось ли собрать зрителей? Удалось ли сформировать интересную программу, или никого из ярких спикеров в Сибирь не зазвать? И самое любопытное: было ли на сибирской конференции что-то такое, чего нет в Москве и Петербурге?

Все ответы — в подробном тексте под катом.


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

QA: Conference. Множество новостей, новые доклады, прямой эфир

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


Наша конференция по тестированию программных систем начнется совсем скоро и, как известно, пройдет в пяти городах России, а сетка докладов по всем городам практически готова. Самое главное из новостей:

  • Мы делаем онлайн-трансляции с Москвы и Санкт-Петербурга. Всех докладов. По одному билету. С записью мероприятий. Трансляцию могут смотреть посетители любых городов. Главное — наличие билета на свое мероприятие
  • Макс Шоничев . Центр Сетевых Технологий. Расскажет про автоматизацию тестирования серверной части и UI в ОС Linux в условиях жестких рамок настроек безопасности системы. Много хардкора.
  • Артур Орлов и Анастасия Леншмидт. АвтоТрансИнфо. Поговорят про проблемы взаимодействия между отделами QA и Dev и пути их решений
  • Мы с Яном Алексеенко проведем три мастер-класса
  • Алексей Виноградов — наш специальный гость из Германии (он — один из ведущих Radio QA и разработчиков Selenide). Алексей познакомит нас с тремя простыми и практичными видами PageObject архитектуры — Static, Void и Fluent и продемонстрирует использование кодом, сравнит плюсы и минусы подходов
  • Также из Германии — наш гость Slava Schmidt — консультант по Scala. Он нам поведует про Property-Based Testing with API-First Approach
  • Дарья Ефремова из Performance Lab расскажет про методологию Failure Modes & Effects Analysis — подход к тестированию с ретроспективой
  • И многие-многие другие доклады. Зачем мне переписывать их все? Заходите к нам на сайт конференции QAC


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

Диалоги о Java Performance

Время на прочтение11 мин
Охват и читатели38K
Каждый год на JPoint эксперты выступают с хардкорными докладами о производительности Java. И ни разу не было скучно — вопрос сохраняет актуальность на протяжении многих лет. О том, откуда растут ноги у мифов, что делает JVM, как измерять производительность, при чём тут бизнес-требования заказчика и как обойти часть граблей мы поговорили с экспертами, для которых Java performance — не проблема, а работа.

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

Var и val в Java?

Время на прочтение4 мин
Охват и читатели48K
От переводчика: автор этой заметки — Stephen Colebourne, автор библиотеки Joda Time и Java Time API.


Следует ли добавить вывод типов локальных переменных в Java? Как раз сейчас команда разработчиков языка Java задалась этим вопросом.

Вывод типов локальных переменных


JEP-286 предлагает добавить вывод типов локальных переменных, используя новое псевдоключевое слово (интерпретируемое как «зарезервированное наименование типа»):

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

15 бесплатных онлайн курсов по программированию

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

Принято считать, что для качественного образования необходимы упорство, время и деньги. Если с первыми двумя пунктами поспорить сложно, над третьим все же можно подумать. Действительно ли материальная составляющая способна определить уровень, а главное, качество образования?

Современная практика показывает: “Хорошо – не значит дорого”, а доступность интернет – ресурсов определяющим фактором в получении образования ставит желание. Получить необходимые знания и интересующую информацию в ведущих университетах России, Европы и Америки сейчас возможно даже не выходя из дома.

Сегодня такой бонус мы подготовили всем, кто давно мечтал заговорить с компьютером на “ты”, но не решался перейти к действиям. Перед вами 15 вариантов самых интересных бесплатных онлайн курсов по программированию, приступить к которым можно будет уже этой весной!
Читать дальше →

JPoint 2016 Student Day — первые доклады

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


Ровно через месяц, в воскресенье, 24 апреля, в Москве пройдет Java-конференция для студентов JPoint Student Day. Две недели назад я уже писал об этой конференции — что это такое, чего ждать, и кого мы ожидаем на ней увидеть. Всего на конференции будет около двух десятков докладов, половина из них уже анонсирована. Давайте вместе на них посмотрим.

Вот они:
  • Никита Липский, Excelsior — JVM: краткий курс общей анатомии;
  • Роман Елизаров, Devexperts — Многопоточное программирование — теория и практика;
  • Виктор Гамов, Hazelcast — Распределяй и властвуй: введение в распределенные системы;
  • Антон Архипов, ZeroTurnaround — Байткод для любознательных;
  • Дмитрий Чуйко, Oracle — Чёрная метка, StampedLock и его друзья;
  • Михаил Дударев, Licel — Java Security от А до Я;
  • Виктор Полищук, Infopulse — Веб-приложение, о котором я мечтал;
  • Егор Бугаенко, Teamed.io — Объектно-Ориентированное Враньё;
  • Nicolas Fränkel, hybris — Refactoring your legacy code for better maintainability.


Неплохо для студенческого ивента?

Спикеры — авторитетные как на подбор: Никита Липский — разработчик виртуальных машин, Роман Елизаров — эксперт по многопоточности мирового уровня и Java Champion, Антон Архипов — Java Champion, гуру класслоадинга и модификации байткода (JRebel), Виктор Гамов — Senior Solutions Architect в Hazelcast, популярнейшем In-Memory Data Grid и т.д. Про каждого из наших спикеров можно рассказывать долго.

Напомню, что эта конференция — для студентов и преподавателей. Если вы принадлежите к числу первых или вторых — добро пожаловать под кат, где я подробнее расскажу об этих докладах.
Читать дальше →