瀏覽代碼

升级jdk8至jdk23

johnclot69 1 月之前
父節點
當前提交
6d6c6a7109

+ 1 - 1
build.gradle

@@ -5,7 +5,7 @@ subprojects {
     // 配置Java版本
     java {
         toolchain {
-            languageVersion.set(JavaLanguageVersion.of(8))  // 设置 JDK 8
+            languageVersion.set(JavaLanguageVersion.of(23))  // 设置 JDK 23
         }
     }
 

+ 3 - 1
gradle/wrapper/gradle-wrapper.properties

@@ -1,5 +1,7 @@
 distributionBase=GRADLE_USER_HOME
 distributionPath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-7.5.1-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-8.12-bin.zip
+networkTimeout=10000
+validateDistributionUrl=true
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists

+ 18 - 16
incubator-center/build.gradle

@@ -1,7 +1,7 @@
 plugins {
     id 'java'
     id 'application'
-    id "com.github.johnrengelman.shadow" version "7.1.2"
+    id "com.github.johnrengelman.shadow" version "8.1.1"
 }
 
 group = 'com.incubator.center'
@@ -21,11 +21,13 @@ application {
 
     // 添加 JVM 参数,指定 conf 目录下的配置文件路径
     applicationDefaultJvmArgs = [
-            "-Dlog4j.configurationFile=conf/log4j2.xml",
-            "-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005", // 启用远程调试
-            "-XX:+UseG1GC",                   // 使用 G1 GC
-            "-XX:MaxGCPauseMillis=200",       // 控制 GC 停顿时间
-            "-XX:+HeapDumpOnOutOfMemoryError" // 发生 OOM 时生成堆转储
+            "-XX:+UseZGC",                   // 使用 ZGC 垃圾回收器,适合高并发
+            "-XX:+UnlockExperimentalVMOptions", // 启用实验性选项
+            "-XX:ZUncommitDelay=300",       // 减少内存未使用时的延迟
+            "-XX:MaxHeapSize=2G",           // 限制最大堆大小
+            "-XX:+HeapDumpOnOutOfMemoryError", // OOM 时生成堆转储
+            "--enable-preview",             // 启用 Java 23 的预览功能
+            "-Dlog4j.configurationFile=conf/log4j2.xml"
     ]
 }
 
@@ -50,6 +52,9 @@ tasks.shadowJar {
         attributes 'Main-Class': application.mainClass.get()
     }
 
+    // 将 conf 目录包含到最终的 JAR 文件中
+    from('conf') { into('conf') }
+
     // 可选:排除不必要的文件(例如签名文件)
     exclude 'META-INF/*.SF', 'META-INF/*.DSA', 'META-INF/*.RSA'
 
@@ -57,19 +62,14 @@ tasks.shadowJar {
     duplicatesStrategy = DuplicatesStrategy.EXCLUDE
 }
 
-// 版本号集中管理
-ext {
-    junitVersion = '5.9.0'  // 集中管理 JUnit 版本
-}
-
 // 项目依赖
 dependencies {
     // 子模块依赖
     implementation project(path: ':incubator-core')
 
     // 测试依赖
-    testImplementation "org.junit.jupiter:junit-jupiter-api:${junitVersion}"
-    testRuntimeOnly "org.junit.jupiter:junit-jupiter-engine:${junitVersion}"
+    testImplementation "org.junit.jupiter:junit-jupiter-api:5.10.0"
+    testRuntimeOnly "org.junit.jupiter:junit-jupiter-engine:5.10.0"
 }
 
 // 配置测试任务
@@ -78,6 +78,7 @@ tasks.test {
     testLogging {
         events 'PASSED', 'FAILED', 'SKIPPED'
     }
+    maxParallelForks = Runtime.runtime.availableProcessors() // 并行测试
 }
 
 // 将 Shadow JAR 绑定到 assemble 阶段
@@ -86,13 +87,14 @@ tasks.assemble.dependsOn(tasks.shadowJar)
 // 增加构建信息任务
 tasks.register("buildInfo") {
     doLast {
-        println "Building project '${project.name}' version '${project.version}'"
+        println "Building project '${project.name}'"
+        println "Version '${project.version}'"
         println "Main class: ${application.mainClass.get()}"
-        println "Shadow JAR: ${tasks.shadowJar.get().archiveFile.get()}"
+        println "Shadow JAR: ${tasks.shadowJar.get().archiveFile.get().asFile.absolutePath}"
     }
 }
 
 // 清理任务优化
 tasks.clean {
-    delete "$buildDir/libs" // 确保清理构建目录
+    delete layout.buildDirectory.get().asFile // 使用现代 API 清理构建目录
 }

+ 3 - 3
incubator-common/build.gradle

@@ -6,8 +6,8 @@ group 'com.incubator.common'
 version '1.0-SNAPSHOT'
 
 dependencies {
-    testImplementation 'org.junit.jupiter:junit-jupiter-api:5.9.0'
-    testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.9.0'
+    testImplementation 'org.junit.jupiter:junit-jupiter-api:5.10.0'
+    testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.10.0'
 
     // 日志相关
     api 'org.slf4j:slf4j-api:2.0.16' // SLF4J API
@@ -25,7 +25,7 @@ dependencies {
     api 'org.dom4j:dom4j:2.1.4' // XML 操作工具
 
     // 网络通信和序列化
-    api 'io.netty:netty-all:4.1.116.Final' // Netty 全功能包
+    api 'io.netty:netty-all:4.1.117.Final' // Netty 全功能包
     api 'org.msgpack:msgpack-core:0.9.8' // MessagePack 序列化
     api 'com.dyuproject.protostuff:protostuff-core:1.3.1' // Protostuff 核心
     api 'com.dyuproject.protostuff:protostuff-runtime:1.3.1' // Protostuff 运行时

+ 2 - 2
incubator-common/src/main/java/com/incubator/common/thread/NamedThreadFactory.java

@@ -29,8 +29,8 @@ public class NamedThreadFactory implements ThreadFactory {
 	public NamedThreadFactory(String prefix, boolean daemo) {
 		mPrefix = prefix + "-thread-";
 		mDaemo = daemo;
-		SecurityManager s = System.getSecurityManager();
-		mGroup = (s == null) ? Thread.currentThread().getThreadGroup() : s.getThreadGroup();
+		// 直接使用当前线程的线程组,或者可以创建一个新的 ThreadGroup
+		mGroup = Thread.currentThread().getThreadGroup();
 	}
 
 	@Override

+ 2 - 2
incubator-core/build.gradle

@@ -6,8 +6,8 @@ group 'com.incubator.core'
 version '1.0-SNAPSHOT'
 
 dependencies {
-    testImplementation 'org.junit.jupiter:junit-jupiter-api:5.9.0'
-    testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.9.0'
+    testImplementation 'org.junit.jupiter:junit-jupiter-api:5.10.0'
+    testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.10.0'
 
     api project(path: ':incubator-common')
     api project(path: ':incubator-message')

+ 12 - 23
incubator-core/src/main/java/com/incubator/core/util/DataUtil.java

@@ -60,7 +60,7 @@ public final class DataUtil {
 	}
 
 	public static String getFieldName(String name) {
-		if (name.length() < 1) {
+		if (name.isEmpty()) {
 			return null;
 		}
 		name = name.trim();
@@ -82,26 +82,15 @@ public final class DataUtil {
 			}
 		}
 		String field = builder.toString();
-		switch (field) {
-			case "long":
-				field = "long_v";
-				break;
-			case "goto":
-				field = "goto_v";
-				break;
-			case "default":
-				field = "default_v";
-				break;
-			case "new":
-				field = "new_v";
-				break;
-			case "try":
-				field = "try_v";
-				break;
-			case "final":
-				field = "final_v";
-				break;
-		}
+        field = switch (field) {
+            case "long" -> "long_v";
+            case "goto" -> "goto_v";
+            case "default" -> "default_v";
+            case "new" -> "new_v";
+            case "try" -> "try_v";
+            case "final" -> "final_v";
+            default -> field;
+        };
 		return field;
 	}
 
@@ -174,7 +163,7 @@ public final class DataUtil {
 			JSONArray descs = (JSONArray) doc.get(0);
 			JSONArray keys = (JSONArray) doc.get(1);
 			JSONArray types = (JSONArray) doc.get(2);
-			String k_type = type(types.get(0));			
+			String k_type = type(types.getFirst());
 			
 			if (!superClasses.containsKey(clsName)) {
 				for (int i = 0; i < keys.size(); i++) {
@@ -188,7 +177,7 @@ public final class DataUtil {
 					builder.append(" ").append(field).append(";\r\n");
 				}
 				builder.append(String.format("\r\n\t/** 主键 */\r\n\tpublic %s getKey() {\r\n\t\treturn this.%s; \r\n\t}\r\n", k_type,
-						getFieldName(keys.get(0).toString())));
+						getFieldName(keys.getFirst().toString())));
 
 				builder.append("\r\n\t/** 构造属性 */\r\n\tpublic void initProperty() { }\r\n");
 			}

+ 17 - 21
incubator-game/build.gradle

@@ -1,7 +1,7 @@
 plugins {
     id 'java'
     id 'application'
-    id "com.github.johnrengelman.shadow" version "7.1.2"
+    id "com.github.johnrengelman.shadow" version "8.1.1"
 }
 
 group = 'com.incubator.game'
@@ -19,13 +19,15 @@ application {
     // 使用新的方法设置主类,适应 Gradle 7.0 及以上版本
     mainClass.set('com.incubator.game.GameServerStart')
 
-    // 添加 JVM 参数,指定 conf 目录下的配置文件路径
+    // 配置 JVM 参数,支持高并发和性能优化
     applicationDefaultJvmArgs = [
-            "-Dlog4j.configurationFile=conf/log4j2.xml",
-            "-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005", // 启用远程调试
-            "-XX:+UseG1GC",                   // 使用 G1 GC
-            "-XX:MaxGCPauseMillis=200",       // 控制 GC 停顿时间
-            "-XX:+HeapDumpOnOutOfMemoryError" // 发生 OOM 时生成堆转储
+            "-XX:+UseZGC",                   // 使用 ZGC 垃圾回收器,适合高并发
+            "-XX:+UnlockExperimentalVMOptions", // 启用实验性选项
+            "-XX:ZUncommitDelay=300",       // 减少内存未使用时的延迟
+            "-XX:MaxHeapSize=2G",           // 限制最大堆大小
+            "-XX:+HeapDumpOnOutOfMemoryError", // OOM 时生成堆转储
+            "--enable-preview",             // 启用 Java 23 的预览功能
+            "-Dlog4j.configurationFile=conf/log4j2.xml"
     ]
 }
 
@@ -51,9 +53,7 @@ tasks.shadowJar {
     }
 
     // 将 conf 目录包含到最终的 JAR 文件中
-    from('conf') {
-        into('conf') // 指定 JAR 内的路径
-    }
+    from('conf') { into('conf') }
 
     // 可选:排除不必要的依赖
     exclude 'META-INF/*.SF', 'META-INF/*.DSA', 'META-INF/*.RSA'
@@ -62,20 +62,14 @@ tasks.shadowJar {
     duplicatesStrategy = DuplicatesStrategy.EXCLUDE
 }
 
-// 依赖版本集中管理
-ext {
-    junitVersion = '5.9.0'
-    shadowVersion = '7.1.2'
-}
-
 // 项目依赖
 dependencies {
     // 子模块依赖
     implementation project(':incubator-core')
 
     // 测试依赖
-    testImplementation "org.junit.jupiter:junit-jupiter-api:${junitVersion}"
-    testRuntimeOnly "org.junit.jupiter:junit-jupiter-engine:${junitVersion}"
+    testImplementation "org.junit.jupiter:junit-jupiter-api:5.10.0"
+    testRuntimeOnly "org.junit.jupiter:junit-jupiter-engine:5.10.0"
 }
 
 // 配置测试任务
@@ -84,6 +78,7 @@ tasks.test {
     testLogging {
         events 'PASSED', 'FAILED', 'SKIPPED'
     }
+    maxParallelForks = Runtime.runtime.availableProcessors() // 并行测试
 }
 
 // 将 Shadow JAR 绑定到 assemble 阶段
@@ -92,13 +87,14 @@ tasks.assemble.dependsOn(tasks.shadowJar)
 // 增加构建信息任务
 tasks.register("buildInfo") {
     doLast {
-        println "Building project '${project.name}' version '${project.version}'"
+        println "Building project '${project.name}'"
+        println "Version '${project.version}'"
         println "Main class: ${application.mainClass.get()}"
-        println "Shadow JAR: ${tasks.shadowJar.get().archiveFile.get()}"
+        println "Shadow JAR: ${tasks.shadowJar.get().archiveFile.get().asFile.absolutePath}"
     }
 }
 
 // 清理任务优化
 tasks.clean {
-    delete "$buildDir/libs" // 确保清理构建目录
+    delete layout.buildDirectory.get().asFile // 使用现代 API 清理构建目录
 }

+ 12 - 2
incubator-message/build.gradle

@@ -7,8 +7,8 @@ group 'com.incubator.message'
 version '1.0-SNAPSHOT'
 
 dependencies {
-    testImplementation 'org.junit.jupiter:junit-jupiter-api:5.9.0'
-    testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.9.0'
+    testImplementation 'org.junit.jupiter:junit-jupiter-api:5.10.0'
+    testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.10.0'
 
     api 'com.alibaba.fastjson2:fastjson2:2.0.53'
     api 'com.google.protobuf:protobuf-java:4.28.3'
@@ -20,12 +20,14 @@ protobuf {
     protoc {
         artifact = 'com.google.protobuf:protoc:4.28.3'
     }
+
     // 配置 gRPC 插件
     plugins {
         grpc {
             artifact = 'io.grpc:protoc-gen-grpc-java:1.68.1'
         }
     }
+
     // 自动为所有 proto 生成 Java 和 gRPC 代码
     generateProtoTasks {
         all().forEach {
@@ -49,4 +51,12 @@ sourceSets {
 tasks {
     // 为构建任务添加依赖
     build.dependsOn("generateProto")
+
+    // 配置测试任务,启用 JUnit 平台
+    test {
+        useJUnitPlatform()
+        testLogging {
+            events("PASSED", "FAILED", "SKIPPED")
+        }
+    }
 }