Обновить
256K+

Java *

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

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

Обработка столкновений с алгоритмом и реализацией

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

Недавно видел статью об обработке столкновений. И там не было самого главного — алгоритма и реализации. Давайте заполним этот пробел и рассмотрим как находить и обрабатывать столкновения. Реализация будет на Java.
Предупреждаю, что в статье много кода.


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

Зри в корень: java.lang.Object

Время на прочтение8 мин
Охват и читатели92K
В Java в вершине иерархии классов лежит класс java.lang.Object. Лежит и лежит, долгое время я им совсем не интересовался.

На собеседованиях часто спрашивают, какие в нем есть методы, поэтому они как-то сами собой выучились. Пришло время посмотреть на этот класс более внимательно. Первый вопрос, который у меня возник, есть ли вообще в исходниках Java класс java.lang.Object. Он же ведь необычный, он вполне может быть жестко зашит в реализацию, как самый верхний.

Однако, такой класс есть и я приведу тут исходники java/lang/Object.java, опустив javadoc, и попытаюсь пролить свет на некоторые моменты связанные с реализацией jvm:
Читать дальше →

NDK c полпинка

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

Вместо пролога


Я, пожалуй, нарушу традицию всех подобных статей и не буду рассказывать, зачем нужен NDK. Если вы это читаете, значит вам он зачем-то понадобился. Но один из реальных кейсов использования мы, конечно же, рассмотрим.

Эта история началась с того, что на Google I/O 2015 была представлена поддержка нативной разработки прямо не выходя из студии, Android-студии. Естественно, Google, как всегда, наобещал и заставил ждать, пока они все это выкатят для обычных людей. И вот 9 июля это свершилось: на stable channel появился кусочек того пирога, который нам наобещали.
Что же было дальше?

Joker 2015: Новости 1-18 августа 2015 — новые спикеры и доклады

Время на прочтение3 мин
Охват и читатели5.9K
За три недели, прошедшие с момент предыдущей публикации про Joker, мы анонсировали несколько новых докладчиков и докладов, о которых я и расскажу в этом посте.



  • Андрей Солнцев aka asolntsev расскажет о плюcах и минусах Play Framework (речь пойдет о ветке 1.3);
  • Владимир Ситников aka vladimirsitnikov покажет, что делать, если у вас выскочила ошибка типа OutOfMemory;
  • Nicolas Frankel к рассказу о Spring Boot for DevOps добавит рассказ о мутационном тестировании;
  • Антон Кекс aka antonkeks и Андрей Солнцев aka asolntsev покажут нам технику Ping-pong Programming — гибрид парного програмирования и TDD;
  • наконец, наш дебютант Тагир Валеев aka lany покажет некоторые штуки, которые делает HotSpot на примере сравнения производительности Stream API и Collections API.


Подробности — как всегда под катом.
Новые анонсы

Open source сервер онлайн-чатов на Java

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


Онлайн-чаты (или онлайн-консультанты) сегодня есть на многих сайтах. Кто-то ими активно пользуется, кто-то терпеть не может, а кто-то иногда открывает шутки ради. Для желающих развернуть свой собственный сервер чатов расскажу об open source решении Live Chat Engine.
Читать дальше →

Java байткод «Hello world»

Время на прочтение7 мин
Охват и читатели52K
На хабре уже есть статья про java байткод. Я решил ее немного дополнить и в меру сил развить тему. Мне кажется довольно логичным разобрать простейшее приложение на Java. А что может быть проще «Hello world»?
Для своего эксперимента я создал директорию src, куда в папку hello положил файл App.java:

package hello;

public class App {

    public static void main(String[] args) {
        System.out.println("Hello world!");
    }

}


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

Работа с архивами Zip и 7z

Время на прочтение4 мин
Охват и читатели25K
В мобильной разработке бывает потребность сделать приложение для работы без интернета. Например, словарь или справочник, который будет использоваться в суровых полевых условиях. Тогда для работы приложения нужно единожды выкачать архив с данными и сохранить его у себя. Сделать это можно посредством запроса в сеть, но так же можно зашить архив с данными внутрь приложения.

Согласно требованиям Google Play, apk-файл приложения должен быть не более 50 МБ, так же можно прикрепить два файла дополнения .obb по 2 гигабайта. Механизм простой, но сложный при эксплуатации, поэтому лучше всего уложиться в 50 МБ и возрадоваться. И в этом нам помогут целых два архивных формата Zip и 7z.
Читать дальше →

Docker в банке. Видео с лекции Александра Тарасова из Альфа-Банка

Время на прочтение1 мин
Охват и читатели40K
Docker — технология, вокруг которой нынче огромное количество хайпа. «Shitstorm» — именно таким словом окрестил в твиттере докеровые войны один из моих немецких знакомых. Ну и конечно, вместе с «Microservices» и «Reactive», слово «Docker» прочно вошло в тройку ведущих айтишных баззвордов последних двух лет.

Неделю назад на московской встрече CodeFreeze Александр aatarasoff Тарасов из Альфа-Лаборатории (подразделение Альфа-банка) рассказал от том, как они внедряли у себя Docker, какой получили профит, какую боль и т.п. Интрига в том, что, с одной стороны, Альфа-банк — это банк, то есть, «кровавый энтерпрайз». С другой стороны… внедрили же.



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

Spring Security 4 + CSRF (добавление в Spring проект защиты от межсайтовой подделки запроса)

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


Здравствуйте!
Современное веб приложение считается уязвимым, если в нем отсутствует защита от Межсайтовой подделки запроса (CSRF).
В Spring Security 4.x она включена по умолчанию, поэтому при миграции с Spring Security 3.x на 4.x ее надо либо отключить
<http>
	...
	<csrf disabled="true"/>
</http>
либо, правильнее и зачетнее, добавить в проект.

Собственно, сделал это в 10-минутном видео:

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

Внедрение веб консолей в jvm процесс на примере SonarQube

Время на прочтение5 мин
Охват и читатели12K
По аналогии с примером из этой статьи, вы сможете внедрить консоль hawtio в свое jvm приложение без его пересборки и перекомпиляции. А также в случае с DEV/QA хостами внедрить в java процесс SQL веб консоль из проекта H2


Скринкасты, описание процесса и краткий обзор компонент...

Управление версиями зависимостей в Maven проекте

Время на прочтение4 мин
Охват и читатели39K
Одним из преимуществ организации Java проекта с помощью Maven является удобное описание всех библиотек и их версий, которые для него требуются. Далее, по мере развития проекта, нам наверняка захочется иметь возможность обновлять версии этих библиотек. Такой функционал предоставляет расширение Versions Maven.
Читать дальше →

Облака на службе СМИ, или Как Amazon помогает обрабатывать большие объемы видеоконтента

Время на прочтение6 мин
Охват и читатели7.9K
Нашему заказчику, одному из крупнейших мировых издательств, потребовалось увеличить производительность приложения для публикации видео новостей в связи с возросшим объемом трафика. Пользователи приложения — редакторы media-ресурсов. В день через него проходит порядка 200 новостных роликов, средний размер каждого из них ~ 500 мб, итого около 100 Гб свежих новостей в сутки.

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



Надеемся, наш опыт заинтересует разработчиков/проектировщиков систем по хранению и обработке медиаконтента (видео, аудио, изображения) и технических специалистов, активно использующим сервисы AWS.

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

Передача опыта: Путь Джедая

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

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

Пора!… Кони уже неслись над крышами… (с) Михаил Булгаков

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

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

Лямбда-выражения в Java, как и зачем их сериализировать?

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


Механизм лямбда-выражений, представленный в Java8, стал такой фичей, которая чётко разделила код до нее и после (кажется, такое же может случится с Java9 и модульной системой, но в плохом смысле). В Java8 стало больше функциональных трюков, разнообразная обработка больших массивов данных стала значительно проще и теперь занимает куда меньше места. Однако, касательно рационального использования лямбда-выражений существует много вопросов таких как: насколько рационально часто их использовать? существенна ли потеря производительности теряется при переходе от обычного цикла в `forEach()` с лямбда-выражением и так далее. Большинство курсов (даже курс Oracle) игнорируют эти вопросы. В этом посте будет описан как раз один из, наверное, наименее популярных вопросов, но не менее интересный чем остальные:
Как работать сериализация лямбда-выражений в Java и как её можно использовать?

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

Consulo: Выполнение Java кода на .NET платформе с помощью IKVM.NET

Время на прочтение3 мин
Охват и читатели15K
Привет Хабр. Мои предыдущие посты описывают только поддержку Unity или Mono/Microsoft .NET. Но при есть ещё много вещей про которые я не рассказываю. Вот про одну я хочу рассказать, это IKVM.NET

Для тех кто пропустил мои посты:
Consulo — это форк IntelliJ IDEA Community Edition, который имеет поддержку .NET(C# на текущий момент, и на этот сектор пока идет большой акцент), Java
Читать дальше →

«Скорость – это такая фича, от которой никто никогда не отказывается» — интервью с Дмитрием Жемеровым из JetBrains

Время на прочтение28 мин
Охват и читатели26K
Сегодня пятница, а пятница на хабре — это отличный день для чего-то необычного. Сегодня я предлагаю вашему вниманию интервью с Дмитрием yole Жемеровым, человеком, который приложил руку и к IntelliJ IDEA, PyCharm, Kotlin и многим другим продуктам компании JetBrains.

О чем мы поговорили:
  • как развивается IDEA, куда она движется
  • в чем разница между IntelliJ и JetBrains
  • зачем в компании два CEO
  • что происходит в Kotlin'e
  • с какими трудностями столкнулась команда Kotlin в процессе разработке языка
  • что такое Language Design Review
  • что представляет собой современный Google
  • почему закрылся Google Code
  • почему хабр важен для разработчиков IDE




Под катом — расшифровка этого интервью.
Приступить к прочтению

Joker 2015: Новости 16-27 июля 2015 — новые спикеры и доклады

Время на прочтение3 мин
Охват и читатели6.8K
С момента анонса Joker 2015 на хабре прошло почти две недели. В этом посте я коротко расскажу о том, что нового у нас произошло за это время. И говорить мы будем, как обычно, о контенте — новых заявленных спикерах и их докладах.




НОВЫЕ СПИКЕРЫ И ИХ ТЕМЫ



jemerov
Дмитрий Жемеров — ветеран компании JetBrains, человек, приложивший руку к IntelliJ IDEA, RubyMine, PyCharm и возглавивший в свое время процедуру предобразования IDEA из простой IDE в платформу для написания IDE для разных языков. В JetBrains успел поработать разработчиком, потом CTO, потом на год уходил в Google. Несколько месяцев назад вернулся в JetBrains, где возглавил команду поддержки языка Kotlin в IDE. Вместе со Светой Исаковой пишет первую книгу по Kotlin, «Kotlin in Action», которая выйдет в свет, видимо, в следующем году.

На конференции Дмитрий расскажет о том, какие части платформы IntelliJ IDEA в данный момент переписываются на Kotlin, почему были выбраны именно они, с какими проблемами сталкиваются разработчики при этом самом переписывании и какой профит от Котлина получает при таком переписывании проект.

Кстати, буквально со дня на день на хабре мы опубликуем большое (часовое!) видеоинтервью с Дмитрием. Там будет и про JetBrains, и про IDEA, и про Kotlin и про Google — так что ждите интересного!


Еще анонсы

Анализируем большие объемы данных с Apache Spark

Время на прочтение1 мин
Охват и читатели18K
image
С анализом больших объемов данных постепенно начинают сталкиваться не только крупнейшие IT-компании, но и обычные разработчики. В нашей компании в ряде проектов такая задача возникает, и мы решили систематизировать накопленный опыт, поделившись с коллегами по i-Free и нашими партнерами наиболее эффективными инструментами и технологиями. Сегодня речь пойдет о применении Apache Spark
Подробности

Вариант реализации MVP + DI(Dagger 2) в Android

Время на прочтение5 мин
Охват и читатели52K
С недавних пор заинтересовался данной темой и порылся в дебрях сети на эту тему. На англоязычных ресурсах есть раскиданная по разным местам информация. Прочитал все, что есть в рунете на эту тему. Ссылки приведу в конце статьи. В итоге, стал применять этот подход в своих приложениях.

Для начала, вспомним, что такое MVP. MVP — это паттерн, который позволяет «разбивать» приложение на три основных слоя (компонента):
  1. Модель (Model) — где сосредоточены данные;
  2. Представление (View) — интерфейс приложения (UI — элементы);
  3. Presenter — промежуточный компонент, который реализует связь между Моделью и Представлением.

image

MVP паттерн — это наследник более известного шаблона — MVC. Применение такого подхода позволяет отделить в приложении логику от интерфейса.
Читать дальше →

Вышел релиз JRuby 9000

Время на прочтение2 мин
Охват и читатели8.3K
Сегодня вышел релиз JRuby 9.0.0.0. Активная фаза разработки длилась около двух лет, за это время насчитано более 5500 коммитов от 104 разработчиков. А некоторые вещи, на которых основывается этот релиз, были начаты более пяти лет назад. В целом, в эту версию вложено огромное количество труда и сейчас очень приятно поздравлять разработчиков с успешным завершением.

Что такое JRuby
JRuby — это реализация языка программирования Ruby, работающая на виртуальной машине Java. Основные достоинства: высокая скорость работы, параллелизм без GIL, возможность вызова java-библиотек из ruby-кода, а также возможность скриптинга на ruby для java-приложений.

Главные отличия от версии 1.7

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