전체 글
-
JEP 485: Stream GatherersJava/Java25 2025. 12. 29. 14:11
1. Gatherer란?Gatherer는 스트림의 요소를 “수집(gather)”하여, 상태(state)를 유지하면서 0개 이상 결과를 방출하는 중간 연산 구성요소 입니다.즉,map보다 강력collect보다 유연중간 연산이지만 상태를 가질 수 있습니다 2. Stream Gatherers란 무엇인가?2-1. 기존 Stream API의 한계기존 Stream API는 다음 두 가지 연산만 제공했습니다.중간 연산 (intermediate)map, filter, flatMap 등 → 1:1 변환종단 연산 (terminal)forEach, reduce, collect 등 → Stream 종료하지만 다음과 같은 패턴은 표현하기 어려웠습니다.N개의 요소를 묶어서 처리 (windowing, batching)이전 요소의 상..
-
JEP 510: Key Derivation Function APIJava/Java25 2025. 12. 29. 12:29
암호화 키 생성하기 위한 표준 API KeyDerivationFunction(KDF) 란: 하나의 비밀값(입력 키 재료, IKM)을 받아, 규칙에 따라 새로운 암호 키를 파생하는 함수 기존 문제점기존 Java 암호 API에서PBKDF2, HKDF, TLS KDF 등 KDF 종류별 API가 제각각SecretKeyFactory, Mac, MessageDigest를 조합해야 함알고리즘마다 입력 파라미터 구조가 달라 실수하기 쉬움최신 표준(KDF in TLS 1.3, PQC 등)과의 연계가 복잡 추가로, 양자 컴퓨팅의 출현으로 기존 암호화 알고리즘이 공격에 취약해짐에 따라, Java 플랫폼이 양자 공격에 저항하는 Post-Quantum Cryptography(PQC)를 지원하는 것이 필수적입니다. JEP 510..
-
JEP 497: Quantum-Resistant Module-Lattice-Based Digital Signature Algorithm (ML-DSA)Java/Java25 2025. 12. 28. 18:10
Java 24에 도입되었으며, 양자컴퓨터 시대에도 안전한 디지털 서명을 위한 Module-Lattice-Based Digital Signature Algorithm (ML-DSA)을 JDK 표준 API로 제공합니다 JEP 497은 이 알고리즘을 Java의 KeyPairGeneratorSignatureKeyFactoryAPI로 네이티브 제공함으로써 외부 라이브러리 없이도 안전한 서명을 가능하게 합니다 대표 적인 사용 예도메인 공인 인증서가 아닌, 사설 인증서를 사용하고, 그 사설 인증서가 MS-DSA 를 사용하는 경우만약 사내 용도의(Fusion) API 를 호출해야 하고, 그 사이트의 Internal 인증서가 ML-DSA 를 사용하는 경우 cf : 도메인 공인된 인증서 CA 발급기관 ( DigiCert..
-
JEP 496: Quantum-Resistant Module-Lattice-Based Key Encapsulation MechanismJava/Java25 2025. 12. 28. 10:42
양자 컴퓨터의 발전은 기존의 RSA나 ECC 같은 공개키 암호화 체계를 무력화할 수 있는 잠재적 위협이 되고 있습니다.이에 대응하기 위해 JDK 24 에서 양자 내성 암호(Post-Quantum Cryptography, PQC) 기술인 ML-KEM과 ML-DSA를 도입했습니다 01. 코드 예Key pair 생성import java.security.*;import java.security.spec.NamedParameterSpec;public class MLKEMKeyGen { public static void main(String[] args) throws Exception { // ① 기본 ML-KEM-768 파라미터로 KeyPair 생성 KeyPairGenerator g1 = KeyPai..
-
JEP 511: Module Import DeclarationsJava/Java25 2025. 12. 27. 11:15
모듈 전체를 한 줄로 가져오는 import 구문 import module ModuleName; 코드 사용 예// 변경 전import java.util.Map;import java.util.function.Function;import java.util.stream.Collectors;import java.util.stream.Stream;String[] fruits = new String[] { "apple", "berry", "citrus" };Map m = Stream.of(fruits) .collect(Collectors.toMap(s -> s.toUpperCase().substring(0,1), Function.identity())); ..
-
Lingma - Alicloud coding AssitantAI Coding Assistant 2025. 12. 23. 16:08
Alicloud - AI Coding Assistant Lingmahttps://www.alibabacloud.com/en/product/lingma?_p_lc=1 Lingma: AI Coding Assistant - Alibaba CloudAn AI coding assistant that helps developers code faster and more easilywww.alibabacloud.com Jetbrain plugin https://plugins.jetbrains.com/plugin/17809-lingma--alibaba-cloud-ai-coding-assistant visual studio code pluginhttps://marketplace.visualstudio.com/items?i..
-
Java 25 Performance ImprovementJava/Java25 2025. 12. 21. 11:18
출처 : https://www.youtube.com/watch?v=223_7r0H6OE JDK 21 -> JDK 25 upgrade 시Latency 10% 향상Throughtput 5% 향상 Critical JOPS: 시스템의 지연 시간(Latency)을 나타내는 수치Max JOPS: 시스템의 전체적인 처리량(Throughput)을 나타내는 수치SPECjbb(Standard Performance Evaluation Corporation Java Business Benchmark)는 자바 비즈니스 로직 성능을 평가하기 위한 도구SPECjbb2015 : 2015년에 성능 평가도구가 개발되었음 아래 그림에서 보듯이 JDK 17 -> 21 때는 성능 개선이 미미 했으나,JDK 21 -> 25 는 괄목한 성..
-
JEP 513 Flexible Constructor BodiesJava/Java25 2025. 12. 20. 13:14
생성자(Constructor)의 본문(body)에서 super(...) 또는 this(...) 호출 전에 임의의 안전한 코드; 를 작성할 수 있도록 허용하는 기능입니다.생성자에서 인자 검증, 정제(trim), 계산, 필드 선 초기화를 superclass 호출보다 앞서 작성 가능 합니다.기존 Java는 생성자에서 다른 생성자(super/this) 호출이 첫 번째 문장이어야 했다(필수!)는 제약이 있었지만, JEP 513은 이 제약을 완화합니다.첫 문장은 반드시 super() 규칙을 깨고, 실질적으로 안전한 범위 내에서 자유도(유연성)가 부여 되었습니다. Code Example// 변경 전public class Sub extends Super { public Sub(int x) { supe..