Java는 정적 타입과 클래스 기반 객체 지향 모델을 중심으로 발전한 범용 프로그래밍 언어이다. 언어, 개발 도구 모음인 JDK, 실행 기반인 JVM은 서로 관련되지만 같은 개념은 아니다.
분야 | 정적 타입 JVM 언어 |
|---|
소스와 실행 기반
전형적인 Java 개발 흐름에서는 소스를 컴파일한 클래스 파일을 JVM에서 실행한다. JDK에는 컴파일러와 실행·문서화·관측 도구가 포함된다. 실제 실행 성능은 JVM 구현, 최적화, 라이브러리와 프로그램 구조의 영향을 받는다.
타입과 인터페이스
컴파일 시 타입 검사는 잘못된 연산과 계약 불일치의 일부를 실행 전에 찾아준다. 인터페이스를 경계로 구현을 교체할 수 있지만, 타입이 맞는다고 업무 규칙이나 동시성 문제가 모두 해결되지는 않는다. 예외와 자원 생명주기도 프로그램의 계약에 포함한다.
프로그래밍 언어 | |
|---|---|
언어 | Python · Java · JavaScript · TypeScript · Rust |
메모리와 자원
JVM의 가비지 컬렉션은 사용되지 않는 객체의 메모리를 관리하는 기능이다. 파일·소켓·데이터베이스 연결처럼 외부 자원은 사용이 끝나는 시점과 정리 방식을 별도로 설계해야 한다. 메모리가 자동 관리된다는 사실을 모든 자원이 즉시 정리된다는 뜻으로 이해하지 않는다.
생태계와 구별
Spring Framework와 Spring Boot는 Java를 사용하는 대표적인 서버 개발 도구이지만 Java 언어의 일부는 아니다. JavaScript도 이름만 비슷한 별도 언어다. JDK 버전을 바꿀 때는 언어 기능뿐 아니라 사용 중인 라이브러리와 실행 환경의 호환성을 확인한다.
참고 자료