IntelliJ IDEA Conf 2025

Daniel_Yang·2025년 9월 19일

Java 30주년

  • Duke
  • Java: 한번 작성하면 어디서나 구동

지난 5년간의 자바 현황

지난 5년간의 자바 현황

JVM: 더 나은, 더 빠른, 더 견고하고 안전하게

  • ZGC, Virtual Threads, Generational ZGC, Region Pinning for G1, AOT, Sync Virtual Threads w/o Pinning, Structured Concurrency, Value Classes and Objects, Null-restricted Value class Types, Enhanced Primitive Boxing

데이터 지향 프로그래밍 모델 도입에도 투자

  • Records, Pattern Matching, Sealed Classes, Text Blocks, Simple Web Server, The Java Playground, Unnamed Vars & Patterns, Multi-file Source Launcher, Simple Source Files and Instance Main Methods, (Primitive Types in Patterns, instanceof, and switch), Flexible Constructor Bodies, Derived Record Creation

대형 APP말고도 Script로 빠르게 만들어보는 프로토타입에도 적합하도록
Open JDK의 Project Amber: 프로그래밍언어 단순화

보안 문제

  • Key Encapsulation API, FFM API, Quantum-resistant Algos, Key Derivation Function API

AI 준비(Inference & Training)

  • Records, Pattern Matching, Sealed Classes, FFM API, Value Classes and Objects, Null-restricted Value Class Types, Enhances Primitive Boxing, Derived Record Creation

Release를 6개월로 한 이유

  • 매 release마다 수백 개의 기능을 떠안지 않아도됨. 점진적으로 개선된 byte단위로 제공
  • 미리보기 기능을 포함해 사용자들이 직접 사용해보고 Java 팀에 피드백을 줄 수 있다는 점 => 약간 code review 같은 느낌?
  • 스프링은 이제 최소 java 17, 가능하면 21 시도해보라

Java 커뮤니티

  • OpenJDK

빅테크 java사용

  • Uber, Netflix(java로 돌아감), Linkedin

Java 자격증?

dev.java : 튜토리얼
inside.java : 모든 게시물
learn.java


프로덕션급 AI 애플리케이션을 위한 Langchain4j의 차세대 기능

Langchain4j

  • 출시 2주년. 1.0 안정화 버전
  • 주로 API를 통해 대형 언어 모델에 연결하는 도구
    • 데이터나 ML주기는 신경x
    • 로컬 옵션: Ollama, LocalAI, Llama 등
  • 빠르게 배우기 : Langchain4j github repo에 가서 examples 받아보기

좋은 점

  • 내부적으로는 파싱이 많이 일어나지만 최종적으로는 실제로 다룰 수 있는 Java 객체를 받는다.

더 많은 문맥(Context)을 얻기위한 효율적인 방법들

  • Multimodal 아키텍처
  • MCP

LLM State Machine

  • LLM을 사용해 다음 상태를 '추론'하게 만드는 방식
  • LLM이 대화나 작업의 현재 '상태'를 기억하고 그 상태에 따라 다음에 할 행동을 결정하도록 만드는 프로그래밍 모델
  • 크게 상태(State)전이(Transition)라는 두 가지 핵심 요소로 구성

하지만 보안이 강하지 않고, 의도치않은 일이 가끔 발생한다. 그리고 높은 Latency, 디버깅의 어려움, API 호출 비용
=> 이에 대한 대안으로 Code State Machine

Code State Machine

  • 코드가 상태 기계를 관리하게하고 LLM을 오직 특정단계들에서만 실행되게
    = 흐름 제어(Flow Control)는 코드로 하고, 언어 처리(Language Processing)가 필요할 때만 LLM을 도구로 사용하자

LLM State Machine은 간단한 프로토타입이나 유연성이 극도로 중요한 일부 시나리오에서는 유용. 하지만 안정성, 신뢰성, 성능이 중요한 상용 애플리케이션을 구축할 때는 Code State Machine이 훨씬 더 적합한 아키텍처. 이는 LLM의 강력한 언어 능력과 코드의 견고함 및 예측 가능성이라는 두 세계의 장점을 모두 취하는 현명한 접근 방식.

Basic RAG -> Advanced RAG

Model Quality

  • swebench.com : SW tasks
  • livebench.ai : General tasks

Model Pricing

  • llm-price.com

Langchain4j 1.0

  • upcoming
    • Few-Shot support in AI services(AI서비스 예제)
    • Prompt caching
    • Audio Support for more models
    • Extended MCP support(MCP 확장)
    • AiServices as Tool

Quarkus

  • quarkus vs springboot
    • Quarkus는 빠른 시작 시간과 낮은 메모리 소비에 최적화된 최신 쿠버네티스 네이티브(Kubernetes-native) 프레임워크로, 마이크로서비스 및 서버리스 환경에 이상적입니다. 반면, Spring Boot는 방대한 생태계를 갖춘 성숙하고 범용적인 프레임워크로, 특히 대규모 엔터프라이즈 시스템과 같은 광범위한 애플리케이션에서 뛰어난 성능
    • 가장 근본적인 차이는 컴파일 및 런타임 전략에 있습니다. Quarkus는 GraalVM을 사용한 AOT(Ahead-Of-Time) 컴파일을 위해 설계. 반면, Spring Boot는 전통적으로 JVM 내의 JIT(Just-In-Time) 컴파일에 의존합니다. JVM의 JIT 컴파일러는 시간이 지남에 따라 코드를 최적화하여 최고 성능을 낼 수 있지만, 느린 시작 시간과 높은 메모리 사용량의 원인

Spring AI vs Langchain4j

Spring AI는 Spring 프레임워크에 AI 기능을 'Spring다운 방식'으로 자연스럽게 녹여내는 것을 목표. 반면, Langchain4j는 파이썬 LangChain의 성공에 영감을 받아, 어떤 자바 프로젝트에서든 LLM(거대 언어 모델) 기반 애플리케이션을 쉽게 구축할 수 있도록 돕는 독립적인 AI 오케스트레이션 라이브러리.

쉽게 비유하자면, Spring AI는 "Spring 애플리케이션을 위한 공식 AI 확장팩"과 같고, Langchain4j는 "어떤 자바 프로젝트에도 장착할 수 있는 다목적 AI 엔진"과 같다.


Bootiful Intellij IDEA

  • 프로젝트 생성할 때, Devtools와 GraalVM Native Support 사용

  • 스프링부트 3.5 추천

    • 올해 말 spring7, springboot4 11월 출시.
  • 편리한 기능

  • 리버스 엔지니어링 기능

    • 오른쪽 plugin에서 DB 연결된 스키마를 기반으로 Entity 만들기
  • Spring Debugger

    • logical 보기
  • Spring Modulith

  • Spring Data AOT

0개의 댓글