자바의 배경지식을 늘려봅시다.
- 자바는 96년 개발된 언어입니다.(파이썬보다 늦게 개발되었습니다.)
- 자바는 객체지향 프로그래밍 언어지만 Java8부터 함수형 프로그래밍을 지원하기 시작했습니다.
- 자바는 3년마다 LTS 버전이 나오며 현재 최신 LTS 버전은 11버전입니다. 아마 17버전이 다음 LTS 버전으로 유력합니다.
- 자바의 가장 중요한 특징은 OS(운영체제)에 독립적이라는 점입니다.
- JVM이 운영체제 별로 제공되고, 자바 코드는 컴파일하면 자바 바이트 코드로 컴파일됩니다.
- 이 자바 바이트 코드가 JVM에서 동작하기 때문에 운영체제에 독립적으로 동작할 수 있습니다.
- 'Write once, run anywhere'
- 가비지 컬렉션이라는 메모리를 자동으로 관리해주는 기법이 적용되어있습니다.
- 개발자가 메모리 관리를 신경쓰지 않고 프로그래밍이 가능하도록 해줍니다.
- 이 때문에 가비지 컬렉터의 동작원리를 공부하기도 합니다.
- 개발자가 메모리 관리를 신경쓰지 않고 프로그래밍이 가능하도록 해줍니다.
- 풍부한 라이브러리가 기본적으로 제공됩니다.
- 사실 요즘엔 거의 대부분의 언어가 풍부한 라이브러리를 제공하기 때문에 특별하진 않습니다.
- 멀티쓰레드를 지원합니다.
- 여기서 시스템에서 제공하는 쓰레드에 관계없이 일관적으로 작성가능하다는 것이 가장 큰 장점입니다.
- 자바는 동적 로딩을 지원합니다. 이 때문에 클래스가 로드되는 시점에 영향을 받는 코드의 경우 작성에 주의를 기울여야 합니다.
- 필요한 시점에 메모리에 로딩되기 때문에 처음에 다 올리는 것보다 빠르게 실행될 수 있습니다.
- 이 기능을 응용한 라이브러리도 존재합니다.(AspectJ 등)
- 자바는 느리다는 편견이 있습니다. 당연히 Native보단 느릴 수 밖에 없지만, JIT 컴파일러 Hotspot JVM 등의 도입으로 많이 빠른 편입니다.
- 객체지향 이론은 입문단계에서 전부 이해하기엔 복잡한 내용으로 자바 언어 입문자가 이를 전부 이해하고 코드를 작성하는 것은 추천하지 않습니다. 물론 객체지향 이론이 적용된 자바 코드와 아닌 자바 코드는 많은 차이가 있습니다.
- 입문단계에선 기본서를 충분히 습득하고, 객체지향의 사실과 오해를 읽어보는 정도로 충분합니다.