본문 바로가기

728x90
반응형

JAVA

(49)
Google ADK로 Java 기반 AI 에이전트 만들기 - Spring Boot 환경에서 대화형 LLM 에이전트 구축하기 최근 많은 애플리케이션이 단순한 질문·답변을 넘어, 외부 도구와 연동하고 대화 맥락을 이해하는 지능형 AI 에이전트를 필요로 하고 있습니다.이 글에서는 Google에서 제공하는 Agent Development Kit(ADK) 를 활용해, Java 및 Spring Boot 환경에서 AI 에이전트를 직접 구축하는 과정을 정리합니다.단순 개념 소개에 그치지 않고,Google ADK란 무엇인지Spring Boot 프로젝트에서 어떻게 설정하는지대화 컨텍스트를 유지하는 에이전트는 어떻게 만드는지함수 호출(Function Calling)을 통해 외부 로직을 어떻게 연결하는지를 하나의 흐름으로 이해할 수 있도록 설명합니다.Google Agent Development Kit(ADK)란?LLM 기반 애플리케이션의 한계와 ..
Java에서 로컬 LLM을 실행하는 방법: Jlama로 시작하기 최근 대규모 언어 모델(LLM)을 활용한 애플리케이션이 빠르게 늘어나고 있습니다. 하지만 대부분의 경우 외부 API에 의존해야 하고, 이는 비용, 지연 시간, 데이터 보안 측면에서 부담이 될 수 있습니다.이번 글에서는 Java 환경에서 LLM을 로컬로 실행할 수 있게 해주는 추론 엔진 Jlama를 소개합니다. Jlama가 무엇인지, 어떤 방식으로 Java 프로젝트에 통합되는지, 그리고 실제로 모델을 다운로드해 프롬프트를 실행하는 방법까지 단계별로 살펴봅니다.Jlama란 무엇인가Jlama는 Inference Engine(추론 엔진) 입니다. 즉, 이미 학습된 AI 모델을 불러와 결과를 생성하는 역할만 수행하며, 모델을 직접 학습시키지는 않습니다.핵심적인 특징은 다음과 같습니다.사전 학습된 대규모 언어 모델..
엔터프라이즈 AI 전략, 왜 Python이 아니라 Java부터 시작해야 할까? AI를 도입하려고 하면 가장 먼저 떠오르는 언어는 Python입니다.“AI = Python”이라는 인식은 이제 자연스럽게 받아들여지고 있습니다.하지만 엔터프라이즈 환경에서는 이야기가 다릅니다.이 글은 기업 환경에서 AI 전략을 가장 효율적이고 안전하게 시작하는 방법은 Python이 아니라 Java에서 출발하는 것이라는 관점을 다룹니다.왜 기존 Java와 Spring 기반 인프라가 AI 도입에 유리한지, 조직과 운영 측면에서 어떤 리스크를 줄일 수 있는지, 그리고 Java 생태계가 AI 시대에 어떻게 진화하고 있는지를 정리해봅니다.AI 도입에 대한 가장 큰 오해많은 조직이 AI를 논의할 때 다음과 같은 전제를 깔고 시작합니다.AI를 하려면 Python 개발자를 새로 채용해야 한다기존 시스템을 새로운 언어로..
MyBatis Dynamic SQL 완전 정리: 타입 안전하게 SQL을 생성하는 방법 이 글은 MyBatis Dynamic SQL의 개념과 필요성, 그리고 실제 사용 방법을 정리한 기술 블로그입니다.SQL을 문자열로 직접 작성하다 보면 문법 오류나 파라미터 바인딩 실수로 인해 런타임 오류를 겪는 경우가 많습니다. MyBatis Dynamic SQL은 이러한 문제를 줄이기 위해 등장한 라이브러리로, 데이터베이스 구조를 기반으로 타입 안전한 SQL 생성을 가능하게 합니다.이 글에서는 MyBatis Dynamic SQL의 기본 개념부터 데이터베이스 객체 정의, SELECT 및 CRUD 쿼리 작성 방법까지 예제와 함께 살펴봅니다.MyBatis Dynamic SQL이란?MyBatis Dynamic SQL은 타입 세이프한 방식으로 SQL을 생성할 수 있도록 지원하는 라이브러리입니다.SQL 문법과 파..
Java Thread Pool 완벽 가이드: Executor부터 ForkJoinPool, Guava까지 한 번에 정리 애플리케이션에서 동시성을 다루는 일은 생각보다 쉽지 않습니다. 스레드를 직접 만들기 시작하면 금방 시스템 자원이 부족해지고, 성능 저하나 예측 불가능한 문제까지 발생할 수 있습니다. 이런 위험을 줄이기 위해 가장 효과적인 방법이 바로 스레드 풀(Thread Pool)입니다.이 글에서는 Java 표준 라이브러리에서 제공하는 다양한 스레드 풀 구현부터 Guava가 제공하는 고급 스레드 풀 기능까지 모두 정리합니다. 각 스레드 풀의 특징, 사용 목적, 구성 요소, 코드 예제까지 함께 설명하므로, 이 글을 읽고 나면 어떤 상황에서 어떤 스레드 풀을 선택해야 하는지 명확해질 것입니다.스레드 풀(Thread Pool)의 기본 개념Java에서 스레드는 운영체제의 리소스를 직접 사용합니다. 무작정 스레드를 생성하면 금..
Java 25의 Compact Object Headers(객체 헤더 압축) 완전 정복 - JEP 519 기반 메모리 절감 및 성능 향상 분석 Java 애플리케이션은 객체 단위로 동작하는 만큼 메모리 사용량이 커지고, 그 안에서도 객체 헤더(Object Header)는 숨은 비용으로 작용합니다. Java 25에서 정식 기능으로 도입된 JEP 519는 이 객체 헤더 크기를 줄여 메모리 절감, GC 효율 개선, 데이터 지역성 향상이라는 중요한 변화를 실현합니다.이 글에서는 Compact Object Headers가 무엇이며, 기존 구조와 무엇이 달라졌는지, 어떤 이점이 있는지, 실제 성능은 어떤지까지 전체 흐름을 정리합니다.1. 객체 헤더란 무엇인가?Java 객체는 메모리 상에서 항상 일정한 헤더 정보를 포함하며, HotSpot JVM에서는 다음 두 요소로 구성됩니다.mark wordclass pointermark word는 다음과 같은 중요한 정..
Java 25 완전 정복 가이드: 새로운 기능으로 배우는 생산성과 보안성의 진화 Java 25, 그 변화의 중심에 서다Java는 1995년 처음 등장한 이후 지금까지 꾸준히 발전하며 가장 안정적이고 신뢰받는 프로그래밍 언어 중 하나로 자리잡았다. 각 버전은 새로운 언어 기능, API, 보안성 개선을 통해 개발자들의 생산성을 높여왔고, 이번 Java 25 역시 예외가 아니다.Java 25는 JDK 21 이후의 또 다른 LTS(Long-Term Support) 버전으로, 단순한 버전 업그레이드를 넘어 “개발자 경험(Developer Experience)” 자체를 혁신하는 데 초점을 맞추고 있다.이번 릴리스의 핵심 키워드는 간결함(Compactness), 유연함(Flexibility), 그리고 **보안(Security)**이다. 인스턴스 메인 메서드, 컴팩트 소스 파일, 모듈 임포트 선언..
Java, 어떻게 더 성장할까? – Brian Goetz가 말하는 ‘확장 가능한 언어’와 Witness 개념 Java는 오랫동안 기업용 애플리케이션 개발의 중심에 서 있었습니다. 하지만 시대가 바뀌면서, 단순히 안정성과 호환성을 유지하는 것만으로는 부족해지고 있습니다. 바로 언어의 성장 가능성(Growability) 이라는 새로운 철학이 주목받고 있는데요. 최근 JVM 서밋에서 Java 언어 아키텍트 Brian Goetz는 “Java 언어가 어떻게 진화할 수 있는가”라는 화두를 던졌습니다. 그는 단순한 기능 추가가 아닌, 언어 자체를 더 확장 가능하고 유연하게 만드는 방법을 제안했습니다.그 중심에는 새로운 개념인 **‘Witnesses(증인)’**가 있습니다. 이 글에서는 Goetz가 제시한 철학과 Witness 개념, 그리고 Java의 미래 방향성에 대해 정리해보겠습니다.Java 언어 진화의 철학: ‘Grow..

728x90
반응형