
256K+
Охват за 30 дней
Java *
Объектно-ориентированный язык программирования
227,84
Рейтинг
Сначала показывать
Порог рейтинга
Уровень сложности
Зри в корень: java.lang.Object
8 мин
92KВ Java в вершине иерархии классов лежит класс java.lang.Object. Лежит и лежит, долгое время я им совсем не интересовался.
На собеседованиях часто спрашивают, какие в нем есть методы, поэтому они как-то сами собой выучились. Пришло время посмотреть на этот класс более внимательно. Первый вопрос, который у меня возник, есть ли вообще в исходниках Java класс java.lang.Object. Он же ведь необычный, он вполне может быть жестко зашит в реализацию, как самый верхний.
Однако, такой класс есть и я приведу тут исходники java/lang/Object.java, опустив javadoc, и попытаюсь пролить свет на некоторые моменты связанные с реализацией jvm:
На собеседованиях часто спрашивают, какие в нем есть методы, поэтому они как-то сами собой выучились. Пришло время посмотреть на этот класс более внимательно. Первый вопрос, который у меня возник, есть ли вообще в исходниках Java класс java.lang.Object. Он же ведь необычный, он вполне может быть жестко зашит в реализацию, как самый верхний.
Однако, такой класс есть и я приведу тут исходники java/lang/Object.java, опустив javadoc, и попытаюсь пролить свет на некоторые моменты связанные с реализацией jvm:
+25
NDK c полпинка
7 мин
24KТуториал
Вместо пролога
Я, пожалуй, нарушу традицию всех подобных статей и не буду рассказывать, зачем нужен NDK. Если вы это читаете, значит вам он зачем-то понадобился. Но один из реальных кейсов использования мы, конечно же, рассмотрим.

Эта история началась с того, что на Google I/O 2015 была представлена поддержка нативной разработки прямо не выходя из студии, Android-студии. Естественно, Google, как всегда, наобещал и заставил ждать, пока они все это выкатят для обычных людей. И вот 9 июля это свершилось: на stable channel появился кусочек того пирога, который нам наобещали.
+17
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.
Подробности — как всегда под катом.
+10
Open source сервер онлайн-чатов на Java
3 мин
25K
Онлайн-чаты (или онлайн-консультанты) сегодня есть на многих сайтах. Кто-то ими активно пользуется, кто-то терпеть не может, а кто-то иногда открывает шутки ради. Для желающих развернуть свой собственный сервер чатов расскажу об open source решении Live Chat Engine.
+11
Java байткод «Hello world»
7 мин
52KНа хабре уже есть статья про java байткод. Я решил ее немного дополнить и в меру сил развить тему. Мне кажется довольно логичным разобрать простейшее приложение на Java. А что может быть проще «Hello world»?
Для своего эксперимента я создал директорию src, куда в папку hello положил файл App.java:
Для своего эксперимента я создал директорию src, куда в папку hello положил файл App.java:
package hello;
public class App {
public static void main(String[] args) {
System.out.println("Hello world!");
}
}
+43
Работа с архивами Zip и 7z
4 мин
25KВ мобильной разработке бывает потребность сделать приложение для работы без интернета. Например, словарь или справочник, который будет использоваться в суровых полевых условиях. Тогда для работы приложения нужно единожды выкачать архив с данными и сохранить его у себя. Сделать это можно посредством запроса в сеть, но так же можно зашить архив с данными внутрь приложения.
Согласно требованиям Google Play, apk-файл приложения должен быть не более 50 МБ, так же можно прикрепить два файла дополнения .obb по 2 гигабайта. Механизм простой, но сложный при эксплуатации, поэтому лучше всего уложиться в 50 МБ и возрадоваться. И в этом нам помогут целых два архивных формата Zip и 7z.
Согласно требованиям Google Play, apk-файл приложения должен быть не более 50 МБ, так же можно прикрепить два файла дополнения .obb по 2 гигабайта. Механизм простой, но сложный при эксплуатации, поэтому лучше всего уложиться в 50 МБ и возрадоваться. И в этом нам помогут целых два архивных формата Zip и 7z.
+3
Docker в банке. Видео с лекции Александра Тарасова из Альфа-Банка
1 мин
40KDocker — технология, вокруг которой нынче огромное количество хайпа. «Shitstorm» — именно таким словом окрестил в твиттере докеровые войны один из моих немецких знакомых. Ну и конечно, вместе с «Microservices» и «Reactive», слово «Docker» прочно вошло в тройку ведущих айтишных баззвордов последних двух лет.
Неделю назад на московской встрече CodeFreeze Александр aatarasoff Тарасов из Альфа-Лаборатории (подразделение Альфа-банка) рассказал от том, как они внедряли у себя Docker, какой получили профит, какую боль и т.п. Интрига в том, что, с одной стороны, Альфа-банк — это банк, то есть, «кровавый энтерпрайз». С другой стороны… внедрили же.

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

Под катом — короткое описание того, о чем рассказал нам Александр и видеозапись его выступления.
+23
Spring Security 4 + CSRF (добавление в Spring проект защиты от межсайтовой подделки запроса)
2 мин
40K
Здравствуйте!
Современное веб приложение считается уязвимым, если в нем отсутствует защита от Межсайтовой подделки запроса (CSRF).
В Spring Security 4.x она включена по умолчанию, поэтому при миграции с Spring Security 3.x на 4.x ее надо либо отключить
<http>
...
<csrf disabled="true"/>
</http>
либо, правильнее и зачетнее, добавить в проект.Собственно, сделал это в 10-минутном видео:
+6
Внедрение веб консолей в jvm процесс на примере SonarQube
5 мин
12KПо аналогии с примером из этой статьи, вы сможете внедрить консоль hawtio в свое jvm приложение без его пересборки и перекомпиляции. А также в случае с DEV/QA хостами внедрить в java процесс SQL веб консоль из проекта H2


+7
Управление версиями зависимостей в Maven проекте
4 мин
39KОдним из преимуществ организации Java проекта с помощью Maven является удобное описание всех библиотек и их версий, которые для него требуются. Далее, по мере развития проекта, нам наверняка захочется иметь возможность обновлять версии этих библиотек. Такой функционал предоставляет расширение Versions Maven.
+15
Облака на службе СМИ, или Как Amazon помогает обрабатывать большие объемы видеоконтента
6 мин
7.9KНашему заказчику, одному из крупнейших мировых издательств, потребовалось увеличить производительность приложения для публикации видео новостей в связи с возросшим объемом трафика. Пользователи приложения — редакторы media-ресурсов. В день через него проходит порядка 200 новостных роликов, средний размер каждого из них ~ 500 мб, итого около 100 Гб свежих новостей в сутки.
Сегодня мы поделимся опытом, как CloudFront и S3 помогли нам построить высоконагруженную и устойчивую систему обработки контента.

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

Надеемся, наш опыт заинтересует разработчиков/проектировщиков систем по хранению и обработке медиаконтента (видео, аудио, изображения) и технических специалистов, активно использующим сервисы AWS.
+7
Передача опыта: Путь Джедая
3 мин
21K
Рано или поздно каждый из нас задумывается, имеет ли смысл передать свой опыт детям. На сегодняшний день можно сказать, что проект, который мы начали более двух лет назад, состоялся и выглядит удачным. Раз результат положительный, мы решили, почему бы не поделится с уважаемой публикой.
Пора!… Кони уже неслись над крышами… (с) Михаил Булгаков
+8
Ближайшие события
Лямбда-выражения в Java, как и зачем их сериализировать?
5 мин
24K
Механизм лямбда-выражений, представленный в Java8, стал такой фичей, которая чётко разделила код до нее и после (кажется, такое же может случится с Java9 и модульной системой, но в плохом смысле). В Java8 стало больше функциональных трюков, разнообразная обработка больших массивов данных стала значительно проще и теперь занимает куда меньше места. Однако, касательно рационального использования лямбда-выражений существует много вопросов таких как: насколько рационально часто их использовать? существенна ли потеря производительности теряется при переходе от обычного цикла в `forEach()` с лямбда-выражением и так далее. Большинство курсов (даже курс Oracle) игнорируют эти вопросы. В этом посте будет описан как раз один из, наверное, наименее популярных вопросов, но не менее интересный чем остальные:
Как работать сериализация лямбда-выражений в Java и как её можно использовать?
+17
Consulo: Выполнение Java кода на .NET платформе с помощью IKVM.NET
3 мин
15K
Привет Хабр. Мои предыдущие посты описывают только поддержку Unity или Mono/Microsoft .NET. Но при есть ещё много вещей про которые я не рассказываю. Вот про одну я хочу рассказать, это IKVM.NETДля тех кто пропустил мои посты:
Consulo — это форк IntelliJ IDEA Community Edition, который имеет поддержку .NET(C# на текущий момент, и на этот сектор пока идет большой акцент), Java
+20
«Скорость – это такая фича, от которой никто никогда не отказывается» — интервью с Дмитрием Жемеровым из JetBrains
28 мин
26KСегодня пятница, а пятница на хабре — это отличный день для чего-то необычного. Сегодня я предлагаю вашему вниманию интервью с Дмитрием yole Жемеровым, человеком, который приложил руку и к IntelliJ IDEA, PyCharm, Kotlin и многим другим продуктам компании JetBrains.
О чем мы поговорили:
Под катом — расшифровка этого интервью.
О чем мы поговорили:
- как развивается IDEA, куда она движется
- в чем разница между IntelliJ и JetBrains
- зачем в компании два CEO
- что происходит в Kotlin'e
- с какими трудностями столкнулась команда Kotlin в процессе разработке языка
- что такое Language Design Review
- что представляет собой современный Google
- почему закрылся Google Code
- почему хабр важен для разработчиков IDE
Под катом — расшифровка этого интервью.
+56
Joker 2015: Новости 16-27 июля 2015 — новые спикеры и доклады
3 мин
6.8KС момента анонса Joker 2015 на хабре прошло почти две недели. В этом посте я коротко расскажу о том, что нового у нас произошло за это время. И говорить мы будем, как обычно, о контенте — новых заявленных спикерах и их докладах.

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

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

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

Дмитрий Жемеров — ветеран компании 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 — так что ждите интересного!
+15
Анализируем большие объемы данных с Apache Spark
1 мин
18K
С анализом больших объемов данных постепенно начинают сталкиваться не только крупнейшие IT-компании, но и обычные разработчики. В нашей компании в ряде проектов такая задача возникает, и мы решили систематизировать накопленный опыт, поделившись с коллегами по i-Free и нашими партнерами наиболее эффективными инструментами и технологиями. Сегодня речь пойдет о применении Apache Spark
+10
Вариант реализации MVP + DI(Dagger 2) в Android
5 мин
52KС недавних пор заинтересовался данной темой и порылся в дебрях сети на эту тему. На англоязычных ресурсах есть раскиданная по разным местам информация. Прочитал все, что есть в рунете на эту тему. Ссылки приведу в конце статьи. В итоге, стал применять этот подход в своих приложениях.
Для начала, вспомним, что такое MVP. MVP — это паттерн, который позволяет «разбивать» приложение на три основных слоя (компонента):

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

MVP паттерн — это наследник более известного шаблона — MVC. Применение такого подхода позволяет отделить в приложении логику от интерфейса.
+10
Вышел релиз JRuby 9000
2 мин
8.3KСегодня вышел релиз JRuby 9.0.0.0. Активная фаза разработки длилась около двух лет, за это время насчитано более 5500 коммитов от 104 разработчиков. А некоторые вещи, на которых основывается этот релиз, были начаты более пяти лет назад. В целом, в эту версию вложено огромное количество труда и сейчас очень приятно поздравлять разработчиков с успешным завершением.
Что такое JRuby
JRuby — это реализация языка программирования Ruby, работающая на виртуальной машине Java. Основные достоинства: высокая скорость работы, параллелизм без GIL, возможность вызова java-библиотек из ruby-кода, а также возможность скриптинга на ruby для java-приложений.
Главные отличия от версии 1.7
+19
