Перейти к основному содержанию

· Минута чтения

ActiveJ v5.0-beta2 был выпущен Sep 01, 2021 (см. на Maven). В этой версии были внесены улучшения для promise API. Также добавлена поддержка постоянного байт-код кэша в модуле ActiveJ Codegen.

  • Promise
    • Значительно улучшена обработка исключений
    • Переименованны методы promise thenEx и mapEx в then и map
    • Все методы изменения теперь берут на себя "throwing" функции. Если отмеченное исключение выбрасывается в функцию цепочки, то все промисы выполняются исключительно
  • ActiveJ Codegen
    • Улучшены ClassBuilder и DefiningClassLoader классы
    • Генерация класса теперь может быть на 100% ленивой
    • Добавлены in-memory кешы в ClassBuilder
    • Возможность использовать BytecodeStorage в качестве постоянного кэша для сгенерированного байт-кода
  • ActiveJ Serializer
    • Добавлена поддержка алиасов аннотации сериализатора
    • Улучшена сериализация массивов
  • HTTP
    • Удалено AsyncServletDecorator
  • Прочее
    • Улучшен types модуль
    • Различные небольшие улучшения

· Минута чтения

ActiveJ v5.0-beta1 был выпущен 30 июня 2021 (см. на Maven). В этом релизе были представлены расширенные возможности сканирования и разрешения и другие изменения, вызванные поддержкой импотентных типов.

  • Модуль Refactored ActiveJ Inject. Добавлена возможность преобразовывать импортированные и экспортированные привязки с помощью шаблонов (см. пример)
  • Улучшен ActiveJ Serializer для добавления возможности указывать аннотации сериализатора непосредственно при использовании типа (см. пример). Автоматический заказ участника теперь поддерживается в том же JVM
  • Модуль codec удален. Компоненты, требующие маршировки JSON, теперь используют библиотеку DSL-JSON
  • Добавлен новый модуль types с различными утилитами отражения и типа, включая расширенный сканер типов
  • Common модуль был массово переработан, чтобы сделать общие функции и компоненты более согласованными
  • Добавлены различные интерфейсы DiscoveryService для обнаружения узлов в кластере сервера (RPC, FS)
  • Улучшен ActiveJ Codegen для использования супер методов вызова и защищенных методов
  • Реструктурированные асинхронные исключения
  • Добавлена совместимость с Java 16
  • Несколько небольших улучшений

· Минута чтения

ActiveJ v4.3 был выпущен 28 мая 2021 (см. на Maven). В этой версии были внесены небольшие улучшения для нескольких модулей.

  • Добавлен новый метод onConnecting в AsyncHttpClient 's Inspector. Теперь, количество соединений которые создаются могут быть промониторены через JmxInspector#getConnecting аттрибут
  • Когда HTTP-соединение закрывается, соответствующее исключение распространяется на поставщиков HTTP-запроса и тела ответа
  • ThrottlingController теперь тротлит всю обработку, если задачи последовательно выполняются слишком долго
  • ForwardingStreamSupplier теперь корректно связывает узел StreamSupplier до StreamConsumer
  • Исправлена асинхронная рекурсия в ChannelSerializer
  • Отсутствующие показатели в Агрегации инициализированы с нулевыми значениями
  • HyperLogLog теперь корректно добавляет int

· Минута чтения
  • ActiveJ Redis client
  • RecordScheme
    • Добавлена возможность указывать поля в RecordScheme, которые будут использоваться для реализации equals() и hashCode()
    • Добавлена возможность указывать поля, которые будут использоваться для создания записи Comparator
  • FileLocker
    • FileLocker - общедоступный конструктор
    • FileLocker реализует java.io.Closeable интерфейс
  • StateManager
    • Добавлены методы tryLoadSnapshot() и tryLoadDiff() , возвращающие null вместо того, чтобы бросать исключение
    • Добавлен метод tryLoad() в FileStateManager , который возвращает null вместо того, чтобы выбросить исключение
    • Добавлен метод save() в FileStateManager , который берет на себя ревизию для сохранения состояния с
  • Улучшена обработка HTTP-запросов с большими URL-адресами

· Минута чтения

ActiveJ v4.1 был выпущен Mar 19, 2021 (см. на Maven). Этот выпуск включал в себя оптимизацию и упрощение HTTP-кода, расширение функциональности некоторых компонентов.

  • HTTP рефакторинг и оптимизация
    • Оптимизирована и упрощена обработка входящих сообщений HTTP, заголовков и URL-адресов
    • Добавлены предварительные условия для сообщений HTTP, которые защищают от использования переработанных сообщений
    • Пользовательские сообщения HTTP (HttpRequest для AsyncHttpClient / HttpResponse в AsyncServlet) больше не утилизируются (только тело сообщения при наличии), таким образом давая возможность кэшировать и повторно использовать их
  • Добавлен метод Promise<Void> fetch() в OTStateManager. Полученные изменения хранятся без применения к текущему состоянию.
  • Улучшена обработка десериализованных полей в Serializer ActiveJ
  • Добавлен по умолчанию Initializerс для общих компонентов
  • Добавлены предварительные условия при применении операций к LogOTState
  • Удален JmxModule из стандартных HTTP-лаунчеров
  • Добавлена новая статистика JMX в RpcClient для мониторинга не отвечающих RPC-серверов
  • Добавлен ApplicationSettings метод для получения по умолчанию Locale
  • Чтобы использовать локаль en-US при форматировании EventStats и ValueStats

· 2 мин. чтения

ActiveJ v4.0 был выпущен в свет 16 февраля 2021 (см. на Maven). Этот выпуск включал в себя существенное рефакторинг исключений. Этот релиз также представляет асинхронную высокую производительность ActiveJ Redis. Другие компоненты оптимизированы для производительности.

  • Рефакторинг исключений
    • Все публичные исключения были удалены/скрыты.
    • StacklessException был удален. Классы, которые расширили StacklessException теперь продлевают регулярное Exception, некоторые из них все еще stackless. Stackless исключения предоставляют возможность включать трассировку стека для целей отладки. Это может быть достигнуто путем установки ApplicationSetting withStackTrace на true.
    • Переименованные исключения:
    • Добавлены новые исключения для компонентов верхнего уровня и т.д.
  • Представлен асинхронный легкий высокопроизводительный ActiveJ Redis клиент с расширяемым API. Примеры и бенчмарки для Redis клиента также были добавлены.
  • Оптимизация в сетевом коде, HTTP-обработке (особенно в режиме pipelining) и сериализации данных.
  • Переименован ByteBufQueue -> ByteBufs. Добавлен byte index ByteScanner, улучшен ByteBufs::scanBytes. Добавлен метод ByteBufs::consumeBytes, который работает как ByteBufs::scanBytes, но на самом деле потребляет сканированные bytes/bufs.
  • Удалено StreamMapper, теперь сопоставление потоков может быть достигнуто с помощью StreamFilter.mapper(Function<I, O>)
  • Удалены Преобразователь, Преобразователь Стрима, AbstractStreamReducer, классы StreamMerger. Слияние потоков может быть произведено через StreamReducer
  • Переименовано MergeSortReducer -> MergeReducer, MergeDistinctReducer -> DeduplicateReducer
  • Добавлена возможность получения чужих чанков из Cube через вызов Cube::getIrrelevantChunks. Нерелевантные чанки можно очистить, вызвав CubeConsolidationController:::cleanupIrrelevantChunks.
  • Добавлено правило JUnit тест правило ClassBuilderConstantsRule которое проверяет что все ClassBuilder статические константы очищены после выполнения теста.
  • Переименовано большинство классов/методов, содержащих parse, чтобы содержать decode.