В прошедший четверг, 26 сентября 2019 года, в офисе компании КРОК на встрече московского сообщества Java-разработчиков jug.msk.ru выступил Андрей Беляев с докладом «Уменьшаем количество рефлексии в коде».
Рубрика «java» - 62
Андрей Беляев про рефлексию в Java на встрече jug.msk.ru
2019-09-29 в 17:11, admin, рубрики: java, JUG, jug.msk.ru, reflectionОбработка ошибок в функциональном стиле в Java
2019-09-29 в 6:03, admin, рубрики: java, kotlin, pattern matching, vavrКроме классического подхода для обработки ошибок с помощью исключений, можно выделить также функциональный подход.
Вместо того, чтобы кидать исключение сразу, можно его локализировать, а потом выполнить над ним определеные действия.
Например, в языке Scala для этого используется определенный класс Try.
def inputStreamForURL(url: String): Try[Try[Try[InputStream]]] = parseURL(url).map { u =>
Try(u.openConnection()).map(conn => Try(conn.getInputStream))
}
В Java мире с помощью библиотеки Vavr также можно обрабатывать ошибки в функциональном стиле.
Читать полностью »
Инициализация и работа интерпретатора байткода в JVM HotSpot под x86
2019-09-28 в 15:12, admin, рубрики: java, jvm monitoringПочти каждый Java разработчик знает, что программы, написанные на языке Java изначально компилируются в JVM-байткод и хранятся в виде class-файлов стандартизованного формата. После попадания таких class-файлов внутрь виртуальной машины и пока до них еще не успел добраться компилятор, JVM интерпретирует байткод, содержащийся в этих class-файлах. Данная статься содержит обзор принципов работы интерпретатора применительно к OpenJDK JVM HotSpot.
Вместо вступления
Всё началось с того, что мне захотелось изучить тонкости настройки Gradle, понять его возможности в Android разработке (да и вообще). Начал с жизненного цикла и книги, постепенно писал простые таски, попробовал создать свой первый Gradle плагин (в buildSrc) и тут понеслось.
Решив сделать что-то, приближенное к реальному миру Android разработки, написал плагин, который парсит layout xml файлы разметки и создает по ним Java объект со ссылками на вьюхи. Затем побаловался с трансформацией манифеста приложения (того требовала реальная задача на рабочем проекте), так как после трансформации манифест занимал порядка 5к строк, а работать в IDE с таким xml файлом довольно тяжело.
Так я разобрался как генерировать код и ресурсы для Android проекта, но со временем захотелось чего-то большего. Появилась мысль, что было бы круто трансформировать AST (Abstract Syntax Tree) в compile time как это делает Groovy из-под коробки. Такое метапрограммирование открывает много возможностей, была бы фантазия.
Дабы теория не была просто теорией, я решил подкреплять изучение темы созданием чего-то полезного для Android разработки. Первое, что пришло на ум — сохранение состояния при пересоздании системных компонентов. Грубо говоря, сохранение переменных в Bundle максимально простым способом с минимальным бойлерплейтом.
Топ 20 навигационных фич в IntelliJ IDEA. Часть 2
2019-09-27 в 14:25, admin, рубрики: android, intellij idea, java, Блог компании OTUS. Онлайн-образование, Разработка под androidПеревод статьи подготовлен специально для студентов курса «Android-разработчик. Продвинутый курс». И хотя в данном материале речь пойдет преимущественно о Java, материал будет полезен Android-разработчикам

Первая часть тут
Читать полностью »
Заменить Object на var: что может пойти не так?
2019-09-27 в 6:13, admin, рубрики: boxing, generics, java, lvti, type inference, вывод типов, дженерики, Занимательные задачки, ПрограммированиеНедавно я столкнулся с ситуацией, что замена Object на var в программе на Java 10 приводит к исключению в процессе выполнения. Мне стало интересно, много ли разных способов добиться такого эффекта, и я обратился с этим вопросом к сообществу:
Оказалось, что добиться эффекта можно разными способами. Хотя все они несильно сложные, но на примере такой задачки интересно вспомнить о разных тонкостях языка. Давайте посмотрим, какие удалось найти способы.
Пишем на Java для Nintendo DS
2019-09-26 в 11:35, admin, рубрики: java, nintendo ds, гик-порно, мобильная разработка, Разработка под Java ME, старое железо
Введение
Все началось с того, что я случайно нашел список homebrew программ (программы, разработанные усилиями пользователей для устройств, не предназначенных для запуска пользовательского ПО) для Nintendo DS и в нем увидел одну очень интересную строчку, а именно: «Pstros NDS — MIDP implementation run on the CLDC java machine compiled for NDS».
Будучи большим поклонником Java и Nintendo DS я решил разобраться, что это за зверь такой, и по возможности попробовать написать под эту JVM свое приложение. Тех, кому это интересно прошу под кат.
Читать полностью »
Apache, ViewState&Deserialisation
2019-09-25 в 12:01, admin, рубрики: Apache, cybersecurity, java, security, безопасность, Блог компании T.Hunter, информационная безопасность, сериализация, сериализация сложного объекта, уязвимостьВ данной статье рассмотрим уязвимость на основе подмены сериализованного Java-объекта ViewState и метод её эксплуатации на примере web-приложения виртуальной машины с HackTheBox, использующей технологию Apache MyFaces.
Эволюция создания веб-приложений на Java
2019-09-22 в 20:24, admin, рубрики: grails, GWT, j2ee, jakartaee, java, javascript, jee, jhipster, jsf, jsr, microprofile, play, spring, spring boot, spring webflux, struts, vaadinИстория развития построения веб-приложений на языке программирования Java с примерами их использования на временном промежутке от появления спецификации сервлетов до сегодняшнего дня.
Как я создавал «WildMAN» — пародию на множество 8-битных игр и недавно ее портировал на Android
2019-09-22 в 9:50, admin, рубрики: Battle Toads, dendy, game engine, java, sega, Super Mario, WildMan, Игры и игровые приставки, разработка игр, Разработка под androidЯ думаю каждого фаната приставочных игр интересовала тема создания игр и была мечта создать свою игру, в студенческие годы я увлёкся программированием.




