Как стать автором
Обновить
146.67
Рейтинг

Java *

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

Сначала показывать
  • Новые
  • Лучшие
Порог рейтинга
  • Все
  • ≥0
  • ≥10
  • ≥25
  • ≥50
  • ≥100

Разработка мультиагентной системы для рынка электроэнергии

Java *Энергия и элементы питания
Из песочницы

Пока я пишу статью, я еду в поезде и рядом со мной 79 ребят со всей России, которые 18 предыдущих дней занимались проектами в области энергетики, и среди них едут 9 победителей этой смены, среди которых и я. Ну a здесь я хочу рассказать про то, какую лепту я внес в наш проект.

Читать далее
Всего голосов 4: ↑2 и ↓2 0
Просмотры 1.1K
Комментарии 3

Мягкое удаление в Hibernate: неочевидные факты

Блог компании Haulmont Программирование *Java *

Мягкое удаление (soft deletion) — это популярная в энтерпрайз разработке стратегия удаления, когда вместо физического стирания та или иная запись помечается как удаленная, а потом фильтруется во всех запросах на чтение. Применение мягкого удаления может быть оправдано целым набором требований: аудит, возможность восстановления удаленных записей, а иногда необходимо уметь удалять данные, при этом сохраняя на них ссылки из других записей… 

Вообщем, нам, как авторам JPA Buddy (плагина для IntelliJ), пришлось с этим плотно разбираться. В этой статье мы рассмотрим детали, которые зачастую не упоминаются в большинстве публикаций по этой теме, хотя крайне важны для принятия решения о способе реализации мягкого удаления в вашем приложении. Давайте посмотрим, с чем вы, вероятно, намучаетесь. 

Читать далее
Всего голосов 21: ↑21 и ↓0 +21
Просмотры 2.3K
Комментарии 20

Создание реалистичных тестовых данных для Java приложений

Java *
Перевод
Tutorial

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

В этой статье я покажу вам, как использовать пример генератора данных Vaadin для создания демонстрационных данных для простой базы данных SQL. В статье показано, как создать полное приложение, используя Spring BootJPAProject LombokVaadin и MariaDB.

Читать далее
Всего голосов 4: ↑4 и ↓0 +4
Просмотры 1.6K
Комментарии 7

Java 17: Pattern Matching for switch

Программирование *Java *API *
Из песочницы

14-го сентября состоялась презентация Apple, в этот же день произошло не менее важное событие - релиз Java 17.

Среди новых фич подъехал паттерн матчинг для switch в preview моде.

История началась с того, что в jdk 16 расширили instanceof оператор, который теперь может принимать type pattern и выполнять матчинг по паттерну. Это маленькое изменение позволило упростить типичную конструкцию с проверкой на тип и последующее приведение.

Читать далее
Всего голосов 15: ↑15 и ↓0 +15
Просмотры 2.7K
Комментарии 10

Наиболее частые исключения Java

Блог компании OTUS Программирование *Java *
Перевод

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

Читать далее
Всего голосов 5: ↑3 и ↓2 +1
Просмотры 2.8K
Комментарии 3

30 сентября — MeetUp Backend Stories

Блог компании Альфа-Банк Java *Карьера в IT-индустрии Конференции

Привет!

В следующий четверг, 30 сентября, мы проведем митап для бэкенд-разработчиков.

Начало в 19:00 МСК, участие бесплатное, главное заранее зарегистрироваться, чтобы получить ссылку на трансляцию за час до её начала. Вести митап будет руководитель центра компетенций Java в Альфа-Банке — Павел Дерендяев.

А докладов будет три. Два от спикеров нашего банка, третий — от приглашённого эксперта из экосистемы недвижимости «Метр квадратный». Примерная продолжительность митапа — два часа.

Под катом — расписание и названия докладов.

Читать далее
Всего голосов 8: ↑6 и ↓2 +4
Просмотры 787
Комментарии 0

Hibernate Proxy — для чего используются и как получить исходный объект

Блог компании OTUS Программирование *Java *
Перевод

Hibernate использует прокси-объекты для реализации ленивой загрузки (lazy load) связей "к-одному". Их также можно использовать для улучшения производительности некоторых операций записи. 

Упоминания прокси-объектов вы могли встречать при отладке или в логах. Имя класса прокси состоит из имени класса сущности и суффикса, который зависит от версии Hibernate и библиотеки для работы с байт-кодом, которую использует Hibernate.

Читать далее
Всего голосов 8: ↑8 и ↓0 +8
Просмотры 1.5K
Комментарии 0

Собеседование наоборот: Usetech и Weigandt Consulting отвечают на вопросы о работе

Блог компании Хабр Карьера Java *Карьера в IT-индустрии

По следам Java-недели на Хабр Карьере было так много вопросов от участников, что они не уместились в полтора часа нашего итогового круглого стола с компаниями. Поэтому мы решили выпустить их в формате статьи здесь на Хабре и попросили компании ответить на те вопросы, которые показались им самыми интересными. Отозвались ребята из Weigandt Consulting и Usetech, и сегодня мы делимся их комментариями о работе джавистов, найме джунов и старте карьеры в Java-разработке, мнением о технологиях и карьерными советами.

Читать далее
Всего голосов 14: ↑13 и ↓1 +12
Просмотры 1.7K
Комментарии 0

Java.  The composite pattern on Game Server

Java *Анализ и проектирование систем *Разработка игр *Дизайн игр *Софт

Паттерн Компоновщик - так же известен как Дерево, Composite.

Суть паттерна

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

Проблема

Использование шаблона Composite имеет смысл только тогда, когда базовая модель вашего приложения может быть представлена в виде дерева.

Например, представьте, что у вас есть два типа объектов: конфигурация награды и конфигурация сундука. Сундук может содержать несколько Наград, а также несколько Сундуков меньшего размера. Эти маленькие сундуки также могут содержать некоторые награды или даже сундуки меньшего размера и т. Д.

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

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

Читать далее о паттерне Компановщик
Всего голосов 4: ↑4 и ↓0 +4
Просмотры 1.6K
Комментарии 0

Чему я научился делая игры на LibGDX

Java *Разработка игр *Разработка под Android *

Привет, Хабр! 👋 В этом топике хочу поговорить о незаслуженно забытом, бесплатном фреймворке для разработки кросс-платформенных игр - LibGDX. Поделиться секретами своей кухни и решениями, которые я использую при разработке своих игр-головоломок. Ворнинг! Много кода под катом.

Читать далее
Всего голосов 15: ↑15 и ↓0 +15
Просмотры 3.8K
Комментарии 12

Обработка русского языка на Java

Поисковые технологии *Программирование *Java *Kotlin *Natural Language Processing *
Tutorial

Рассказ пойдет об одной новой, общедоступной Java/Kotlin библиотеке, для работы с русским языком. Она позволяет получить исходные формы + морфологическую информацию для большинства слов русского языка. Статья предназначена для тех, кто создает ботов, обрабатывает сообщения и занимается поиском. Для справки, ключевое отличие лемматизации от стеммизации (урезания до нормализованной формы) состоит в том, что лемма удовлятворяет правилам языка, например для слова "яблоками" леммой будет "яблоко", а не просто урезанный корень. Лемма может быть и более сложной, например для слова люди, начальная форма – человек. В этой статье мы рассмотрим способ быстрого извлечения такой информации из морфологического словаря.

Запустить процесс
Всего голосов 10: ↑10 и ↓0 +10
Просмотры 4.2K
Комментарии 12

AWS Lambda с Java: быстро и недорого

Java *
Перевод
Tutorial

AWS Lambda - популярная платформа для разработки serverless-функций, и как Java-разработчик мне нравится иметь возможность использовать эту платформу. Однако, есть некоторые важные моменты, о которых стоит помнить при работе с ней.

Читать далее
Всего голосов 6: ↑5 и ↓1 +4
Просмотры 2.8K
Комментарии 10

Насколько быстрее Java 17?

Блог компании Дата-центр «Миран» Высокая производительность *Тестирование IT-систем *Java *Клиентская оптимизация *
Перевод

Решение задачи по составлению расписания турнира с разъездами (TTP) — один из вычислительных тестов в нашем наборе

Позавчера вышла Java 17 с кучей новых функций и усовершенствований. Большинство из них требуют изменения кода. Кроме производительности. Просто заменяете JDK — и получаете бесплатную прибавку производительности. Но насколько большую? Стоит ли она того? Для этого мы провели бенчмарки JDK 17, JDK 16 и JDK 11.
Читать дальше →
Всего голосов 15: ↑12 и ↓3 +9
Просмотры 5.9K
Комментарии 2

Fluent setter. Нарушаем конвенцию

Блог компании Miro Ненормальное программирование *Java *
Tutorial
Что будет, если возвращать в setter-методе не void, а this, т.е. использовать прием Fluent Interface?

public class SimplePojo {
    private String value;

    public String getValue() {
        return value;
    }

    public SimplePojo setValue(String value) {
        this.value = value;
        return this;
    }

    // equals, hashCode, toString
}

Теперь перепишем типовой кусок кода и получим такое:

private static AssignmentGroupedActivitiesResource create() {
    return new AssignmentGroupedActivitiesResource()
            .setGrouping(new UserActivitiesGroupingResource()
                    .setAlignmentScore(1)
                    .setFocusScore(0)
                    .setAdvancedGroups(Arrays.asList(
                            new ProductivityGroupResource()
                                    .setSectionName("Development")
                                    .setColor("#2196f3")
                                    .setSpentTime(5L),
                            new ProductivityGroupResource()
                                    .setSectionName("Chat")
                                    .setColor("#E502FA")
                                    .setSpentTime(1L)
                    ))
                    .setPeriodLong(10L)
                    .setTotalTrackedTime(7L)
                    .setIntensityScore(2));
}

Для сравнения – как тот же код выглядит без использования приёма:

Читать дальше →
Всего голосов 4: ↑3 и ↓1 +2
Просмотры 2.1K
Комментарии 9

Kotlin Null-Safety vs ClassLoader

Ненормальное программирование *Java *Компиляторы *Отладка *Kotlin *

Недавно я проходил собеседование и одним из вопросов, стал такой загадочный экземпляр:
"А какое главное преимущество системы типов Kotlin перед Java"?

Честно говоря, выделить какое преимущество считалось главным, оказалось неразрешимой для меня задачей: Nothing, отсутсвие Wildcard и First-Class Functions вместо Java-костыля с Functional Interface (имеется ввиду 8я версия Java) не заняли первых мест в личном топе интервьюера, который мне предложили угадать.

Оказалось что главное в Kotlin - возможность обьявить Nullable Type и Null Safety подход (Замечу, что по моему опыту собственные или библиотечные Optional или Maybe решают эту проблему, и пишутся за 10 минут на Java 7. А еще есть аннотации Nullable, позволяющие проверять поля в сompile-time. Короче, есть много способов заставить делать Null проверки в plain Java. Ну да ладно).

Но речь пойдет не о странных вопросах, связанных со вкусовыми предпочтениями интервьюеров относительно синтаксического сахара.
Дело в том, что Null Safety в Kotlin можно сломать, притом не выходя из под его безопасного купола в суровый дикий мир Java и Null-Referrences.

Как?

Long story short: ClassLoader ведет себя интересным образом при попытке загрузить статические поля классов рекурсивно ссылающиеся на классы друг-друга.

Под катом примеры кода и подробное объяснение того, как он обманывает проверки на Nullable. Я искренне надеюсь что специфические знания Java/Kotlin для статьи не нужны - я объясню все детали на ходу, и уложу расследование в 10 минут.

Начнем.
Всего голосов 12: ↑11 и ↓1 +10
Просмотры 2.4K
Комментарии 6

Java от Oracle снова бесплатна

Блог компании Haulmont Программирование *Java *
Перевод

Тезисно: 

Java 17 полна решимости пробить барьер, имеющийся на границе Java 8 и Java 9. Теперь, начиная с 17-ой версии, Oracle будет предоставлять Oracle JDK бесплатно, даже для коммерческих целей. Единственное чего делать нельзя — это перепродавать Oracle JDK.

В статье приведен перевод полного текста анонса с блога Oracle: https://blogs.oracle.com/java/post/free-java-license.

Читать текст
Всего голосов 52: ↑49 и ↓3 +46
Просмотры 33K
Комментарии 103

Что должен знать Java Software Engineer

Программирование *Java *Учебный процесс в IT
Из песочницы

Есть много разных понятий для человека, который занимается программированием: кодер, разработчик, программист и т.д. Мне же больше по душе такое понятие, как инженер-программист или software engineer, т.к. данное понятие охватывает наибольшее количество тем и направлений, необходимых для разработки. Это лично моё виденье.

Так чем же принципиально software engineer отличается от остальных регалий? Ответ достаточно прост и очевиден - набором знаний о технологиях и большим кругозором в сфере, которой он себя посветил. Кроме того, сталкиваясь с какой-либо проблемой или задачей, он уже понимает какой подход нужен для её решения, или знает, что надо "подтянуть", чтобы быть компетентным в данном вопросе.

Т.к. на данный момент мой основной язык программирования Java, то и рассматривать данный вопрос я буду со стороны Java. Однако общая концепция хорошо ложится на другие языки с небольшой корректировкой "под себя".

Цель статьи привести - познакомить читателя с предлагаемым мною набором знаний. Ниже я привожу набор направлений и технологий, которыми должен обладать с теоретической и практической точки зрения software engineer.

Читать далее
Всего голосов 13: ↑6 и ↓7 -1
Просмотры 4.7K
Комментарии 18

Java. Adapter Pattern in Game Server

Java *Разработка игр *API *Дизайн игр *Софт

Адаптер - это шаблон структурного проектирования, который позволяет объектам с несовместимыми интерфейсами взаимодействовать друг с другом.

Так же известен как “Обертка”.

Проблема

Чтобы продемонстрировать этот шаблон, я буду использовать упрощенный пример игровой механики, в которой есть интерфейс IEnemy, но один из врагов отличается от других и не имеет реализации метода атаки. Вместо этого этот конкретный враг (SpecialEnemy) накладывает заклинания.

Читать далее о паттерне Адаптер
Всего голосов 13: ↑11 и ↓2 +9
Просмотры 2.5K
Комментарии 8

Вклад авторов