1960년대에 사람들은 완벽한 프로그래밍 언어를 찾기 위해 노력했다. 이미 수백개의 프로그래밍 언어가 존재했다. 하지만 완벽한 언어는 존재하지 않는다. 언어는 생태계의 흐름에 맞춰 시장의 요구에 알맞은 언어가 살아남는다. 새로운 언어가 등장하면서 진화하지 않는 기존 언어는 사장되어왔다.
예를 들어, C, C++은 프로그래밍 안정성은 부족하지만 프로그램 실행 중에 사용하거나 참조하는 메인 메모리의 총량이 작기 때문에 여전히 운영체제와 임베디드 시스템에서 사용된다.
하지만 낮은 안정성 떄문에, 메모리 총량이 넉넉한 시스템에서는 자바, C# 같은 언어가 훨씬 많이 사용된다.
이와 같이 특정 분야에서 장점은 가진 언어는 다른 경쟁 언어를 도태시킨다.
자바는 출시 이후 꾸준이 변화하고 기능추가를 하며 경쟁 언어를 대신하여 큰 생태계 구축에 성공했다.
1996년에 JDK 1.0(java development kit) 가 발표된 이후 각광받은 이유는 크게 두가지가 있다.
하나는 캡슐화 덕분에 C에 비해 소프트웨어 엔지니어링적인 문제가 적다는 점이다.
다른 하나는 객체지향 모델 때문에 이후 업데이트 되는 윈도우 95 등 프로그래밍 모델에 쉽게 대응할 수 있었기 때문이다. C와 C++ 보다 프로그래밍 실행 시간이 더 오래 걸리지만, 하드웨어가 발전하면서 프로그래머의 시간이 더욱 중요한 요소로 부각되었다.
첫 배포 이후 자바 1.1(1997) 부터 자바 7(2011), 2018년 3월에는 자바 10, 2018년 9월에는 자바 11이 배포되었다.
자바에서의 가장 큰 변화는 자바 8(2014)에서 일어났다. 다른 버전들도 여러 기능 추가와 변화가 있었지만 자바 8만큼 생산성이 크게 바뀐것은 아니였다.
원래는 싱글코어의 CPU만을 사용하는 자바 프로그램이 대부분이였다. 쓰레드를 사용하여 나머지 코어를 활용해야 했는데, 이는 관리하기 어렵고 많은 문제가 발생할 수 있었다.
자바 8이 릴리스될때 쯤 프로그래밍 언어 생태계에 빅데이터라는 것을 다룰 필요성이 생기면서 멀티코어 컴퓨터를 활용해서 빅데이터를 효과적으로 처리할 필요성이 생겼다. 그에 맞게 하드웨어의 발전에 따라 듀얼 혹은 그 이상 코어를 지원하는 CPU가 등장하면서, 자바도 멀티코어 프로세서의 쉬운 활용을 위해 병렬 실행을 위한 기능이 추가되었다.
추가로, 코드를 훨씬 간결하게 사용할 수 있는 함수형 프로그래밍을 위해 메소드 참조와 람다, 디폴트 메서드가 추가되었다.
본 내용은 모던 자바 인 액션을 읽고 기록한 내용입니다.