Обновить
128K+

Java *

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

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

Как перестать бояться Proguard и начать жить

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


Здравствуйте, я Android разработчик и я больше не боюсь ProGuard...


Обычно, об этой утилите вспоминают, когда сталкиваются с dalvik dex-limit issue или с требованием улучшить безопасность приложения. К сожалению, правильно настроить Proguard удается далеко не с первого раза. Я часто наблюдал, как многие, сломав проект, выключают Proguard и включают поддержку Mulditex и каждый раз немножечко грустил по этому поводу, ведь Proguard помогает как сократить размер приложения, так и повысить его производительность.


В итоге, я решил написать статью, в которую смогу поместить всю полезную информацию, которую я узнал за несколько лет работы с Proguard и которая могла бы помочь как совсем новичкам, так и тем, кто уже что-то знает.

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

Обучение программированию с азов

Время на прочтение5 мин
Охват и читатели54K
Подрастающий в семье ребёнок рано или поздно начнёт приставать к папе или маме, занимающемся программированием дома:

– А что это ты делаешь?
– А что значит это слово?
– А почему здесь зелёненькие буквы, а здесь синенькие?
И обязательно придёт к главному вопросу:
– А ты научишь меня программировать?

Мне этот вопрос тоже был задан. Я оказался не готов к ответу. И начал размышлять над проблемой. Как приобщить ребёнка (около десяти лет) к этому интересному и увлекательному занятию?

Далее некоторые мысли на эту тему и к чему они меня привели…
Читать дальше →

Открытый урок «Многопоточность в Java. Базовые примитивы синхронизации»

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

Делимся с вами очередным открытым вебинаром, который проводили в рамках нашего курса «Разработчик Java». На уроке преподаватель курса Сергей Петрелевич разбирал основные проблемы разработки многопоточных программ, средства работы с потоками в JVM.


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

История одного SSL рукопожатия

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

Недавно мне пришлось прикручивать SSL с двухсторонней аутентификацией (mutual authentication) к Spring Reactive Webclient. Казалось бы, дело нехитрое, но вылилось оно в блуждание в исходниках JDK с неожиданным финалом. Опыта набралось на целую статью, которая может оказаться полезной инженерам в повседневных задачах или при подготовке к собеседованию.

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

Создание шаблонов в IDE от Jetbrains

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

Вступление


Сегодня я хочу привести небольшой обзор-туториал темплейтов в ИСР от Jetbrains. Приведенные ниже примеры будут реализованы на Java в Intellij IDEA, но механизм создания одинаков и для других языков и продуктов компании. Думаю все программирующие в данной IDE пользовались встроенными шаблонами. Например когда вы пишете fori, нажимаете TAB или ENTER и у вас появляется цикл for в котором нужно указать имя переменной и условие, а остальной код генерируется за вас.

for (int i = 0; i < ; i++) {   
                               
}    

Или же знакомый всем java-программистам sout -> System.out.println(). Так вот, в Intellij есть поддержка создания своих шаблонов кода. На удивление не нашёл практически никакой инфы на русском и довольно мало на английском(благо есть неплохая документация) когда наткнулся на эту фичу, хотя это сильно ускоряет и помогает в разработке. И сейчас когда дошли руки решил написать небольшую статью об этом. Возможно опытным программистам она мало чем поможет, они и сами смогут разобраться во всём или же уже давно это юзают, но для всех остальных считаю вполне подойдёт. Итак приступим.
Читать дальше →

ActionViews или как я не люблю boilerplate с самого детства

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

Привет, Хабр! В данной статье я хочу поделиться опытом создания своего механизма для автоматизации показа различных View типа: ContentView, LoadingView, NoInternetView, EmptyContentView, ErrorView.


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

Конкуренция в сервлетах

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

Мы запускаем седьмой поток курса «Разработчик Java». Больше, чем за год существования этого курса он дорабатывался, оттачивался, добавлялось новое, что выходило за это время. Этот же поток отличается от остальных тем, что мы ввели новую систему ступеней разбив курс на три части и чуть увеличив его общую длительность. Так что теперь не надо будет выбиваться из сил пять месяцев подряд для получения сертификата, а спокойно выбрать периоды по два месяца и пройти обучения. Но это лирика, вернёмся к нашей традиции о разных полезностях предшествующих запуску курса.

Поехали.

1. Обзор


Контейнер Java-сервлетов (или веб-сервер) многопоточен: одновременно может выполняться несколько запросов к одному сервлету. Поэтому при написании сервлета необходимо учитывать конкуренцию.

Как мы уже говорили ранее, создается один и только один экземпляр сервлета, и для каждого нового запроса Servlet Container создает новый поток для выполнения doGet() или doPost() методов сервлета.

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

2. Обзор потоков


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

Consulo UI API от идеи до прототипа

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

Всем привет, давно я не писал статьи о жизни проекта на хабре, решил исправиться и начну пожалуй с того над чем сейчас работаю а именно Consulo UI API.


Consulo — это форк IntelliJ IDEA Community Edition, который имеет поддержку .NET(C#), Java
Читать дальше →

Аннотации времени компиляции на примере @Implement

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


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

Открытый урок «Веб-приложения и микросервисы на Spring Boot 2.0»

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

На прошлой неделе провели открытый урок по курсу «Разработчик на Spring Framework», где преподаватель Юрий Дворжецкий знакомил с возможностями Spring Boot 2.0, рассказывал и показывал разработку веб-приложений с его помощью и разобрал работу Spring Boot Actuator.


Как всегда ждём вопросы, предложения и прочие тапки :)

Разработка нового статического анализатора: PVS-Studio Java

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

Picture 3

Статический анализатор PVS-Studio известен в мире C, C++ и C# как инструмент для выявления ошибок и потенциальных уязвимостей. Однако у нас мало клиентов из финансового сектора, так как выяснилось, что сейчас там востребованы Java и IBM RPG(!). Нам же всегда хотелось стать ближе к миру Enterprise, поэтому, после некоторых раздумий, мы приняли решение заняться созданием Java анализатора.
Читать дальше →

25 занимательных Android библиотек. Весна 2018

Время на прочтение5 мин
Охват и читатели20K
Это список из 25 новейших Android-библиотек, проектов и инструментов, выпущенных за последние 3 месяца. Здесь нет первого и последнего места, это просто список интересных библиотек. Они определённо заслуживают вашего внимания. Наслаждайтесь!


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

Как у меня сломался String.getBytes(UTF_8) и что я с этим делал

Время на прочтение6 мин
Охват и читатели15K
(спойлер) дебажил, дизасемблил и пришел к выводу что проблема в SSE инструкциях

Привет, Хабр!

Все началось с того что я писал Load тест на Java для внутреннего компонента системы над которой сейчас работаю. Тест создавал несколько потоков и пытался что-то выполнить очень много раз. В процессе выполнения иногда появлялись java.lang.ArrayIndexOutOfBoundsException: 0 ошибки на строчке очень похожей на эту:

"test".getBytes(StandardCharsets.UTF_8)
Читать дальше →

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

«Истина в последней инстанции» или зачем нужен Database First Design

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

В этой весьма запоздалой статье я объясню почему, по моему мнению, в большинстве случаев при разработке модели данных приложения необходимо придерживаться подхода "database first". Вместо "Java[любой другой язык] first" подхода, который выведет вас на длинную дорожку, полную боли и страданий, как только проект начнет расти.


image
"Слишком занят, чтобы стать лучше" Licensed CC by Alan O’Rourke / Audience Stack. Оригинальное изображение

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

Упарываемся по максимуму: от ORM до анализа байткода

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

Как известно, настоящий программист в своей жизни должен сделать 3 вещи: создать свой язык программирования, написать свою операционную систему и сделать свой ORM. И если язык я написал уже давно (возможно, расскажу как-нибудь в другой раз), а ОС еще ждет впереди, то про ORM я хочу поведать прямо сейчас. А если точнее, то даже не про сам ORM, а про реализацию одной маленькой, локальной и, как изначально казалось, совсем простой фичи.


Мы с вами вместе пройдем весь путь от радости нахождения простого решения до горечи осознания его хрупкости и некорректности. От использования исключительно публичного API до грязных хаков. От "почти без рефлекшена", до "по колено в интерпретаторе байт-кода".


Кому интересно как анализировать байт-код, какие сложности это в себе таит и какой потрясающий результат можно получить в итоге, добро пожаловать под кат.

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

Joker 2018: Клуб неанонимных Java-разработчиков

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

Чем Joker хорош как явление? По сути, это единственное место, куда можно прийти и поговорить за джаву.


И при этом Joker – праздник. Это не то место, где кучка старпёров нудит, какая Java тормозная, какой Hibernate костыльный, почему что-то там не компилируется и так далее — если понимаешь, о чём я.


Joker — это место, где можно и поплакать в жилетку, и получить конструктивный фидбэк, и вдохновиться на новые подвиги. Это особый клуб разработчиков-энтузиастов, со своими правилами и фичами, о которых мы и поговорим в этой статье.


Скоро будет новый Joker — уже шестой по счёту. Если интересно сразу узнать дату и время проведения — смотри под кат, иначе — читай дальше.


Скрытый текст
Что: Joker — наша самая большая международная Java-конференция для опытных разработчиков;
Где: Санкт-Петербург, Экспофорум;
Когда: 19-20 октября 2018.

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

Митап JavaJam. Спор о джавистах, сплав на брёвнах, эксперименты и микросервисы

Время на прочтение4 мин
Охват и читатели6.5K
Java-разработчики классные.

Фронтендеры их хвалят и перенимают полезные инструменты, дизайнеры с особой любовью приносят макеты, а тестировщики ликуют, потому что все автоматизировано и жизнь — сахар (но об этом мы пока не рассказывали).

Иногда мы проводим для них java-митапы — собираем экспертов и просим их рассказать что-нибудь позабористей. Так и в этот раз — коллеги из Сбербанка, Одноклассников, Яндекса и Яндекс.Денег пришли на JavaJam и выложили сразу кучу подробностей о своей работе.

image

Под катом:

— Главное о логировании Java-приложений на примерах от Яндекса;
— Разработка инструмента на Low-code для UFS Сбербанка;
— Автоматизация экспериментов в Одноклассниках с помощью Kotlin DSL;
— Как в Яндекс.Деньгах сделали одну платформу для микросервисов вместо семи.

А еще там опрос о том, уместно ли называть java-разработчиков джавистами.

Извлечение сущностей из текста с помощью Stanford NLP с нуля

Время на прочтение4 мин
Охват и читатели15K
Данная статья предназначена для тех, кто никогда не работал со Stanford nlp и столкнулся с необходимостью в кратчайшие сроки изучить его и применить.

Данный софт достаточно распространен, и, в частности, наша фирма — БалтИнфоКом — использует эту программу.

Для начала надо понять простую вещь: Stanford NLP работает по принципу аннотирования слов, то есть на каждое слово «навешиваются» одна или более аннотаций, например POS (Part of Speech — часть речи), NER (Named-Entity Recognizing – именованная сущность) и т.д.

Первое, что видит новичок, зайдя на сайт Stanford NLP в раздел "быстрый старт", это следующую конструкцию:

Properties props = new Properties();
props.setProperty("annotators", "tokenize,ssplit,pos,lemma,ner,regexner,parse,depparse,coref");
StanfordCoreNLP pipeline = new StanfordCoreNLP(props);
// create a document object
CoreDocument document = new CoreDocument(text);
// annnotate the document
pipeline.annotate(document);

Здесь StanfordCoreNLP – это конвейер, на вход которому подается наш текст, предварительно упакованный в обьект CoreDocument. StanfordCoreNLP, это самый главный и часто используемый объект во всей структуре, с помощью которого происходит вся основная работа.

Сначала задаем параметры в StanfordCoreNLP и указываем, осуществление каких действий нам нужно. При этом все возможные комбинации этих параметров можно найти на официальном сайте по этой ссылке.

  • tokenize – соответственно разбиение на токены
  • ssplit – разбиение на предложение
  • pos — определение части речи
  • lemma – добавление к каждому слову его начальной формы
  • ner — определение именованных сущностей, таких как «Организация», «Лицо» и т.д.
Читать дальше →

Летний митап Apache Ignite в Петербурге

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


Друзья, приглашаем вас на летний митап, посвящённый Apache Ignite. Присоединяйтесь к нашей неформальной встрече пользователей и разработчиков. Будут новые докладчики, новые темы и мороженое. С собой приносите интересные вопросы и летнее настроение.

20 июня, Cанкт-Петербург

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

Приглашаем на Java Meetup в Райффайзенбанк UPD Трансляция

Время на прочтение1 мин
Охват и читатели4.9K
Внутреннее сообщество Java-разработчиков Райффайзенбанка приглашает на свой первый открытый митап, который пройдет на площадке московского офиса в Нагатино, 28 июня.