从此
📄文章 #️⃣专题 🌐酷站 👨‍💻技术 📺 📱

Java编程语言、JDK新特性语法、集成开发环境IDE、Gradle | Guava、Hutool

综合/最新

Java编程专题Nginx Jetty HTTP C/SJava WebAndroid应用开发JDK源码Gradle构建

Java/JDK下载地址
Linux安装:apt install default-jre
Linux解压缩方式:
  wget https://download.oracle.com/java/24/latest/jdk-24_linux-aarch64_bin.tar.gz  或 jdk-24_linux-x64_bin.tar.gz
  tar -xf jdk-24_linux-*64_bin.tar.gz

新:
  Oracle GraalVM 仅支持 CycloneDX 生成 SBOM,暂不支持 SPDX 格式。
  JDK 24+:
    支持 ASM 能力 java.lang.classfile.ClassFile.of().parse(byte[] bytes)
    通过预缓存加快启动速度 java -XX:AOTCache=app.aot -jar app.jar
    通过--enable-linkable-runtime减少JDK镜像尺寸,从JDK_HOME\jmods\抽取所用classes。
  Stream.of(1, 2, 3).gather(Gatherers.mapConcurrent(3, (item) -> {
    return item * item; // Thread.currentThread().isVirtual()
  })).toList(); // map 未使用 VirtualThread;JDK 24+ 首选 mapConcurrent

死记、偏门:
  常量 - 编码方式 StandardCharsets.UTF_8、换行符 System.linSeparator()、本机地址 InetAddress.getLocalHost().getHostAddress()
  时区 - PRC or CTT 即 China Standard Time 上海时区,简短易记。
    TimeZone.getTimeZone("PRC").toZoneId();
    ZoneId.SHORT_IDS.get("CTT"); // 输出 Asia/Shanghai
    ZoneId.of("Asia/Shanghai"); // 完整写法
    ZoneOffset.UTC.normalized() // 规范化

  时间 - 周年份(Week Year)指跨年周的天数低于4天就归属到新年份了,1月1日永远属于新年份第一周。Java中用YYYY表示周年份,常规年份使用yyyy。
  错误响应标准(RFC 9457) - org.springframework.http.ProblemDetail
  NetBeans控制台中文乱码解决(macOS无此问题):计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage 将 ACP 值改为 65001。

IDE:
  NetBeans - 离线模式 NetBeans -> Tools -> Options -> Java -> Gradle -> ✔Offline
    macOS安装包为Apache-NetBeans-25.pkg。
    v25 Bug - 时间久了,外部复制后粘贴到编辑器里失效。

内容

常用
无输出执行终端命令: new ProcessBuilder("killall", "Finder").start();
跨语言
  可逆Hex(避免URL编码空格问题) - Java 中 java.util.HexFormat.of().parseHex("E6b58be8af95") 可解码JavaScript编码(Array.from方法入参必须为无符号):
    https://tsc.openle.com/.well-known/static/scripts/core.js
    非module脚本 - https://tsc.openle.com/.well-known/static/scripts/core-classic.js
网络
Java支持mDNS主机名查对应IP(需20分钟通讯过): InetAddress.getByName("raspberrypi.local").getHostAddress()

其他

Java运行期和编译期异常

Java运行WebAssembly - Instance.builder(com.dylibso.chicory.wasm.Parser.parse(new File("./x.wasm"))).build()

知名类库 - 流行工具库 Guava
验证码库 - Java国产工具库 Hutool
序列化库 - Java国产库 阿里巴巴 Fastjson

WoL唤醒 - InetAddress.getByName("device.local").isReachable(3000); // 亲测能唤醒未限定幻数据包(Magic Packet)的休眠设备(自动休眠可用/主动关机不行);返回false。
  Windows 命令 Resolve-DnsName device.local 效果等同上行代码。