Рубрика «java» - 79

О статье

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

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

Читать полностью »

Из Groovy ушёл Cédric Champeau‏ - 1

В проекте Apache Groovy перестаёт участвовать один из ключевых участников сообщества, само имя которого у многих ассоциировалось с этим языком. Уходит Седрик Шампо, известный в первую очередь как автор статического компилятора Groovy.

Если рассмотреть причины ухода в том виде, как их формулирует сам Седрик, получается история о том, как Groovy-сообщество хотело лучшего, а в итоге ненамеренно сделало себе хуже. В самом сообществе, впрочем, есть другие трактовки произошедшего. В любом случае история может быть интересна и разработчикам из JVM-мира, и не только.
Читать полностью »

image
Бессерверные архитектуры фундаментальным образом сказываются на лимитирующих факторах, сковывающих разработку продукта.

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

И снова здравствуйте. Как мы уже писали, на следующей неделе стартует новая группа обучения по курсу «Разработчик Java», по устоявшейся традиции делимся с вами переводом интересного материала по теме.

Начиная с JDK 9 конкатенация строк претерпела значительные изменения.

JEP 280 («Indify String Concatenation») был реализован в рамках JDK 9 и, в соответствии с разделом «Summary»: «Изменяет статическую последовательность байт-кода конкатенации строк, сгенерированную javac, для использования вызовов invokedynamic к функциям библиотеки JDK». Влияние, которое это оказывает на конкатенацию строк в Java, легче всего заметить, посмотрев на javap-вывод классов, использующих конкатенацию строк, которые скомпилированы в JDK до JDK 9 и после JDK 9.

JDK 9-JEP 280: конкатенация строк никогда больше не будет прежней - 1
Читать полностью »

Истории успеха любят все. И на хабре их достаточно много.

«Как я получил работу с зарплатой 300 000 долларов в Кремниевой долине»
«Как я получил работу в Google»
«Как я заработал 200 000 $ в 16 лет»
«Как я попал в Топ AppStore с простым приложением курса валют»
«Как я …» и еще тысяча и одна подобная история.

Как я не стал специалистом по машинному обучению - 1
Это же здорово, что человек добился успеха и решил об этом рассказать! Читаешь и радуешься за него. Но большинство таких историй объединяет одно: ты не можешь повторить путь автора! Либо ты живешь не в то время, либо не в том месте, либо ты родился мальчиком, либо…

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

Читать полностью »

При создании приложения мы столкнулись с множеством выборов, проблем и так далее, с которыми попробуем ознакомить вас в этой статье. Как оказалось с автомобилем можно вести диалог, причем довольно таки продуктивный. Естественно для того чтобы организовать общение с автомобилем необходимо «установить контакт», «задать правильный вопрос» и правильно понять «ответ», полученный от автомобиля. Соответственно статья и будет нацелена на то, чтобы доступным языком объяснить организацию диалога, а также рассказать вам какие ошибки могут встретиться вам на пути и как с ними бороться.
Читать полностью »

Модернизация GHIDRA. Загрузчик для ромов Sega Mega Drive - 1

Приветствую вас, товарищи. Не слышал о пока-ещё-не-опенсорсной GHIDRA, наверное, только глухой/слепой/немой/без_интернета реверс-инженер. Её возможности из коробки поражают: декомпиляторы для всех поддерживаемых процессоров, простое добавление новых архитектур (с сразу же активной декомпиляцией благодаря грамотному преобразованию в IR), куча скриптов упрощающих жизнь, возможность Undo/Redo… И это только очень малая часть всех предоставляемых возможностей. Сказать что я был впечатлён — это практически ничего не сказать.Читать полностью »

What's new in CUBA 7

Three years ago we announced the second publicly available major version of the framework. CUBA 6 was the game-changing version — the licensing was turned from proprietary to Apache 2.0. Those days we couldn't even guess where it was going to bring the framework in long term. CUBA community started to grow exponentially, so we have learned a lot of possible (and sometimes impossible) ways of how developers use the framework. Now we are happy to announce CUBA 7, which, we hope, will make development more coherent and joyful for all community members from those just starting their journey in CUBA and Java to skilled enterprise developers and Java experts.

cuba

Читать полностью »

Type Hierarchy в IntelliJ IDEAВажной возможностью любой IDE является поиск и навигация по коду. Один из часто используемых вариантов поиска на языке Java — поиск всех реализаций данного интерфейса. Часто такая функция называется иерархией типов (Type Hierarchy) и выглядит как на картинке справа.

Перебирать все классы проекта при вызове этой функции — неэффективно. Можно сохранить в индекс полную иерархию классов во время компиляции, так как компилятор все равно ее строит. Мы это делаем, если компиляция запускается самой IDE, а не делегируется, например, в Gradle. Но это работает, только если после компиляции в модуле ничего не менялось. А в общем случае исходники — самый актуальный источник информации, и индексы строятся по исходникам.

Поиск непосредственных наследников — несложная задача, если мы не имеем дело с функциональным интерфейсом. При поиске реализаций интерфейса Foo надо найти все классы, где есть implements Foo, и интерфейсы, где есть extends Foo, а также анонимные классы вида new Foo(...) {...}. Для этого достаточно заранее построить синтаксическое дерево каждого файла проекта, найти соответствующие конструкции и добавить их в индекс.

Читать полностью »

Пришло время Java 12! Обзор горячих JEP-ов - 1

Прошло полгода, а значит — время устанавливать новую Java! Это был долгий путь, и до конца добрались немногие. Из интересных JEP-ов отвалились сырые строки, а вот об оставшемся мы поговорим под катом.

Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js