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":
- La "versión primaveral nevada" comienza en 15-50 segundos
- La "versión Snowy-Solon" comienza en 3-5 segundos y ahorra 1/3 de la memoria de inicio (si está interesado, puede extraer el código para experimentar)
¿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?
- casa rural: https://gitee.com/noear/solon
- github: https://github.com/noear/solon