[1주차] Java 기초 개념

goodstar·2024년 10월 30일
0

Java 스터디

목록 보기
1/14
post-thumbnail

Java의 특징

Java는 다양한 장점을 가지고 있다.

객체 지향 프로그래밍(OOP): 추상화 , 캡슐화 , 다형성, 상속을 통해 코드의 재사용성 및 유지 보수가 용이합니다.
플랫폼 독립성: Bytecode로 컴파일되어 JVM에서 실행되므로 운영체제(OS)에 구애받지 않습니다.
안정성과 보안성: 자동 메모리 관리(GC)와 포인터 제거로 안전성을 높였습니다.

Java의 단점

Java는 몇 가지 단점도 존재한다.

성능 제한: JVM 위에서 인터프리터 방식으로 실행되어 C/C++보다 속도가 느릴 수 있습니다.
높은 메모리 사용량: 가비지 컬렉션으로 인해 메모리 소모가 많을 수 있습니다.

Java 실행 과정

Java는 한 번 컴파일된 바이트코드를 이후 JVM에서 인터프리터 방식으로 해석하며 실행하다가, 자주 실행되는 코드에 대해서는 JIT(Just-In-Time) 컴파일러를 사용해 네이티브 코드로 다시 컴파일합니다.

코드 작성: .java 파일 확장자로 소스 코드를 작성합니다.
컴파일: javac 컴파일러를 통해 소스 코드가 Bytecode로 변환됩니다. 이 과정에서 .class 파일이 생성됩니다.
Bytecode 실행: 생성된 .class 파일은 JVM이 읽어들여 기계어로 변환하며 프로그램이 실제로 실행됩니다. JVM을 통해 운영체제에 맞는 코드로 변환되기 때문에, 플랫폼에 구애받지 않고 동일하게 동작하게 됩니다.

Java Bytecode 란?

Java Bytecode는 소스 코드가 컴파일될 때 생성되는 중간 코드이다.

Java Bytecode는 운영체제에 종속되지 않으며, JVM이 이를 해석하여 다양한 플랫폼에서 프로그램을 실행할 수 있도록 지원합니다. Bytecode는 .class 파일로 저장되며, JVM은 이 파일을 읽어 실행하게 됩니다.

Java의 인터프리터 방식과 JIT 컴파일 방식

Java는 인터프리터와 JIT(Just-In-Time) 컴파일 방식을 함께 사용한다.

처음에는 인터프리터가 바이트코드를 한 줄씩 읽어 실행하므로 빠르게 실행을 시작할 수 있습니다.
JIT 컴파일러는 반복 실행되는 부분을 기계어로 변환해 캐시에 저장하므로, 이후에는 더 빠르게 실행됩니다.
이렇게 두 방식을 결합해 초기 실행 속도와 성능 최적화를 동시에 잡은 방식입니다.

Java 버전 특징 및 버전 선택 이유

Java는 다양한 버전이 있으며, 각 버전은 고유의 특징을 가지고 있습니다.

Java 8: 람다 표현식과 스트림 API가 추가되어 Java에서도 함수형 프로그래밍이 가능해졌습니다. 덕분에 코드가 간결해지고, 컬렉션을 다루는 방식도 유연해졌습니다.

Java 11: 또 하나의 LTS 버전으로, var 키워드를 통해 지역 변수 타입 추론이 가능해졌고, 새로운 HTTP 클라이언트 API 도입으로 네트워크 코드 작성이 쉬워졌습니다.

Java 17: 최신 LTS 버전으로, 안정적인 최신 기능과 성능 개선이 돋보입니다. Sealed Class와 switch 표현식이 추가되어 상속 구조와 코드 작성이 더 깔끔해졌습니다.

저는 여러 강의와 프로젝트에서 JDK 17을 주로 사용했기 때문에 자연스럽게 이 버전을 주로 사용하게 되었고,
프로젝트와 라이브러리 호환성, 팀의 표준화, 장기 지원(LTS)이 보장되는 안정성, 특히 최근에는 스프링(Spring)과의 호환성 면에서도 JDK 17이 안정적이라는 점이 선택 및 사용에 큰 이유가 되었습니다.

JDK와 JRE

JDK : 개발도구(JRE 포함) , JRE : 실행도구

JDK (Java Development Kit): Java 개발에 필요한 도구와 라이브러리를 포함하고 있는 개발자용 소프트웨어입니다. 컴파일러, 디버거, JRE 등이 포함되어 있어, Java 코드를 작성하고 테스트하는 데 필요한 환경을 제공합니다.

JRE (Java Runtime Environment): Java 애플리케이션을 실행하기 위한 환경입니다. JRE는 JVM과 필수 라이브러리들로 구성되어 있으며, Java 프로그램을 실행하는 데 필요한 최소한의 환경을 제공합니다.
JDK는 JRE를 포함하고 있지만, JRE는 개발 도구 없이 실행 환경만 제공하는 차이가 있습니다.

0개의 댓글

관련 채용 정보