Обновить
128K+

Java *

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

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

Текущая разработка Kotlin

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


На прошлой неделе при поддержке Redmadrobot SPB в рамках SPB Kotlin User Group прошла встреча со Станиславом Ерохиным, разработчиком из JetBrains. На встрече он поделился информацией о разрабатываемых возможностях следующей мажорной версии Котлина (под номером 1.3).


В этой статье мы подытожим полученный материал, расскажем о планах.

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

Вредный Кейворд «Interface»

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

Перевод ироничного поста из блога Боба Мартина в котором он рассуждает о том, насколько неудачным является использование слова interface в современных языках программирования, и какую путаницу и проблемы оно несёт разработчикам.


— Что ты думаешь об интерфейсах?


Имеешь в виду интерфейсы в Java или C#?


— Да. Классная фича этих языков?


Просто великолепная!


— Правда? А что такое интерфейс? Это то же самое что и класс?


Ну… Не совсем!

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

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

Время на прочтение65 мин
Охват и читатели10K
Только поутихли страсти с первой части разбора, вышедшей на прошлой неделе, как публикую продолжение: сегодня речь пойдёт о второй задаче.

Код второй задачи:
    String format(String user, String grade, String company, String message) {
        return String.format(
                "Он, %s, придумал такие %s задачи. Приду на стенд %s и скажу ему %s",
                user, grade, company, message);
    }

    String format(String user, String grade, String company, String message) {
        return "Он, " + user
                + ", придумал такие " + grade
                + " задачи. Приду на стенд " + company
                + " и скажу ему " + message;
    }

    String format(String user, String grade, String company, String message) {
        return new StringBuilder("Он, ")
                .append(user)
                .append(", придумал такие ")
                .append(grade)
                .append(" задачи. Приду на стенд ")
                .append(company)
                .append(" и скажу ему ")
                .append(message)
                .toString();
    }

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

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

Различные стратегии именования в Hibernate

Время на прочтение4 мин
Охват и читатели17K
Привет, Хабр! Представляю вашему вниманию перевод статьи "Different Hibernate Naming Strategy" автора Dhiraj Ray.

В этой статье обсуждаются различные стратегии именования, предоставляемые hibernate, а также переход стратегии именования от hibernate.ejb.naming_strategy в hibernate 4 до hibernate.implicit_naming_strategy и hibernate.physical_naming_strategy в hibernate 5. А в конце мы будем изучать реализацию пользовательской стратегии именования и конфигурацию для запуска с помощью Spring Boot.

Стратегия именования Hibernate 4


Hibernate использует эту стратегию для сопоставления сущности и атрибута java с соответствующим именем реляционной базы данных и столбцов. В hibernate 4 использовалась стратегия именования hibernate.ejb.naming_strategy. Эта стратегия использует EJB3NamingStrategy, ImprovedNamingStrategy, DefaultComponentSafeNamingStrategy и DefaultNamingStrategy для сопоставления имен. EJB3NamingStrategy — используемая по умолчанию стратегия наименования, и она предоставляет имена полей и таблиц в стиле camelCase. В то время как именование столбца внешнего ключа использует нижнее подчеркивание (_) как разделение. Например, если у вас есть таблица с именем и таблица1 с именами столбцов id и name, то во второй таблице столбец внешнего ключа будет создан как table1_id, таким образом EJB3NamingStrategy реализует интерфейс NamingStrategy.
Читать дальше →

Релиз Apache Ignite 2.4 — Distributed Database and Caching Platform

Время на прочтение5 мин
Охват и читатели5.1K
12 марта 2018 г., спустя 4 месяца после прошлой версии, вышел Apache Ignite 2.4. Этот релиз примечателен целым рядом нововведений: поддержка Java 9, множественные оптимизации и улучшения SQL, поддержка платформой нейронных сетей, новый подход к построению топологии при работе с диском и многое другое.

Apache Ignite Database and Caching Platform — это платформа для распределенного хранения данных (оптимизированная под активное использование RAM), а также для распределенных вычислений в близком к реальному времени.

Ignite применяется там, где нужно очень быстро обрабатывать большие потоки данных, которые не по зубам централизованным системам.

Примеры использования: быстрый распределенный кеш; слой, агрегирующий данные из разрозненных сервисов (например, для Customer 360 View); основное горизонтально масштабируемое хранилище (NoSQL или SQL) оперативных данных; платформа для вычислений и т.д.

Далее рассмотрим основные новшества Ignite 2.4.
Читать дальше →

Учебник Thymeleaf: Глава 7. Условное выполнение

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

7 Условное выполнение


7.1 Простые условия: «if» (если) и «unless» (если не)


Иногда вам понадобится фрагмент шаблона, чтобы появляться только в результате выполнения определенного условия.
Читать дальше →

Учебник Thymeleaf: Глава 6.Итерации

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

6 Итерации


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

Алексей Рагозин о Java Mission Control на jug.msk.ru

Время на прочтение2 мин
Охват и читатели5.7K
13 марта 2018 года прошла первая в этом сезоне встреча московского сообщества Java-разработчиков jug.msk.ru. Алексей Рагозин провёл мастер-класс по использованию Java Mission Control. Как прошла встреча, что именно на ней рассказывалось, как приняли доклад участники — обо всём этом далее.


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

Хардкорные Java/JVM задачки

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

Перформансные задачи от Контура уже были, настала и наша очередь: представляем хардкорные задачи с Java-конференции JBreak 2018, aka «ад от Excelsior».


Задачи даны в оригинальных формулировках, в каждой задаче может быть несколько правильных ответов, и к каждой задаче дано решение под спойлером.


Задача 1


Ваш коллега начитался Java Language Specification и написал следующее:


void playWithRef() {
    Object obj = new Object();
    WeakReference<Object> ref = new WeakReference<>(obj);
    System.out.println(ref.get() != null);
    System.gc();
    System.out.println(ref.get() != null);
}

А разгребать вам: какие результаты исполнения возможны?

Правильный ответ и еще больше хардкора!

Платформа CUBA: Roadmap 2018

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

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


Дисклеймер: Этот план не является догмой, и мы наверняка реализуем что-то сверх него, а что-то наоборот отложим. Однако в целом мы собираемся придерживаться этого плана, и предлагаем сообществу разработчиков на Платформе CUBA также на него ориентироваться.


Тизер: CUBA Studio будет встроена в IntelliJ IDEA!


Итак, поехали!



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

JetBrains Open Day в Москве

Время на прочтение1 мин
Охват и читатели5.4K
Привет, друзья! 19-20 апреля мы устраиваем Open Day в Москве. Оказалось, ещё не все знают, что в столице у JetBrains тоже есть офис. Недавно он увеличился в три раза, и теперь там много места не только для митапов, но и для новых сотрудников.

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

Google leanback — забота большого брата

Время на прочтение11 мин
Охват и читатели11K
Добрый день, читатели Хабра. Хотел бы поделиться своим опытом разработки приложения для Android TV на примере DetailsFragment.


Есть официальные примеры тут и официальная документация тут. Что сподвигло меня выразить свое мнение? Это то, что официальные примеры не отвечают современным требованиям к разработке, например, модульности и расширяемости. Иногда создается некая двойственность при использовании того или иного механизма. Рассмотрим более подробно DetailsFragment.

Для того чтобы начать разрабатывать ваше приложение для платформы android, на мой взгляд, вам следует принять 2 основные истины:

  • Плохая идея отходить от официальных рекомендаций и разрабатывать кастомизированное приложение. Гугл позаботился о том, чтобы сделать это было крайне сложно.
  • Single Activity Architecture также не совсем подходит, это чревато утечками памяти, связанной с внутренними реализации библиотеки leanback.
Читать дальше →

Что делает сова в ZeroNights 2017 Crackme №3?

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


ZeroNights 2017 Crackme №3 — довольно простое задание, но, тем не менее, и в нём есть несколько интересных моментов и сова.


Под катом — дизассемблирование, декомпиляция, pull request в IntelliJ IDEA и ни единого запуска отладчика.

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

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

Учебник Thymeleaf: Глава 5 Установка значений атрибутов

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

5 Установка значений атрибутов


В этой главе мы объясним, как можем установить (или изменить) значения атрибутов в разметке.
Читать дальше →

Производительность и рантаймы на конференции JPoint 2018

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

Все мы имеем какие-то ожидания от конференций. Обычно мы идём на вполне конкретную группу докладов, вполне конкретной тематики. Набор тем отличается от платформы к платформе. Вот что сейчас интересует джавистов:


  • Производительность
  • Виртуальные машины и особенности рантаймов
  • JDK 9/10/...
  • Фреймворки
  • Архитектура
  • Enterprise
  • Большие данные и машинное обучение
  • Базы данных
  • JVM-языки (включая Kotlin)
  • DevOps
  • Разные мелкие темы

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


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


Масштабирование, кластеры и всё такое рассматривать тут не будем, достаточно сказать, что оно есть (Christopher Batey из Lightbend расскажет про Akka, Виктор Гамов из Confluent расскажет про Kafka, и так далее).


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

Java и Project Reactor

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


Всем привет! Меня зовут Лёха, и я работаю бэкенд-разработчиком в FunCorp. Сегодня мы поговорим про реактивное программирование, библиотеку Reactor и немного про веб.


Реактивное программирование часто «подвергается упоминанию», но если вы (как и автор статьи) всё ещё не знаете, что это такое — устраивайтесь поудобнее, попробуем разобраться вместе.

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

Учебник Thymeleaf: Глава 4. Standard Expression Syntax

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

4 Стандарт синтаксиса Выражений/Standard Expression Syntax


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

Мы уже видели два типа допустимых значений атрибутов, выраженные в этом синтаксисе: сообщения и переменные:

<p th:utext="#{home.welcome}">Welcome to our grocery store!</p>

<p>Today is: <span th:text="${today}">13 february 2011</span></p>
Читать дальше →

Учебник Thymeleaf: Глава 3. Использование Text

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

3 Использование Text


3.1 Мультиязычное «Добро пожаловать»


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

Первая версия страницы будет предельно проста: просто заголовок и приветственное сообщение. Это наш /WEB-INF/templates/home.html файл:
Читать дальше →

«Придётся писать самим. Сели и написали»: жизнь разработчиков лабораторного кластера супермассивов в Сбертехе

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

Существует миф, что банки — это очень закостенелые структуры, в которых нет места эксперименту. Чтобы опровергнуть этот миф, мы провели небольшое интервью с Валерием Выборновым — начальником отдела разработки лабораторного кластера супермассивов в Сбербанк-Технологиях. У себя в команде они не боятся пользоваться всей мощью Scala, Akka, Hadoop, Spark, и даже пишут прототипы на Rust.



Основные вопросы:


  • Обсуждение примера экспериментального проекта (работа с социальным графом) с техническими подробностями;
  • Используемые языки и технологии (Scala, Akka, Hadoop, Spark, Rust, и т.п.);
  • Можно ли прийти в Сбертех сразу на руководящую должность? Как там внутри всё организовано, какие есть грейды?
  • Как живётся простому разработчику? Подробности внедрения Сберджайла;


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

Учебник Thymeleaf: Глава 2. Хорошая виртуальная бакалейная лавка Thymes

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

2 Хорошая виртуальная бакалейная лавка Thymes


Исходный код примеров, показанных в этом и будущих главах руководства, можно найти в репозитории Good Thymes Virtual Grocery GitHub https://github.com/thymeleaf/thymeleafexamples-gtvg.

2.1 Вебсайт для бакалейной лавки


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

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