Обновить
128K+

Java *

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

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

Склейка двух apk-файлов в один

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

Решил я как-то сделать склейку двух apk файлов, но информации о том, как это сделать на просторах интернета не особо то много. Тогда вооружившись трояном Ahmyth для android (его исходниками), началось путешествие в мир склейки apk своими руками. Коротко об этом далее…
Читать дальше →

О сборке JDK 8 на Ubuntu, качестве кода Hotspot и почему всё валят на C++

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

Хотел сегодня поспать, но опять не удалось. В Телеграме появилось сообщение, что у кого-то не собирается Java… и мы очнулись только через пару часов, уставшие и довольные.




Кому этот пост может быть полезен? Да, наверное, никому, кроме тех, кто тоже собирает JDK8 или просто любит почитать кошмарные ужасы. В общем, я вас предупредил, закрывайте статью срочно.

Проблемы три:


  • Не собирается (уровень первый)
    Очень скучная часть, которую можно пропустить. Нужна только для тех, кто хочет полностью восстановить историю событий;
  • Не собирается (уровень второй)
    Интересней, потому что там есть пара типичных ошибок, некромантия, некрофилия, в чём BSD лучше GNU/Linux и почему стоит переходить на новые версии JDK.
  • Даже если собирается, падает в корку
    Более интересно. Йахууу, JVM упала в корку, давайте пинать её ногами!

Под катом показан подробный ход решения проблем, с разными побочными мыслями о жизни.


Будет много C++, кода на Java не будет вообще. Любой джавист в конце концов начинает писать только на C++…

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

Открытый урок Java Enterprise «CDI in action»

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

Наш прекрасный Виталий Иванов, преподаватель курса «Разработчик Java Enterprise» провёл на прошлой неделе вебинар на тему «CDI in action» — про с одну из ключевых спецификаций стека Java Enterprise — Contexts and Dependency Injection 2.0. На уроке в целом разбирались паттерны IoC и DI, а на примере референсной имплементации Weld провели знакомство с Managed Beans, способами их внедрения и определения контекста, плюс разобрали такие возможности спецификации, как перехватчики, декораторы и альтернативы.


Если есть какие-либо вопросы и комментарии, то их можно оставить тут или задать их Виталию напрямую, зайдя на день открытых дверей.

Реализация своего IoC контейнера

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

Введение


Каждый начинающий разработчик должен быть знаком с понятием Inversion of Control (Инверсия управления).

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

Инверсия управления (Inversion of Control, IoC) — важный принцип объектно-ориентированного программирования, используемый для уменьшения связанности в компьютерных программах и входящий в пятерку важнейших принципов SOLID.

На сегодня существуют несколько основных фреймворков по этой теме:

1. Dagger
2. Google Guice
3. Spring Framework

По сей день пользуюсь Spring и частично доволен его функционалом, но пора бы попробовать что-то и свое, не правда ли?
Читать дальше →

Команда плагинов для настройки JavaFX компонент в настольном приложении

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

Всегда приятно общаться с приложением, которое запоминает твои повадки и словно чувствует тебя, того, что ты хочешь. Любая UI библиотека или платформа обладает увы лишь базовым функционалом и набором компонент. Например, если колонка в таблице не перемещается или по ней нельзя отсортировать, то такое приложение, в котором она используется сложно назвать дружелюбным. К счастью, сегодня таким функционалом никого не удивишь. Однако, не каждая программа запомнит положение этой колонки и в следующем сеансе отобразит ее именно на том же месте. Возможно, также будет раздражать каждый раз устанавливать положение разделителя в SplitPane или вводить одни и те же параметры фильтра. Как правило, такие удобства приходится обеспечивать самим разработчикам.


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

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

Хватит кормить логгеры! Даешь больше модификаторов! Lazy Static Final Fields. Черновой набросок фичи

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

Достало, что в Java логгеры инициализируются в момент инициализации класса, отчего замусоривают весь запуск? Джон Роуз спешит на помощь!


Вот как это может выглядеть:


lazy private final static Logger LOGGER = Logger.getLogger("com.foo.Bar");

Этот документ расширяет поведение final-переменных, позволяя по желанию поддерживать ленивое выполнение — как в самом языке, так и в JVM. Поведение существующих механизмов ленивого вычисления предлагается улучшить, изменив гранулярность: теперь она будет не с точностью до класса, а с точностью до конкретной переменной.


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

Corda: Kotlin

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

Когда кто-то смотрит на код Corda, то сразу обращает внимание, что он написан на Kotlin — новом языке программирования от JetBrains, который может компилироваться под JVM и в Javascript. Это был необычный выбор, и в этой статье я хочу поделиться некоторыми причинами такого решения и опытом нашего "года с Kotlin в продакшене".

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

Backend United #2: Фарш

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

Всем привет! Меня зовут Фрол Крючков, я тимлид группы разработки в Авито. 22 сентября приглашаю всех в наш офис на Backend United 2: Фарш — встречу, посвященную тестированию бэкенда. С коллегами мы поговорим об основных приемах тестирования бэкенда, отличиях тестирования на разных языках, CDC-подходе к тестированию микросервисов, механике и сложностях внедрения Pact и выясним, как создать честные и эффективные изоляционные тесты в микросервисной архитектуре. С докладами, кроме меня, выступят представители Radio QA, Juno и Lifland Gaming.


Под катом — тезисы выступлений докладчиков, ссылка на регистрацию и трансляцию встречи.


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

Стандартный Error Handler в RxJava2 или почему RxJava вызывает сбой приложения даже если реализован onError

Время на прочтение4 мин
Охват и читатели13K
В переводе статьи пойдёт речь об UndeliverableException в RxJava2 версии 2.0.6 и новее. Если кто-то столкнулся и не может разобраться, или совсем не слышал об этой проблеме — прошу под кат. Побудили к переводу проблемы в production после перехода с RxJava1 на RxJava2. Оригинал был написан 28 декабря 2017, но лучше узнать поздно, чем никогда.
Читать дальше →

Два Apache Ignite митапа и In-Memory Computing вебинар в сентябре

Время на прочтение2 мин
Охват и читатели1.2K
Мы уже готовимся к Joker и Highload++, а вы? Тем временем в сентябре можно обсудить Apache Ignite сразу на двух встречах — в Москве и Петербурге. А еще мы продолжаем цикл вебинаров для тех, кто еще только сравнивает разные In-Memory решения, чтобы выбрать самое подходящее. Присоединяйтесь!

11 сентября (Москва) Apache Ignite Meetup Moscow #4


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

Как с треском провалить миграцию с Java на Kotlin в Android приложении

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

Как с треском провалить миграцию с Java на Kotlin в Android приложении


С тех пор, как Google объявила об официальной поддержке Kotlin в Android, всё больше разработчиков хотят использовать его в своих новых и существующих проектах. Поскольку я также большой поклонник Kotlin, я не мог дождаться, когда смогу использовать Kotlin в своём рабочем проекте. В конце концов, Kotlin полностью совместим с Java, и все разработчики просто в восторге от этого. Так что же может пойти не так?

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

Получение списка аварий из OSS через интерфейс AlarmIRP

Время на прочтение6 мин
Охват и читатели3.1K
Здравствуйте. Данная тема очень слабо раскрыта в Сети поскольку представляет интерес лишь в узких кругах. Чтобы немного восполнить этот пробел, данное место мне видится наиболее подходящим.
Читать дальше →

Максимально простой в поддержке способ интеграции java-клиента с java-сервером

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

При решении повседневных задач с интерфейсом настольного приложения, реализованного на JavaFX, приходится в любом случае делать запрос на веб-сервер. После времен J2EE и страшной аббревиатуры RMI многое изменилось, а вызовы на сервер стали более легковесными. Как нельзя кстати для подобной проблемы подходит стандарт веб-сокетов и его обмен простыми текстовыми сообщениями любого содержания. Но проблема корпоративных приложений в том, что разнообразность и количество запросов превращает создание и отслеживание EndPoint-ов при наличии отдельно выделенных бизнес-сервисов в жуткую рутину и добавляет лишних строк кода.


А что если взять за основу строго типизированную стратегию с RMI, где между клиентом и сервером существовал стандартный java interface, описывающий методы, аргументы и возвращаемые типы, где добавлялось пару аннотаций, и волшебным образом клиент даже не замечал, что идет вызов по сети? Что если по сети передавать не просто текст, а сериализованные java-объекты? Что если добавить к этой стратегии легкость веб-сокетов и их преимущества возможности push-вызовов клиента со стороны сервера? Что если асинхронность ответов веб-сокета для клиента обуздать в привычный блокирующий вызов, а для отложенного вызова добавить возможность возвращения Future или даже CompletableFuture? Что если добавить возможность подписки клиента на определенные события от сервера? Что если на сервере иметь сессию и подключение к каждому клиенту? Может получиться неплохая прозрачная связка привычная любому java-программисту, так как за интерфейсом будет скрыта магия, а в тестировании интерфейсы легко подменить. Но вот только это все не для нагруженных приложений, обрабатывающих, например, котировки с фондовой биржи.

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

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

Выгружаем данные в Excel. Цивилизованно

Время на прочтение9 мин
Охват и читатели76K
Есть в IT-отрасли задачи, которые на фоне успехов в big data, machine learning, blockchain и прочих модных течений выглядят совершенно непривлекательно, но на протяжении десятков лет не перестают быть актуальными для целой армии разработчиков. Речь пойдёт о старой как мир задаче формирования и выгрузки Excel-документов, с которой сталкивался каждый, кто когда-либо писал приложения для бизнеса.



При чём тут ксилофон?!

Компактный сервер с настроенной перезагрузкой кода и sql-логами одной maven командой для продуктивной разработки

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

Хотелось бы поделиться опытом использования payara-micro в разработке корпоративных приложений. Надеюсь, что кому-то сэкономлю время, так как такое решение пришло далеко не сразу. Если вы уже используете Payara или Glassfish в качестве промышленного сервера, или только собираетесь окунуться в мир javaee, то payara-micro и эта статья для Вас.


Вам понадобится web-приложение, которое собирается посредством maven в war-архив, и Java 8 (на более старших работу не проверял).

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

«Крайне мало кто реально пишет бэкенд на Котлине» — интервью с Пашей Финкельштейном

Время на прочтение22 мин
Охват и читатели16K
Как стать программистом от безысходности и подняться к вершинам успеха? Сегодня в нашей виртуальной студии на вопросы отвечает Паша asm0dey Финкельштейн. Паша – один из немногих, кто разбирается в создании бэкендов на Kotlin. Кроме того, он пилит опенсорс, активно участвует в жизни сообщества, и, на минуточку, — побывал на почти всех наших московских Java-конференциях.

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

Почему человек из мира Java стал горячим сторонником Node.js и JavaScript?

Время на прочтение20 мин
Охват и читатели27K
Дэвид Хэррон, автор материала, перевод которого мы публикуем сегодня, задался следующим вопросом: «Должен ли человек, работавший более 10 лет в Sun Microsystems, в команде Java SE, до последнего вздоха думать лишь о байт-коде Java и создавать экземпляры абстрактных интерфейсов?». Он задавал этот вопрос применительно к себе, и для него платформа Node.js, после Java, оказалась подобна глотку свежего воздуха. Дэвид говорит, что когда он был уволен из Sun в январе 2009 года (прямо перед поглощением этой компании Oracle), он узнал о Node.js. Эта технология его зацепила. Что значит «зацепила»? С 2010-го года он много писал о программировании для Node.js. А именно, написал несколько книг, в том числе — «Node.js Web Development», четвёртое издание которой вышло в этом году. Он подготовил множество небольших материалов о Node.js, опубликованных в интернете. Фактически, он уделил очень много времени и сил, рассказывая о платформе Node.js и о возможностях JavaScript. Почему того, кто раньше занимался исключительно Java, так увлекли Node.js и JavaScript?

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

Что почитать про Java прямо сейчас?

Время на прочтение5 мин
Охват и читатели79K
Язык Java появился в уже далёких в 1990-х годах и менее чем за 5 лет стал одним из трёх самых популярных языков на планете. Сегодня, в том числе благодаря развитию мобильного мира, Java продолжает быть современным и невероятно востребованным представителем мира IT.

Но популярность вкупе с возрастом имеет и обратную сторону медали — за эти 23 года было издано огромное количество литературы. Некоторые книги стали настоящей классикой, поэтому именно на них ориентируются преподаватели на учебных курсах даже сегодня в 2018 году. Однако это не означает, что за последние годы не издавалось хороших книг. В подтверждение этого, автор GeekBrains Илья Бубнов изучил онлайн-магазины, чтобы найти десяток самых рейтинговых книг по Java, изданных или переизданных на русском языке за последний год.

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

Java EE Concurrency API

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

А мы тут плюшками балуемся запускаем второй поток курса «Разработчик Java Enterprise». Бессменный создатель и преподаватель курса — Виталий Иванов, написал вот по этому поводу статью даже, которая, как надеемся, покажется вам полезной :)

Так что поехали :)

Данная статья посвящена изучению API к спецификации JavaEE Concurrency (JSR 236), определяющий стандарт выполнения параллельных задач в JavaEE контейнере, используя концепцию управляемых ресурсов. Выход седьмой версии JavaEE сделал возможным запуск параллельных задач в Enterprise-контейнерах, предоставляя разработчику удобные средства и утилиты для работы с многозадачностью. До того самого момента, вся многозадачность отдавалась на откуп конкретной реализации используемого сервера приложений, самостоятельно принимающего решение об оптимизации выполнения задач. Нарушение этого принципа расценивалось как плохая практика построения архитектуры Enterprise-приложений. Вследствие чего, разработчику не рекомендовалось создавать новые потоки, а иногда и запрещалось подобное поведение на уровне контейнера.

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