보통의 개발자들은 HotSpot JVM을 주로 사용합니다. Java 언어와 함께 개발 및 배포되며, Java SE 개발 키트를 다운로드하면 HotSpot JVM이 자동으로 설치됩니다. HotSpot JVM의 주요 특징 HotSpot JVM은 말 그대로 Hot한 Spot을 찾아서 해당 부분에서는 JIT 컴파일러를 사용하는 방법이다. JIT 컴파일러 Hotspot JVM은 JIT(Just-In-Time) 컴파일러를 사용하여 바이트 코드를 런타임에 네이티브 코드로 변환합니다. 실행 시점에 코드를 컴파일하여 빠르게 실행할 수 있도록 최적화하는 기능을 제공합니다. 내부적으로 프로파일링을 통해 핫스팟을 찾아내고, 해당 부분에 대한 네이티브 코드를 생성한다. 네이티브 코드를 생성하는 방법에서 Client와 Serve..
전체 글

JRE, JDK, JVM 소개 JRE JRE는 Java Runtime Environment의 약자로 자바 런타임 환경이라는 뜻입니다. JRE는 Java 프로그램을 실행하기 위해 필요한 환경을 제공하며, 이는 JVM과 Java 클래스 라이브러리를 포함하고 있습니다. JRE만 설치되어 있다면 Java 프로그램을 실행할 수 있지만, 개발은 할 수 없습니다. JDK JDK는 Java Development Kit의 약자로 자바 개발 키트라는 뜻입니다. JDK는 개발자가 Java 프로그램을 개발하기 위해 필요한 도구 모음입니다. 이는 JRE, Javac(자바 컴파일러), jar(라이브러리), jdb(디버깅), apt(애노테이션) 등 자바로 개발할 수 있도록 여러 기능들을 제공하는 역할을 합니다. JVM JVM은 J..

✏️[모던 자바 인 액션, 전문가를 위한 자바 8, 9, 10 기법 가이드] 스터디 관련 책 내용을 정리한 글입니다. 📌 이 장의 내용 Thread, Future, 자바가 풍부한 동시성 API를 제공하도록 강요하는 진화의 힘 비동기 API 동시 컴퓨팅의 박스와 채널 뷰 CompletableFuture 콤비네이터로 박스를 동적으로 연결 리액티브 프로그래밍용 자바 9 플로 API의 기초를 이루는 발행 구독 프로토콜 리액티브 프로그래밍과 리액티브 시스템 최근 소프트웨어 개발 방법에서는 멀티코어 프로세서를 활용한 병렬 처리 기술과 마이크로 서비스 아키텍처, 매시업 형태의 애플리케이션 개발이 주목되고 있습니다. 멀티태스크 프로그래밍의 양면성이 중요한 역할을 하며, 자바에서는 Future 인터페이스와 Complet..
🚀 자바 코드를 작성할 때 주의해야 할 점자바는 강력한 언어지만, 잘못 사용하면 성능 저하, 메모리 누수, 보안 취약점 같은 문제가 발생할 수 있습니다. 안정적이고 효율적인 자바 코드를 작성하기 위해 다음과 같은 주의할 점들을 고려해야 합니다.⚠️ 예외 처리자바에서 예외 처리는 필수입니다. 예외가 발생할 수 있는 코드는 try-catch 블록을 적절하게 처리해야 합니다. 예외를 무시하거나 단순히 로그만 남기고 끝내면 예상치 못한 종료나 데이터 손실이 발생할 수 있습니다.try { // 위험한 코드 실행} catch (IOException e) { // 구체적인 예외 처리} catch (Excetpion e) { // 일반적인 예외 처리}구체적인 예외 처리 : 모든 예외를 포괄하는 cat..

☕️ 자바란 무엇인가?자바는 1995년 썬 마이크로즈시스템에서 공식적으로 발표한 객체 지향 프로그래밍 언어입니다.현재는 오라클이 자바를 관리하고 있으며, 전 세계에서 가장 많이 사용되는 프로그래밍 언어 중 하나입니다.✨ 자바의 가장 큰 장점 : 이식성자바는 다양한 운영체제(Windows, macOS, LInux 등)에서 "한 번 작성하면 어디서나 실행할 수 있다"라는 철학을 실현합니다. 이것은 가상 머신(Virtual Machine, JVM)을 통해 가능합니다. 또한, 풍부한 클래스 라이브러리(Java API)를 기본적으로 제공해 복잡한 기능도 쉽게 구현할 수 있습니다."한 번 작성하면 어디서나 실행할 수 있다.📜 자바의 역사자바의 역사는 1991년 제임스 고슬링과 그의 팀이 오크(Oak)라는 이름의 ..
✏️[모던 자바 인 액션, 전문가를 위한 자바 8, 9, 10 기법 가이드] 스터디 관련 책 내용을 정리한 글입니다. 📌 이 장의 내용 자바가 진화해야 한다는 여론으로 자바가 모듈 시스템을 지원하기 시작함 주요 구조 : 모듈 declarations, requires, exports 지시어 기존 자바 아카이브(JAR)에 적용되는 자동 모듈 모듈화와 JDK 라이브러리 모듈과 메이븐 빌드 기본적인 requires, exports 외의 모듈 지시어 간단 요약 자바 9에서 추가된 모듈 시스템은 프로젝트를 모듈로 분리하고 모듈 간 의존성을 명시하는 기능입니다. 이 기능을 통해 개발자는 모듈 간 의존성 충돌 문제를 해결하고 불필요한 라이브러리 의존성을 제거할 수 있습니다. 또한 모듈 시스템을 이용해 애플리케이션의 실..
✏️[모던 자바 인 액션, 전문가를 위한 자바 8, 9, 10 기법 가이드] 스터디 관련 책 내용을 정리한 글입니다. 📌 이 장의 내용 디폴트 메서드란 무엇인가? 진화하는 API가 호환성을 유지하는 방법 디폴트 메서드의 활용 패턴 해결 규칙 자바 8에서는 인터페이스 변경으로 인한 문제를 해결하기 위해 기본 구현을 포함하는 인터페이스를 정의할 수 있는 방법을 제공합니다. 정적 메서드와 디폴트 메서드 기능을 사용하여 인터페이스에 메서드 구현을 포함시킬 수 있습니다. 이를 통해 기존 인터페이스를 구현하는 클래스는 새로운 메서드의 디폴트 메서드를 자동으로 상속받아, 기존 코드를 변경하지 않고도 인터페이스를 수정할 수 있습니다. List 인터페이스의 sort와 Collection 인터페이스의 stream 메서드가..
✏️[모던 자바 인 액션, 전문가를 위한 자바 8, 9, 10 기법 가이드] 스터디 관련 책 내용을 정리한 글입니다. 📌 이 장의 내용 자바 8에서 새로운 날짜와 시간 라이브러리를 제공하는 이유 사람이나 기계가 이해할 수 있는 날짜와 시간 표현 방법 시간의 양 정의하기 날짜 조작, 포매팅, 파싱 시간대와 캘린더 다루기 기존 자바 API의 날짜와 시간 관련 기능은 불편하고 모호했으며, Date 클래스는 실제로 밀리초 단위의 특정 시점을 표현하는 클래스였습니다. 하지만 자바 8에서는 새로운 날짜와 시간 API가 도입되어, 이전에 있었던 문제들을 개선하고 자바 개발자들이 보다 쉽게 날짜와 시간을 다룰 수 있게 되었습니다. 다음은 자바 9의 릴리스 날짜인 2017년 9월 21일을 가리키는 Date 인스턴스를 만..
✏️[모던 자바 인 액션, 전문가를 위한 자바 8, 9, 10 기법 가이드] 스터디 관련 책 내용을 정리한 글입니다. 📌 이 장의 내용 null 참조의 문제점과 null을 멀리해야 하는 이유 null 대신 Optional : null로부터 안전한 도메인 모델 재구현하기 Optional 활용 : null 확인 코드 제거하기 Optional에 저장된 값을 확인하는 방법 값이 없을 수도 있는 상황을 고려하는 프로그래밍 11.1 값이 없는 상황을 어떻게 처리할까? 11.1.1 보수적인 자세로 NullPointerException 줄이기 대부분의 프로그래머들은 null 예외 문제를 해결하기 위해 필요한 곳에 다양한 null 확인 코드를 추가합니다. 더욱 보수적인 프로그래머들은 반드시 필요하지 않은 경우에도 nul..
✏️[모던 자바 인 액션, 전문가를 위한 자바 8, 9, 10 기법 가이드] 스터디 관련 책 내용을 정리한 글입니다. 📌 이 장의 내용 도메인 전용 언어(domain-specific languages, DSL)란 무엇이며 어떤 형식으로 구성되는가? DSL을 API에 추가할 때의 장단점 JVM에서 활용할 수 있는 자바 기반 DSL을 깔끔하게 만드는 대안 최신 자바 인터페이스와 클래스에 적용된 DSL에서 배움 효과적인 자바 기반 DSL을 구현하는 패턴과 기법 이들 패턴을 자바 라이브러리와 도구에서 얼마나 흔히 사용하는가? 10.1 도메인 전용 언어 DSL은 특정 비즈니스 도메인의 문제를 해결하기 위해 만든 언어로, 자바에서는 클래스와 메서드를 이용하여 도메인을 표현합니다. DSL은 해당 도메인을 인터페이스로..