跳到主要内容

· 一分钟阅读

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.

· 一分钟阅读

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已经获释, 2021 (见Maven)。 这个版本为多个模块带来了 个小的改进。

· 一分钟阅读

· 一分钟阅读

ActiveJ v4.1 被释放。19, 2021 (见Maven)。 这个版本包括优化和简化HTTP代码,扩大某些组件的功能。

· 一分钟阅读

ActiveJ v4.0 被释放,2021 Feb 16.(见Maven)。 这种释放包括对例外情况进行重大调整。 此版本还引入异步高性能 ActiveJ Redis客户端。 为性能优化了其他组件。

  • 异常情况的重构
    • 所有的公共常数例外被删除/隐藏。
    • StacklessException 已被删除。 扩展 的 StacklessException 现在扩展常规 Exception, 其中一些仍然是 无堆栈 无堆栈 异常能够包含用于调试目的的堆栈跟踪。 这可以通过设置异常的 应用程序设置 使用StackTracetrue 来实现。
    • 重新命名的例外情况。
    • 为顶层组件等增加了新的例外情况。
  • 引入了异步轻量高性能 ActiveJ Redis客户端 与可扩展的 API。 样例基准 到 Redis 客户端也被添加。
  • 在网络代码、HTTP处理(特别是在流水线模式下)和数据序列化方面进行优化。
  • 重命名 ByteBufQueue -> ByteBufs. 已添加字节索引到 ByteScanner, 重置 ByteBufs::scanBytes 添加 ByteBufs::consumeBytes 方法可以正常工作,如 ByteBufs::scanBytes,但实际消耗扫描的字节/bufs。
  • 删除了 StreamMapper,现在可以通过 StreamFilter.mapper(Function<I, O>)实现流映射。
  • 已删除 变压器, StreamTransducer, AbstractStreamReducer, StreamMerger class。 流的合并可以通过 StreamReducer来完成。
  • 重命名为 MergeSortReducer -> MergeReducer, MergeDistinctReducer -> DeduplicateReducer
  • 增加了从 Cube ,通过调用 Cube::getIrrelevantChunks,获得无关的块的能力。 通过调用 CubeConsolidationController::cleanup不相关的块可以清理不相关的块
  • 添加了JUnit测试规则 ClassBuilderConstantsRule ,验证所有 ClassBuilder's 静态常量在测试通过后被清空。
  • 将大多数包含 解析 的类/方法改名为包含 解码