Обновить
128K+

Java *

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

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

Вопросы совместимости Tibero и Oracle. Часть 2. Разработка Java приложений

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

Мы продолжаем цикл статей разработчиков приложений для баз данных — Часть 1. Условная компиляция PL/SQL. Эта статья затронет тему использования Tibero в Java приложениях использующих JDBC и Hibernate, а также фреймворк Spring Roo.

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

Программирование согласно контракту на JVM

Время на прочтение4 мин
Охват и читатели7.6K
Привет, Хабр! Представляю вашему вниманию перевод статьи "Programming by contract on the JVM" автора Nicolas Fränkel.
Читать дальше →

Непридуманная история о производительности, рефлексии и java.lang.Boolean

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

Однажды, в студёную зимнюю пору (хотя на дворе был март) мне нужно было покопаться в куче (того, что называется heap dump, а не того, о чём вы подумали). Расчехлив VisualVM я открыл нужный файл и перешел в OQL консоль. Пока суд да дело, моё внимание привлекли запросы, доступные из коробки. Особенно в глаза бросался один из них, озаглавленный "Too many Booleans". В его описании английским по белому сказано:


Check if there are more than two instances of Boolean on the heap (only Boolean.TRUE and Boolean.FALSE are necessary).

Чувствуете, да? Вот и я проникся.

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

Учебник Thymeleaf: Глава 19. Приложение B: Полезные выражения

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

19 Приложение B: Полезные выражения


Информация о выполнении

#execInfo: выражения, предоставляющие полезную информацию о шаблоне, обрабатываемом внутри Thymeleaf Standard Expressions
Читать дальше →

Учебник Thymeleaf: Глава 18. Приложение A: Основные выражения

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

18 Приложение A: Основные выражения


Некоторые объекты и переменные всегда доступны для вызова. Давайте посмотрим на них:

Базовые объекты

#ctx: объект контекста. Реализация org.thymeleaf.context.IContext или org.thymeleaf.context.IWebContext в зависимости от нашей среды (standalone или web).

Примечание #vars и #root являются синонимами для одного и того же объекта, но рекомендуется использовать #ctx.
Читать дальше →

Учебник Thymeleaf: Глава 17. Разделенная логика шаблонов

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

17 Разделенная логика шаблонов


17.1. Разделенная логика: концепция


До сих пор мы работали в нашем магазине Grocery Store с шаблонами, выполненными обычным способом, с логикой, вставленной в наши шаблоны в виде атрибутов.

Но Thymeleaf также позволяет полностью отделить шаблонную разметку от логики, позволяя создавать полностью не требующие логики шаблоны разметки в режимах HTML и XML-шаблонов.

Основная идея заключается в том, что логика шаблона будет определена в отдельном логическом файле (точнее, логическом ресурсе, поскольку он не обязательно должен быть файлом). По умолчанию этот логический ресурс будет дополнительным файлом, находящимся в том же месте (например, папке) в качестве файла шаблона с тем же именем, но с расширением .th.xml:
Читать дальше →

Модифицируем плеер Vanilla Music под Android (часть 2)

Время на прочтение3 мин
Охват и читатели3.9K
В прошлой статье мы разбирали как можно добавить в плеер с открытым исходным кодом Vanilla Music возможность переключения треков при помощи клавиш громкости, если при этом устройство находится в кармане(например). В этой статье продолжим модификацию основной идеей для которой послужила следующая мысль — как можно переключать треки, не касаясь смартфона, не разблокируя его — в общем с минимальными усилиями.
Читать дальше →

Учебник Thymeleaf: Глава 16. Кэш шаблонов

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

16 Кэш шаблонов


Thymeleaf работает благодаря набору парсеров для разметки и текста — который анализирует шаблоны в последовательности (открытый тег, текст, тег закрытия, комментарий и т. д.). И ряд процессоров по одному для каждого типа поведения, которые применяются и изменяют последовательность событий синтаксического анализа шаблона, чтобы создать ожидаемые результаты, объединив исходный шаблон с нашими данными.
Читать дальше →

Учебник Thymeleaf: Глава 15. Подробнее о конфигурации

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

15 Подробнее о конфигурации


15.1 Resolver шаблонов


Для нашего виртуального бакалейного магазина Thymes мы выбрали реализацию ITemplateResolver под названием ServletContextTemplateResolver, которая позволила получить шаблоны в качестве ресурсов из контекста сервлета.

Помимо предоставления возможности создавать собственный шаблонный резольвер, реализуя ITemplateResolver, Thymeleaf включает в себя четыре реализации из коробки:
Читать дальше →

Учебник Thymeleaf: Глава 14. Еще несколько страниц нашей бакалеи

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

14 Еще несколько страниц нашей бакалеи


Теперь мы много знаем об использовании Thymeleaf и можем добавить некоторые новые страницы на наш сайт для управления заказами.
Читать дальше →

Учебный фреймворк на Java по глубокому обучению

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

Недавно мы выпустили первую версию нового фреймворка по глубокому обучению DeepJava (DJ) 0.01.


Основная цель фреймворка, по крайней мере, на текущий момент, чисто учебная. Мы строим шаг за шагом фреймворк, у которого:


  • будет понятная кодовая база
  • будет набор бранчей, по которым можно шаг за шагом проследить процесс создания и понять, почему были сделаны те или иные изменения
Читать дальше →

Планы на JPoint 2018

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


Уже скоро в Москве пройдет международная Java-конференция JPoint, поэтому пора определиться с докладами, на которые стоит сходить. Рассказ пойдет о докладах, на которые пойду лично я и почему.


Я зарабатываю разработкой приложений на Java c 2012 года. В основном решаю проблемы интеграции систем и управления проектами, поучаствовал в нескольких десятках проектов, знаю не понаслышке про разработку веб-сервисов, десктопных и веб-приложений.

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

Java Puzzlers NG S02: всё чудесатее и чудесатее

Время на прочтение11 мин
Охват и читатели11K
Тагир Валеев (lany) и Барух Садогурский (jbaruch) собрали новую коллекцию Java-паззлеров и спешат ими поделиться.


В основе статьи – расшифровка их выступления на осенней конференции JPoint 2017. Она показывает, сколько загадок таит в себе Java 8 и едва замаячившая на горизонте Java 9. Все эти стримы, лямбды, монады, Optional-ы и CompletableFuture-ы были добавлены туда исключительно для того, чтобы нас запутать.

Все, о чем они рассказывают, должно работать на последней версии Java 8 и 9, соответственно. Мы проверили – вроде все по-честному: как написано, так себя и ведет.

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

О применении рефлексии в тестировании и не только

Время на прочтение2 мин
Охват и читатели6K
У многих рефлексия ассоциируется с раздутым кодом или с не правильным продуманным api.
Под катом несколько полезных примеров, которые покажут положительные стороны рефлексии.

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

Смена основного стека с .NET на Java

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


Хочу описать свои наблюдения и впечатления о самом популярном языке серверного программирования для Enterprise под названием Java. Наблюдения и впечатления на сравнении и контрасте с “похожей” платформой .NET, с которой я очень хорошо знаком. Уверен, что ~год назад, когда будущее нового дотнета в очередной раз показалось мне чересчур туманным и мысль сменить технологический стек окончательно материализовалась в голове, данная статья оказалась бы очень полезной. Я постараюсь не вдаваться в мелкие технические/стилистические различия языков программирования, которые легко нагуглить, а предложу скорее взгляд сверху — на экосистему в целом. Итак, Java глазами матёрого дотнетчика с десятилетним стажем. Прошу под кат.
Читать дальше →

Многопоточность на корабликах

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

Задача производитель/потребитель


Статья рассчитана для новичков, которые недавно начали свое знакомство с миром многопоточноcти на JAVA.
Читать дальше →

Тестирование Android приложений

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

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



Начнем с самых базовых вещей, потому более опытные разработчики могут перейти сразу к разделу об инструментах для UI тестирования. Для тех, кому хочется узнать или освежить базовые вещи — приятного чтения.

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

Учебник Thymeleaf: Глава 13. Текстовые режимы шаблона

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

13 Текстовые режимы шаблона


13.1 Текстовый синтаксис


Три типа шаблонов Thymeleaf считаются текстовыми: TEXT, JAVASCRIPT и CSS. Это отличает их от режимов шаблонов разметки: HTML и XML.

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

Разбор перформансных задач с JBreak (часть 4)

Время на прочтение43 мин
Охват и читатели7.3K
Разбор последней четвёртой задачи:

    public double octaPow(double a) {
        return Math.pow(a, 8);
    }

    public double octaPow(double a) {
        return a * a * a * a * a * a * a * a;
    }

    public double octaPow(double a) {
        return Math.pow(Math.pow(Math.pow(a, 2), 2), 2);
    }

    public double octaPow(double a) {
        a *= a; a *= a; return a * a;
    }

Условие (упрощённо):
Определить, какие методы быстрые, а какие — медленные (JRE 1.8.0_161).
Под катом бенчмарки, куски ассемблера и разбор оптимизаций со стороны JVM.

Другие публикации серии: Часть 1, Часть 2 и Часть 3.
Читать дальше →

Учебник Thymeleaf: Глава 12. Встраивание / Inlining

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

12 Встраивание / Inlining


12.1 Выражения встраивания / Expression inlining


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