이번 시리즈는 남궁성님의 'Java의 정석'을 공부하고 백기선님의 Java 스터디에 참여한 기록이다.
자바를 시작으로 객체지향, 스프링 등을 처음부터 차근차근 공부해 기본기를 더욱더 탄탄히 쌓아야겠다 🤓
자바란 썬 마이크로시스템즈에서 개발하여 1996년 1월에 공식적으로 발표한 객체지향 프로그래밍 언어이다.
자바가 탄생된 이유는 그 역사에서 찾을 수 있다.
자바는 1991년에 썬의 엔지니어들에 의해서 고안된 오크(Oak)라는 언어에서부터 시작되었다. 오크는 C++의 장점을 도입하고 단점을 보완해 개발한 언어이며 원래는 가전제품에 탑재될 소프트웨어를 만들기 위해 개발되었다.
그러다 여러 종류의 운영체제를 사용하는 컴퓨터들이 통신하는 인터넷이 등장하자 인터넷 환경에 적합하도록 운영체제에 독립적인 Oak로 개발 방향성을 바뀌면서 이름이 Java로 변경되었다.
그리고 인터넷이 등장한 이후로는 인터넷 환경에 적합한 운영체제에 독립적인 언어의 필요성이 대두되었고 최종적으로 자바가 탄생했다.
자바는 운영체제에 독립적이다. 또한 풍부한 클래스 라이브러리(Java API)가 개발자가 수월히 개발할 수 있게 도와준다.
운영체제에 독립적
객체지향언어이며 비교적 배우기 쉬움
자바는 객체지향개념의 특징인 상속, 캡슐화, 다형성이 잘 적용된 순수한 객체지향언어이다.
자바의 연산과 기본 구문은 C++에서, 객체지향 관련 구문은 스몰톡 이라는 객체지향언어에서 가져왔다. 장점은 취하고 단점을 버리면서 단순하게 개발된 언어이기 때문에 비교적 배우기 쉽다.
자바 이전에는 객체지향언어가 배우기 어려워서 많은 사용자층을 확보하지 못했으나 자바의 간결한 객체지향적 설계는 사용자들이 객체지향개념을 쉽게 활용할 수 있도록 도와줬다.
자동 메모리 관리 (Garbage Collection)
네트워크와 분산처리 지원
멀티쓰레드의 지원
동적 로딩의 지원
가장 대표적인 문제는 속도이다. 자바 코드를 바이트 코드로 만든 다음에 JVM이 바이트 코드를 한줄 한줄 읽어 기계어로 번역해가며 실행하기 때문이다.
바이트 코드를 하드웨어의 기계어로 바로 변환해주는 JIT 컴파일러와 Hotspot 같은 신기술을 도입해 JVM의 기능이 향상되어 속도문제가 상당히 개선되었다.