Обновить
512K+

Java *

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

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

Доступна IntelliJ IDEA 15 Preview

Время на прочтение3 мин
Охват и читатели39K
Вчера JetBrains опубликовал превью IntelliJ IDEA 15.

Для тех, кто не участвует в EAP, это возможность познакомиться с новой версией. Для нас это возможность рассказать о том, над чем мы работали в последнее время.

image

Во-первых, продолжая адаптировать IDE к Java 8, мы улучшили взаимодействие дебаггера с лямбда выражениями. Теперь при установке брейкпоинта вы можете указать не всю строку, а конкретное лямбда выражение, которое в ней содержится. Точно также вы можете применять Run to cursor по отношению конкретному лямбда выражению вне зависимости от того, на какой строке оно находится. И наконец если вы вызываете Step Into, IDE предложит перейти к лямбда выражению, являющемуся параметром.

image

Кроме того в дебаггер был добавлен экшн Force return, который позволяет прервать исполнение текущего метода и вернуть выбранное вами значение. Это удобно, если вы хотите поменять логику выполнения кода в целях отладки.

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

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

«Мы можем лучше протестировать Java, чем Oracle» — интервью с Андреем Паньгиным из Одноклассников

Время на прочтение14 мин
Охват и читатели25K
Сегодня я приготовил для вас большое интервью с Андреем Паньгиным aka apangin, ведущим инженером Одноклассников. Андрей больше 6 лет проработал JVM-инженером в Sun Microsystems, в том числе, в команде HotSpot, а последние 5 лет работает в Одноклассниках, решая там вопросы, связанные с JVM и производительностью. Так что Андрей по праву считается одним из сильнейших JVM-щиков в России.



Андрей — эксперт в системном программировании, занимался системами хранения и системами передачи информации. Складывал кирпичики, которые лежат в основе портала Одноклассники и обеспечивают надежность и быстродействие сервисов.

Вот о чем мы поговорили с Андреем:

  • чего стоит переезд с Java 7 на Java 8;
  • что происходит с sun.misc.Unsafe;
  • архитектура Одноклассников;
  • инженерные компромиссы, шардинг и GC;
  • системы хранения данных и Cassandra;
  • в чем Одноклассники впереди планеты всей, а чему еще стоит поучиться у Google;
  • как стать крутым системным программистом.


(Я знаю, что начало затянутое. Будем работать над тем, чтобы быстрее раскачиваться и входить в тему.)

Для тех, кому опять некогда смотреть видео, под катом расшифровка интервью.
Читать дальше →

JetBrains опубликовали уточнения к новой лицензионной и ценовой политике

Время на прочтение2 мин
Охват и читатели19K
В начале Сентября JetBrains опубликовали новость о смене модели лицензирования своих продуктов — компания объявила о переходе с бессрочной лицензии на модель «подписки». В случае подписки разработчик имеет доступ к среде разработки только в период оплаченной лицензии, в отличии от старой модели, когда разработчик имел доступ ко всем обновлениям в течении действия оплаченной лицензии, а после истечения мог продолжать пользоваться наиболее свежей версией IDE вышедшей в этот период.
Читать дальше →

Доклад: «Аспектно-ориентированное программирование в распределенных системах для java разработчиков и QA»

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

Под катом — краткое описание доклада про аспектно-ориентированное программирование и применение AspectJ-scripting, а также ссылки на материалы по теме и видеозапись выступления.
Читать дальше →

Автоматизация тестирования Java EE веб-сервисов с помощью SoapUI и Arquillian

Время на прочтение8 мин
Охват и читатели55K
Одним из преимуществ веб-сервисов является относительная простота тестирования. Действительно, в простейшем случае все, что нам нужно для проверки работы веб-сервиса – это отправить правильно сформированный HTTP-запрос любым удобным способом и проверить, что вернулось в ответ. С помощью SoapUI – инструмента для всевозможных видов тестирования веб-сервисов (более подробно о возможностях можно почитать на официальном сайте) – этот процесс можно сделать еще удобнее, автоматизировав его: мы можем создать набор тестов, указав в нем, какие запросы следует отправлять, и задав набор правил, которым должны удовлетворять ответы от сервиса. Но, тем не менее, эти тесты мы по прежнему должны будем запускать руками, а душа жаждет полной автоматизации. Действительно, почему бы не запускать эти тесты автоматически при сборке приложения (на CI-сервере или прямо на машине разработчика)?
Читать дальше →

FP на Scala: Invariant Functor

Время на прочтение7 мин
Охват и читатели13K
В статье рассматривается
  • Как такая абстракция теории категорий как инвариантный функтор (Invariant Functor), который иногда называют экпоненциальным функтором (Exponential Functor), выражается на Scala.
  • Два правила (Identity Law, Composition Law), которым доложен следовать каждый инвариантный функтор.
  • Приведен пример инвариантного функтора с состоянием (Value Holder)
  • Приведен пример инвариантного функтора-отношения между элементами множества (полугруппа)

Публикация является продолжением FP на Scala: Что такое функтор? в которой были рассмотрены следующие вопросы
  • Какая имеется связь между теорией категорий, Haskell и Scala.
  • Что такое ковариантный функтор.
  • Что такое контравариантный функтор.

Содержание

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

Регулярные выражениия в Java на примере адреса электронной почты

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


Известно, что регулярные выражения – это, по сути, шаблоны из символов, которые задают определённое правило поиска. И, среди прочего, с их помощью возможно осуществить проверку определённой строки или строк на соответствие некоему заранее заданному паттерну или стандарту.
Одним из наглядных и довольно простых примеров использования регулярных выражений в Java и не только является проверка проверка данных пользователя, ввёдённых при регистрации на определённом сайте на корректность. В первую очередь это касается адреса электронной почты, так как к нему всегда предъявляются определённые орфографические требования.
Читать дальше →

Обзор Intent Sender плагина к Android Studio и отдельных особенностей его разработки

Время на прочтение7 мин
Охват и читатели9.2K
При разработке Android приложений зачастую приходится прибегать к помощи adb для оптимизации своей работы и экономии времени. Adb является единственным инструментом, позволяющим, к примеру, миновать длинную цепочку activity и запустить сразу нужную или отправить broadcast сообщение без ожидания выполнения каких-либо внешних условий. Использование adb влечет за собой все неудобства применения терминала для формирования длинных команд, что и привело меня к написанию плагина для ускорения и упрощения работы с adb при отправке intent на устройства.
Читать дальше →

Публикация логов в Elasticsearch — жизнь без регулярных выражений и без logstash

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

При использовании подхода из данного решения парсинг файлов будет не нужен. При изменении формата логирования или появлении новых сообщений не нужно поддерживать большой набор регулярок. Будем перехватывать вызовы методов error, warn, info, debug, trace логера и отправлять данные сразу в elasticsearch. С этим нам поможет аспектно-ориентированное программирование!
Программа, конфигурация и скринкаст...

FP на Scala: Что такое функтор?

Время на прочтение15 мин
Охват и читатели35K
Специалист, приступающий к изучению функционального программирования, сталкивается как с неоднозначностью и запутанностью терминологии, так и с постоянными ссылками на «серьезную математику».

В этой статье, не используя теорию категорий с одной стороны и эзотерические языковые механизмы Scala с другой стороны, рассмотрены два важнейших понятия
  • ко-вариантный функтор
  • контра-вариантный функтор
которые являются стартовой точкой для понимания всего множества категориальных конструкций, куда можно включить
  • Exponential (Invariant) Functor, BiFunctor, ProFunctor
  • Applicative Functor, Arrow, Monad / Co-Monad
  • Monad Transformers, Kleisli, Natural Transformations

Объяснено происхождение категориальной терминологии, указана роль языковых механизмов в реализации категориальных абстракций и рассмотрено несколько ковариантных (Option, Try, Future, List, Parser) и контравариантных (Ordering, Equiv) функторов из стандартной библиотеки Scala.

Первая статья в «категориальной серии»:
  1. FP на Scala: что такое функтор?
  2. FP на Scala: Invariant Functor

Если Вы желаете сильнее погрузиться в мир Scala, математики и функционального программирования — попробуйте онлайн-курс «Scala for Java Developers» (видео + тесты, всего за 25% цены!).


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

Использование библиотек на Java 8 для приложений под Android с помощью Maven

Время на прочтение8 мин
Охват и читатели17K
Java 8 вышла в начале 2014 года, позволив Java-разработчикам использовать весьма удобные новшества для облегчения программирования тривиальных задач. Среди них — лямбда-выражения, ссылки на методы и конструкторы, реализация интерфейсных методов по умолчанию на уровне языка и JVM, а также использование Stream API на уровне стандартной библиотеки. К сожалению, вялость внедрения таких введений сказывается на поддержке этих средств на других программных платформах, ориентированных на Java. GWT и Android всё ещё не располагают официальной поддержкой хотя бы языковых средств Java 8. Впрочем, весенние SNAPSHOT-версии GWT 2.8.0 уже поддерживали лямбда-выражения. С Android дела обстоят иначе, так как здесь работа лямбда-выражений зависит не только от самого компилятора, но и от среды исполнения. Но с помощью Maven можно относительно просто решить проблему использования Java 8.
Читать дальше →

Шпаргалка Java программиста 2: Триста пятьдесят самых популярных не мобильных Java opensource проектов на github

Время на прочтение39 мин
Охват и читатели177K
Что это и зачем оно надо: Как известно, главное преимущество Java мира в том в нем существует огромное количество open-source проектов на на все случаи жизни, однако найти нужный на github'e не так просто, так как описание проекта часто мало информативно, зачастую сложно даже понять этот проект для Android'a или нет. В этой статье я автоматически и полуавтоматически собрал Java проекты, убрал старые и проекты только для Android'a, выбрал 350 набравших больше всего звезд, разделил по категориям и перевел описания.

Если вы хотите убедиться что базы данных пишут не только на C, найти проекты для работы с большими данными или нейронными сетями, пишите свой язык программирования для JVM и хотите посмотреть как это уже сделано или же просто хотите узнать какие новые возможности можно найти в Java мире open-source то это статья вам, думаю, может пригодится.

В чем смысл серии статей 'Шпаргалки Java программиста'
За время работы Java программистом я заметил, что как правило программисты постоянно и планомерно используют от силы 10-20% от возможностей той или иной технологии, при этом остальные возможности быстро забываются и при появлении новых требований, переходе на новую работу или подготовке к техническому интервью приходится перечитывать все документации и спецификации с нуля. Зато наличие краткого конспекта особенностей тех или иных технологий (шпаргалок) позволяет быстро освежить в памяти особенности той или иной технологии.


Другие статьи серии: часть 1. JPA и Hibernate в вопросах и ответах

Update: Внимание, актуальная версия со много большим количеством ссылок, находиться теперь в моем github'e проекте useful-java-links, по этой ссылке.


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

Протоколирование JDBC запросов и их параметров в существующем приложении

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


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

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

Анонс Joker 2015 University Day: Праздник на студенческой улице

Время на прочтение4 мин
Охват и читатели4.9K
Студенты, изучающие Java, преподаватели и все сочувствующие им!

В воскресенье, 18 октября, в Питере мы проведем Joker 2015 University Day — мероприятие для студентов в рамках «большого» Joker'а. University Day — это:
  • 12 докладов от Java-экспертов мирового уровня, с каждым из которых можно пообщаться лично;
  • стенды ведущих питерских и московских Java-работодателей. Там можно узнать о стажировках, вакансиях для Junuor'ов, Java-школах и вообще побольше об этих компаниях;
  • возможность посмотреть на то, что такое профессиональная отраслевая конференция;
  • обсудить с «коллегами по несчастью» из других ВУЗов, что и как у них происходит с обучением программированию вообще и Java-технологиям в частности.




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

Сайт конференции: http://university.jokerconf.com/
Подробнее об университетском дне...

Небольшой путеводитель по ZPL

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

Добрый день, Хабрахабр.


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

Зебры они такие
Механизм формирования этикеток выглядит следующим образом: сначала с машины пользователя (компьютер, терминал сбора данных) на принтер отправляется специальным образом оформленная строка, затем внутренний процессор принтера обрабатывает эту строку, и выводит ее на печать.Но язык, на котором формируется строка для принтера (называется ZPL) на первый взгляд вызывает у непосвящённых нервную икоту и мандраж.
Прошу под кат, всех кто хочет разобраться в данном вопросе.
Читать дальше →

Если не Liferay то что? GateIn?

Время на прочтение5 мин
Охват и читатели9.9K
Не так давно я описал новые фичи, которые ждут пользователей и разработчиков в новой версии Liferay 7.0. У меня иногда спрашивают — а почему Liferay? Для меня ответ прост — в том стеке технологий, в котором мы работаем (Jave EE плюс ориентация на Open Source) я просто не вижу альтернатив.

Да, мы давно занимаемся внедрением порталов на Liferay, но я не слепой фанатик и стараюсь иногда выныривать из своего мирка и смотреть вокруг. А вдруг? Вдруг альтернативы есть? Давайте сегодня рассмотрим одну из них — портал GateIn — совместное производство JBoss и eXo.

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

Использование Java native library на серверах приложений

Время на прочтение3 мин
Охват и читатели12K
Java native library (JNL) представляет собой JAR-архив, содержащий в себе JNI-код и объекты, которые операционная система может загрузить в качестве разделяемых библиотек. Это позволяет вызывать из Java-приложения функции, реализованные платформо-зависимыми методами. Способы создания JNL — это тема отдельной большой статьи, поэтому считаем, что у вас уже есть JNL и вы хотите ею воспользоваться в своем приложении. Об особенностях использования JNL в приложениях, работающих под управлением сервера приложений, и будет эта статья.
Читать дальше →

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

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

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

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

image

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

Самый простой и самый сложный Builder на Java

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


Один из часто рассматриваемых паттернов — паттерн Builder. В основном рассматриваются варианты реализации «классического» варианта этого паттерна:

MyClass my = MyClass.builder().first(1).second(2.0).third("3").build();

Паттерн прост и понятен как табурет, но чувствуется какая-то недосказанность — то минимальный вариант объявляется антипаттерном, то более сложные случаи игнорируются. Хотелось бы исправить этот момент, рассмотрев предельные случаи и определив минимальную и максимальную границы сложности этого паттерна.

Итак, расссмотрим их:
Читать дальше →

Игра на чистой Java от новичка, для новичков

Время на прочтение9 мин
Охват и читатели64K
Я начинающий программист на Java, и путь мой пройден тысячами.



Сначала идет долгий и мучительный выбор Самой Правильной Книги, затем первый восторг от работы перепечатанных из нее листингов программ. Затем осознание растущей крутости и профессионализма. Падение в яму собственного ничтожества, при попытке написать что-то самостоятельно. И долгий путь наверх.

В моем случае Самой Правильной Книгой стал двухтомник «Java. Библиотека профессионала.» за авторством Кея Хорстманна и Гари Корнелла, а самой первой книгой, которая открыла дверь в мир Java – Яков Файн «Программирование на Java для детей, родителей, дедушек и бабушек».

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