Solon para JDK 21, ¡los hilos virtuales son increíbles! ! !

Un punto clave de esta actualización: completar las pruebas de compilación JDK21 y las pruebas de unidades funcionales.

¿JDK 21 hilos virtuales?

¡En proyectos intensivos en IO, el efecto es muy poderoso! Hay uno: Dios mío, Dios mío. . . un sentimiento de

@SolonMain
public class App {
    public static void main(String[] args) {
        Solon.start(App.class, args, app->{
            app.onEvent(HttpServerConfigure.class, e->{
                e.setExecutor(Executors.newVirtualThreadPerTaskExecutor());
            });
        });
    }
}

¿Qué marco es Solón?

Marco de desarrollo de aplicaciones de nivel ecológico Java . Construido desde cero, tiene sus propios estándares y un ecosistema abierto (tardó cinco años y tiene la escala ecológica de segundo nivel del mundo). En comparación con otros marcos, resuelve dos puntos débiles importantes: inicio lento y consumo de memoria .

¿Resolver los puntos débiles?

¡Debido al diseño único del contenedor Solon Bean, el inicio no será lento debido al aumento de las dependencias de la extensión (ahorrando tiempo y actualizando durante el desarrollo y la depuración)! Tomemos como ejemplo el conocido proyecto de código abierto "Xiaonuo":

¿Cuáles son sus lindas características?

  • El inicio es de 5 a 10 veces más rápido. (más rápido) 
  • qps es de 2 a 3 veces mayor. (más alto) 
  • El ahorro de memoria durante el tiempo de ejecución es 1/3 ~ 1/2. (menos) 
  • El empaquetado se puede reducir a 1/2 ~ 1/10; por ejemplo, 300 Mb se convierten en 23 Mb. (menor) 
  • También es compatible con jdk8, jdk11, jdk17, jdk21 y imagen nativa de graalvm. 

Vídeo de exploración de introducción (grabado por el usuario):

¿Qué se ha actualizado recientemente?

  • Prueba de compilación completa de JDK21 y prueba de unidad funcional (para JDK21)
  • Agregue la interfaz HttpServerConfigure::setExecutor para admitir el grupo de subprocesos virtuales (para JDK21)
  • Agregue la clase PropUtil. Separe la expresión de atributo original del análisis de la plantilla
  • Agregue la clase ContextPathListener para controlar el impacto de contentPath en ws, tpc
  • Agregue ContextPathFilter un constructor simplificado
  • Agregar interfaces MethodHolder::getDeclaringClz, getDeclaringClzAnnotation
  • Agregue soporte para múltiples fragmentos de yaml (es decir, un archivo admite múltiples entornos)
  • Agregue soporte para variables de referencia cruzada en múltiples archivos de configuración
  • Agregar el constructor DownloadedFile (archivo, nombre)
  • Agregar soporte de enrutador para 405
  • Ajuste la separación del ejecutor RunUtil en paraleloExecutor + asyncExecutor (para JDK21)
  • Ajuste la interfaz CacheService (agregue get escrito)
  • Ajustar la interfaz SessionState (agregar get escrito)
  • Ajustar contexto::interfaz de sesión (agregar get escrito)
  • Ajustar el rawSet de BeanWrap para que sea público
  • Ajuste SolonApp::enableWebSocketMvc, enableSocketMvc, el valor predeterminado es falso
  • Ajuste SolonApp::enableWebSocket, enableWebSocketD configuraciones separadas, cada una es irrelevante
  • Ajuste la expresión de atributos y el análisis de plantillas del marco principal de reutilización de CloudConfig
  • Ajuste Listener para eliminar @FunctionalInterface y marcar todos los métodos como predeterminados
  • Ajuste la estrategia de ejecución de ChainManager::postResult para rodear (equivalente al orden inverso)
  • Modificar ValHolder marcado como obsoleto
  • Ajuste el procesamiento de adaptación de contentLength de jdkhttp, jlhttp, smarthttp
  • Ajustar para usar más slf4j para reemplazar el bus
  • Ajuste el método de envío de sesión de mybatis-solon-plugin y solucione el problema de que el control de caché de segundo nivel puede fallar.
  • Ajuste "solon.config.load" para admitir la carga secuencial
  • Ajuste el manejo de varios parámetros de inicio específicos. Cámbielo para que se sincronice con Solon.cfg() y luego tome el valor de manera uniforme de Solon.cfg()
  • Ajustar el tiempo de sincronización de los parámetros de inicio y las propiedades del sistema.
  • madera actualizada a 1.2.1
  • redisx actualizado a 1.5.0
  • mybatis-flex actualizado a 1.6.5
  • sqltoy actualizado a 5.2.66
  • polaris actualizado a 1.14.1
  • lombok subió a 1.18.28
  • slf4j actualizado a 2.0.9
  • lombok actualizado a 1.18.30 (para JKD21)
  • asm actualizado a 9.5 (para JDK21)

¿Dirección del almacén del proyecto?

Supongo que te gusta

Origin www.oschina.net/news/258915/solon-jdk21
Recomendado
Clasificación