Обновить
128K+

Java *

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

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

Что ждет IntelliJ IDEA впереди?

Время на прочтение4 мин
Охват и читатели21K
Совсем скоро нашей флагманской среде разработки IntelliJ IDEA исполнится 14 лет. Уже немало продуктов создано с помощью наших инструментов, и казалось бы всевозможные фичи добавлены в IDE, но мы продолжаем искать новые источники вдохновения, чтобы наши продукты на вашем столе всегда были свежими. По случаю приближающейся годовщины мы хотели бы поделиться нашими взглядами – что именно в ближайшие 5-10 лет будет определять развитие в продуктовой разработке.

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

Небольшой тест производительности Hadoop/Mapreduce

Время на прочтение2 мин
Охват и читатели4.6K
Давным давно задался себе вопросом «На сколько эфективно работает MapReduce ?»

Появилась такая возможность и на кластере состоящим из 4 нодов в такой вот конфигурации я решил потестить:
— 3 ноды: Intel Xeon CPU W3530 @ 2.80GHz 12GB RAM
— 1 нода: Intel Xeon CPU X5450 @ 3.00GHz. 8GB RAM

Операционка debian, hadoop 1.2 (с офф.сайта), java 7 (От ORACLE).

Исходные данные:
— ХМЛ файл: dumps.wikimedia.org/enwiki/20130904/enwiki-20130904-stub-meta-current.xml.gz
— в распакованом состоянии файл занимает 18ГБ места.
— 31М записей о страничках в вики.
— Bzip2 сжимает этот файл в 2ГБ
— 593.045.627 строк в файле
Читать дальше →

Перевод legacy-проекта на Dependency Injection. Путь Ситха

Время на прочтение8 мин
Охват и читатели14K
Внесу и свой вклад в тренд темного программирования.
Многим из вас знакома дилемма: использовать ли DI в своем проекте или нет.
Поводы перехода на DI:
  • создание развитой системы авто-тестов
  • повторное использование кода в различном окружении, в том числе в различных проектах
  • использование 3rd-party библиотек, построенных на DI
  • изучение DI
Доводы не использовать DI:
  • усложнение понимания кода (поначалу)
  • необходимость конфигурирования контекста
  • изучение DI

Допустим, у нас есть большой рабочий проект, принято решение: переводить на DI. Разработчики чувствуют свой потенциал, уровень мидихлориан в крови зашкаливает.

Путь тебя ждет тернистый и долгий, мой юный падаван.

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

Как web-страницу легко превратить в PDF?

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

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

Аннотации в Java, часть I

Время на прочтение5 мин
Охват и читатели81K
Это первая часть статьи, посвященной такому языковому механизму Java 5+ как аннотации. Она имеет вводный характер и рассчитана на Junior разработчиков или тех, кто только приступает к изучению языка.

Я занимаюсь онлайн обучением Java и опубликую часть учебных материалов в рамках переработки курса Java Core.

Также я веду курс «Scala for Java Developers» на платформе для онлайн-образования udemy.com (аналог Coursera/EdX).

Мой метод обучения состоит в том, что я
  1. строю усложняющуюся последовательность примеров
  2. объясняю возможные варианты применения
  3. объясняю логику двигавшую авторами (по мере возможности)
  4. даю большое количество тестов (50-100) всесторонне проверяющее понимание и демонстрирующих различные комбинации
  5. даю лабораторные для самостоятельной работы

Данная статье следует пунктам #1 (последовательность примеров) и #2(варианты применения).
Читать дальше →

Dripstat — сервис мониторинга производительности JVM или MMO игра?

Время на прочтение4 мин
Охват и читатели22K
Приветствую, хабражители!

Сегодня я хочу рассказать вам про сервис, который обнаружил буквально недавно — Dripstat. Он позволяет установить на локальную JVM специальный java-агент, который собирает статистику работы сервера приложений и отправляет на сайт, где с ней можно детальнее ознакомиться.

Ну какие сервисы мониторинга? Сегодня суббота! — скажете вы, и будете правы. Более того, я даже поддержу эту мысль и в данной заметке расскажу как раз об обратной, развлекательной, стороне медали, и чуть-чуть о программировании на JS.



Итак, приглашаю дочитать тех кто заинтересовался.
Let's play!

Легкий старт: Spring + MongoDB

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


Поискал на хабре схожие статьи, нашел только Morphia — легкий ORM для MongoDB, управляемый аннотациями, ничего по связке Spring Data + MongoDB не нашлось, в связи с этим решил написать пост из раздела «для самых маленьких» по настройке и использованию связки Spring + MongoDB.
Читать дальше →

Дружим штатную громкую связь Volvo с русскими буквами

Время на прочтение4 мин
Охват и читатели10K
Доброго времени суток!
Несколько месяцев назад появился у меня чудесный автомобиль Volvo V50 родом из Бельгии. Бортовой компьютер и магнитолу успешно перепрошили на русский язык у официального дилера, а вот с отображением русских имен из записной книжки телефона при использовании штатной громкой связи вышла беда: все кириллические символы показывались в виде подчеркиваний. Я пользуюсь Samsung Galaxy S3 прошитым CyanogenMod 11, поэтому возникла идея подправить стандартный Bluetooth.apk для обеспечения возможности видеть имя звонящего.
Читать дальше →

Программа курса «Multicore programming in Java»

Время на прочтение3 мин
Охват и читатели53K
Добрый день.
Меня зовут Головач Иван, я руковожу небольшой образовательной компанией. Мы занимаемся онлайн курсами программирования.

Также я веду курс «Scala for Java Developers» на платформе для онлайн-образования udemy.com (аналог Coursera/EdX).

Хотелось бы услышать мнение сообщества по поводу
  1. программы курса «Multicore programming in Java»
  2. литературы к курсу

Кратко о курсе: стартует 28 апреля (в связи с майскими праздниками старт перенесен на 15 мая), ведется в режиме вебинаров дважды в неделю в 19.00-22.00, состоит из 16 лекций по 2.5 часа (=40 лекционных часов), к каждой лекции дается расширенное задание, рассчитан на Java Junior/Middle.
Читать дальше →

JPHP — Новый движок php для Java VM + JIT

Время на прочтение6 мин
Охват и читатели50K
Представляю вам свой open-source проект — JPHP. Это альтернативная реализация PHP для JavaVM с поддержкой JIT. Я начал проект в одиночку в октябре 2013 года и за 4 месяца реализовал компилятор php в байткод JVM. Язык поддерживается на уровне PHP 5.3, частично поддерживаются возможности PHP 5.4 и 5.5. По своей идеологии проект напоминает JRuby и Jython.

Я подготовил небольшую презентацию, которая расскажет о проекте и не отнимет у вас много времени:


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

Концепция Абстрактного Типа Данных

Время на прочтение4 мин
Охват и читатели32K
Доброго времени суток, хабравчане!

Следующий пост является изложением моих размышлений на тему природы классов и АТД. Эти размышления дополнены интересными цитатами из книг гуру разработки программного обеспечения

Введение


Начнем с того, что плавно подойдем к определению АТД. АТД, в первую очередь, представляет собой тип данных, что означет следущее:
наличие определенных доступных операций над элементами этого типа;
а также данные, относительно которых эти операции выполняются (диапазон значений).
Читать дальше →

IntelliJ IDEA 13.1: Весеннее обновление

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

Вместе с хорошим известием для Северного полушария, что продолжительность светлого времени суток увеличилась, мы хотим рассказать о релизе IntelliJ IDEA 13.1, случившемся на этой неделе. Но перед рассказом о новинках хотелось бы отметить еще одно, весьма ожидаемое всем Java-cообществом, событие…

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

Java 8 в IaaS InfoboxCloud в одну команду. Используем Java 8 в тестах

Время на прочтение4 мин
Охват и читатели6K
Совсем недавно вышла Java 8. Это большое и долгожданное событие для всех разработчиков на платформе JVM и безусловно повлияет на код в enterprise проектах.

Мы в InfoboxCloud очень любим технологии Java и ценим Java разработчиков. К релизу Java 8 мы написали скрипты, которые позволят в одну команду установить JRE 8 или JDK 8 в Облачную инфраструктуру InfoboxCloud на любою из ОС Linux. Просто выберите скрипт, вставьте в консоль и нажмите Enter. Гораздо лучше тратить время на написание хорошего кода, чем на установку java.
Java 8 InfoboxCloud IaaS
На Облачной платформе InfoboxCloud Jelastic поддержка Java 8 появится в следующем обновлении программного стека довольно скоро.

В этой статье мы, установив Java 8, рассмотрим как тестировать ваше разрабатываемое ПО с Java 8, собирая его под Java 7.
Читать дальше →

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

Новое в Java 8

Время на прочтение15 мин
Охват и читатели524K
Java еще не умерла — и люди начинают это понимать.

Добро пожаловать в ведение по Java 8. Этот материал шаг за шагом познакомит вас со всеми новыми фичами языка. Вы научитесь использовать методы интерфейсов по умолчанию (default interface methods), лямбда-выражения (lambda expressions), ссылки на методы (method references) и повторяемые аннотации (repeatable annotations). Все это будет сопровождаться короткими и простыми примерами кода. В конце статьи вы познакомитесь с наиболее свежими изменениями в API, касающихся потоков, функциональных интерфейсов, расширений для ассоциативных массивов, а также с изменениями в API работы с датами.
Читать дальше →

Сравниваем производительность reflection в JDK8 и JDK7

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

Недавно, путешествуя по коду своего рабочего проекта набрел на довольно высоконагруженный spring бин, который производил обращения к методам объектов (иногда и объектов сгенерированных на лету классов) вызывая геттеры и сеттеры объекта через reflection. В бине уже был реализован кэш геттеров, однако я задался вопросом — насколько быстр reflection и можно ли сделать быстрее.


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

Лямбда-выражения в Java 8 — Простые примеры того, как они могут облегчить вашу жизнь

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


Вот и состоялся релиз Java 8. Кто-то по-настоящему ждал её и тестировал предрелизную версию, считая недели до марта, для кого-то смена цифры в версии JDK была лишь поводом пару раз поиграть с обновленным языком в домашней IDE без отрыва от работы (ввод языка в production всегда занимает некоторое время), кто-то просто не нуждается в новых фичах, им и возможностей «семерки» хватает с лихвой. Тем не менее, восьмую Java ждать стоило — и не просто ждать, но и внимательно присмотреться к некоторым ее нововведениям, ведь в этой версии их действительно немало, и если ознакомиться с ними поближе, то не исключено, что хорошо знакомый язык предстанет перед вами в совершенно новом свете, порадовав возможностью писать еще более красивый и лаконичный код. И если уж говорить про новые возможности Java 8, было бы странно не начать с лямбда-выражений.
Читать дальше →

Java 8 Released

Время на прочтение2 мин
Охват и читатели52K
Поздравляю всех с официальным выходом Java 8.
Основные ссылки по данному вопросу:
1. Ссылка на скачивание
2. Ссылка на перечень изменений
Читать дальше →

QuisyReader

Время на прочтение1 мин
Охват и читатели31K
Под влиянием "500 слов в минуту без подготовки" решил реализовать программу которая бы работала на большинстве платформ, так и появилось сиё чудо под названием «QuisyReader».

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

Concurrency: 6 способов жить с shared state

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

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

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

Все примеры приведены на Java, но содержат комментарии и я надеюсь будут понятны программистам не знакомым c Java. Данная статья носит обзорный характер и не претендует на полноту. В то же время она наполнена ссылками, которые дают более подробное объяснение терминам и утверждениям.

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

Автоматизация системного интеграционного тестирования

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

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

Как же происходит тестирование интеграции? Самый короткий ответ — никак, хотя у нас больше сотни систем, которые взаимодействуют через интеграционную шину Oracle Service Bus(OSB). У этого продукта есть инструмент OSB Console, который позволяет послать тестовый запрос и отображает полученный ответ. После того как разработчик реализует на шине новый сервис, сервис вручную проверяется через OSB Console. Если проверка успешна, то сервис объявляется работающим и меняется, только если на него начинают жаловаться разработчики внешних систем.

Поддержка используемой нами OSB подходила к концу, и возникла необходимость перехода на новую версию. Хотя сама миграция больших проблем не вызывала, встал вопрос, а как проверить работоспособность смигрированного решения? И тут наша команда в очередной раз задумалась о внедрении автоматического тестирования.
Читать дальше →