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

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

ActiveJ v5.4.3 was released on Sep 16, 2022 (see on Maven). This release introduces a simplified approach for creating serializers for custom classes.

  • Added an abstract SimpleSerializerDef class that simplifies the creation of custom serializers. Serializers for custom classes can now be created without the use of the Expressions API

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

ActiveJ v5.4.2 was released on Sep 5, 2022 (see on Maven). This release includes minor bug fixes for stream codecs.

  • Fixed a bug when a stream codec tried to safely decode more items than are present in the input of the stream.
  • Relative path tests in ActiveJ FS are ignored when the project directory is located on a drive other than the temporary directory.

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

ActiveJ v5.4.1 was released on Aug 31, 2022 (see on Maven). This release includes optimizations for Stream Codecs to optimize memory usage.

  • Optimized encoding and decoding of arrays of primitives, as well as arrays of variable-length ints and longs.
  • Minimized the required number of flushes when writing data to a byte array.

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

ActiveJ v5.4 was released on Aug 19, 2022 (see on Maven). This release includes improvements to ActiveJ Codegen,ActiveJ Serializer, and minor fixes to other components.

  • ActiveJ Codegen
    • Generated method calls that use self instances as method arguments are now automatically resolved.
    • Slightly optimized method lookup.
  • ActiveJ Serializer
    • Optimized serializer builder's cache. Ensured that previously defined serializers are reused.
    • Ensured that dangling references are cleaned up if serialization fails.
  • Net
    • Fix order of promise completion when SSL socket receives close_notify message.
  • HTTP
    • Multimap of HTTP headers is now properly resized.
    • Fatal errors in HTTP server connections are now handled correctly.
    • Added the HttpMessage#takeBodyStream method instead of the HttpMessage#getBodyStream method as it has a more semantically correct name. HttpMessage#getBodyStream method is now deprecated and is a candidate for removal in the next major release.
  • Misc
    • Added additional application error logging in Launcher.
    • Fixed @NotNull annotations for function parameters.

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

ActiveJ v5.3 was released Jun 17, 2022 (see on Maven). This release includes minor improvements to JMX, as well as several bug fixes.

  • JMX
    • Added the ability to use custom JmxReducers for @JmxOperations.
    • JMX attributes and operations of Map type now respect the specified JmxReducer when reducing map values.
    • Added the ability to specify a predicate for whether worker instances should be registered in JMX or not.
  • ActiveJ Codegen
    • Ability to use parameterized types for record fields has been added.
  • HTTP
    • Fixed a bug with quality factors parsing in headers.
    • Improved handling of runtime exceptions.
  • Datastream
    • Fixed acknowledgement completion in StreamReducer as well as in several StreamConsumers

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

ActiveJ v5.2 was released Apr 19, 2022 (see on Maven). This release includes minor improvements mainly for HTTP client/server and ActiveJ Serializer.

  • HTTP
    • Added dedicated enum for setting SameSite policy on cookies.
    • Malformed HTTP requests now result in a code 400 response rather than connection drop.
    • HTTP inspectors can now inspect malformed HTTP requests and responses.
    • RoutingServlet now correctly decodes percent-encoded URL path parts.
    • Added checks for DNS label sizes.
    • Minor improvements of the UrlParser.
  • ActiveJ Serializer
    • Added additional preconditions for subclass serializer.
    • Removed unnecessary caching from SerializerBuilder.
  • ActiveJ FS
    • Storage paths are now normalized, so local file systems now work properly with relative storage paths.

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

ActiveJ v5.1 was released Jan 4, 2022 (see on Maven). This release includes improvements to ActiveJ FS, ActiveJ Inject and boot modules in general.

  • ActiveJ Inject and boot modules
    • TriggersModule now properly handles optional dependencies
    • Nested optional dependencies (e.g. OptionalDependency<OptionalDependency<?>>) are prohibited
    • Services (as well as those obtained from an optional dependencies) are guaranteed to start/stop exactly once
    • Added shortcuts for obtaining optional dependencies from Injector
  • ActiveJ FS
    • Added a new exception to indicate errors in a structure of a file system.
    • Added a precondition that checks whether local file systems (LocalActiveFs and LocalBlockingFs) were started before being used.

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

ActiveJ v5.0 was released Oct 29, 2021 (see on Maven). This release includes major changes in ActiveJ Inject, ActiveJ Codegen, ActiveJ Serializer promises API. The release also introduced improved type scanning facility and overall minor improvements in other components.

  • ActiveJ Inject
    • Refactored and simplified inner components to speed up dependency injection and provide better support for binding specialization
    • Simplified type resolution in dependency injection
    • Added the ability to transform imported and exported bindings using patterns (see example)
    • Replaced @Optional annotation with an explicit OptionalDependency class
  • ActiveJ Codegen
    • Improved ClassBuilder and DefiningClassLoader classes
    • Class generation may now be 100% lazy
    • Added in-memory ClassBuilder caches
    • Added the ability to use BytecodeStorage as a persistent cache for generated bytecode
    • Added the ability to call super methods as well as protected methods
    • Improved built-in expressions for array/collection/map iteration
  • ActiveJ Serializer
    • Added the ability to specify serializer annotations directly on type use (see example)
    • Automatic class member ordering is now supported within the same JVM
    • Added support for serializer annotation aliases
    • Improved array serialization as well as serialization of booleans
    • Refactored class hierarchy of collection serializers.
    • Abstract collection serializers now support builder pattern
  • Promise
    • Greatly improved exception handling
    • Renamed promise chaining methods thenEx and mapEx to then and map
    • Added new conditional chaining methods as well as dedicated null-handling chaining methods
    • All the changing methods now take "throwing" functions. If a checked exception is thrown in a chaining function, the whole promise is completed exceptionally
  • Miscellaneous improvements
    • Removed codec module. Components that require JSON marshalling now internally use the DSL-JSON library
    • Added new types module which contains various reflection and type utilities, including advanced type scanner
    • Common module has been massively refactored to make common functions and components more consistent
    • Restructured asynchronous exceptions
    • Unchecked exception handling can now be precisely configured using a thread-scoped or global FatalErrorHandler facility
    • Made ActiveJ compatible with Java 17
    • Added various DiscoveryService interfaces for node discovery within server cluster (RPC, FS)
    • Removed AsyncServletDecorator facility
    • Removed StreamCodecRegistry facility
    • Multiple small improvements and fixes

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

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-адресами