알아두면 좋은 자바의 탄생 및 역사
자바는 1990년 말 GE(General Electric)사가 대화식 TV와 가전제품에 쓰일 소프트웨어를 썬마이크로시스템즈에 의뢰하게 되면서부터 역사가 시작됩니다. 썬마이크로시스템즈의 엔지니어인 제임스 고슬링  동료들은 1991년 가전제품에서도 돌아 갈 수 있는 언어인 'Oak' 언어를 개발합니다.

이후 Oak는 그린 프로젝트로 전환 후 웹 프로그래밍에 사용할 수 있도록 개선 되었고 1996년 이름을 자바 커피에서 따온 'JAVA' 라는 이름으로 1.0 버전을 발표하지만 1995년 ~ 1999년까지 윈도우(Window) 프로그램이 대세였기 때문에 C++언어에 비해서는 점유율이 매우 떨어졌습니다.
특히 객체지향적 패러다임에 JVM이란 가상머신까지 사용하는 자바는 메모리와 CPU 같은 자원을 지나치게 많이 사용하였기 때문에 대세 언어로서는 환영받지 못했습니다.
 
그러나 이후 세계적으로 인터넷이 급 부상하면서 웹 어플리케이션 개발이 대세가 되면서 자바는 급 부상하게 됩니다.
시간이 지남에 따라 하드웨어 성능이 높아지면서 자원 문제는 해결 되었고(물론 JVM의 발전이 거듭되면서 최적화 되기도 함) 자바 플랫폼의 모토인 WORA(Write Once, Run Anywhere, 한번만 작성하면 어느 환경에서나 사용 가능) JVM(Java Virtual Machine) 덕분에 가능했기 때문에 이는 자바 사용자들에게 큰 매력으로 다가오게 되었던 것 입니다.

 

자바 플랫폼
썬마이크로시스템즈는 1995년 자바 알파와 베타버전을 공개했습니다. 이때 자바는 JDK(Java Development Kit)라고 불렸고 아주 기본적인 API로만 구성되어 있었습니다. 1996년 1월 1.0 정식버전이 출시되고 1997년 1.1버전까지도 자바는 JDK라고 불렸지만 1.2부터 자바가 곧 JDK라는 의미를 갖지 않게됩니다.
이때부터 자바는 자바 플랫폼으로서 의미를 갖고 JDK는 자바 플랫폼 안에 속하는 구성요소 로서의 의미로 구분되었습니다.
자바 플랫폼의 구성요소로는 객체지향 언어로서의 자바, J2SE(java.lang, java.io 등의 패키지를 포함하는 API), JVM, JDK(컴파일러, 디버깅 툴, 문서 생성기 등), JRE(따로 표기하였지만 JDK에 포함) 까지 5개의 구성요소가 포함되었습니다.

처음 자바플랫폼의 이 다섯가지 구성요소는 썬마이크로시스템즈가 구현체와 스펙으로 제공하였지만 대부분의 환경에서 쓸 수 있는 구현체는 제공되지 않았기때문에 각각의 벤더(IBM, 오라클, 애플 등)에서 구현하게 됩니다. (훗날 오라클이 썬을 인수하면서 하나의 구현체가 됨)

 

엔터프라이즈 자바
인터넷과 웹 어플리케이션이 급속도로 발전하게 되면서 썬 마이크로시스템즈는 웹어플리케이션을 개발할 수 있는 서블릿 1.0을1997년 발표하지만 기능이 약했기 때문에 큰 호응을 얻지는 못했습니다. 이후 몇차례의 발전을 통해 1999년 12월 자바 2 엔터프라이즈 에디션(J2EE) 버전 1.2를 발표합니다. 이때 J2SE와 J2EE는 버전 1.2로 같은 버전을 유지합니다.
J2EE 1.2에는 서블릿2.2, JSP 1.2, JDBC 확장 API, JTA, JAVA MAIL, JMS, EJB 등의 스펙을 포함했습니다.
이또한 썬마이크로시스템즈에서 구현체를 제공했지만 벤더사들은 자신들의 제품 환경에 맞게 스펙을 구현했습니다.
J2EE는 인기를 끌게 되었고 J2EE 플랫폼에서 잘 쓰이는 기술들은 필수 API로 인식되어 J2SE에도 표준 API로 이전되기도 했습니다.

2001년 J2EE 1.3이 발표되었고 2002년 J2SE 1.4가 발표되며 JAXP, JSTL, JAAS 등의 스펙들이 추가됩니다.
2003년 말 J2EE 1.4 발표 이후 2004년 9월 J2SE 5.0을 발표하는데 이때 자바 역사상 가장 큰 첫번째 변화인 제네릭, 어노테이션, 열거형 등이 추가 되면서 버전 표기를 5.0 에서 1.5로 바꾸었으며 혼란을 방지하기 위해 마이너 버전인 자바 5로 부르게 됩니다. 또한 J2SE 대신 JAVA SE 라는 이름을 사용하게 되었습니다.
 이러한 표기는 지금까지 이어지며 안정화된 최근 버전은 JAVA SE는 8이며 이는 내부적으로는 JAVA 1.8입니다.

2006년 5월에는 JAVA EE 5(내부적으로 1.5) 를 발표하며 JAX-WS(XML기반 웹서비스 API) 2.0, JAXB 2.0, JPA 1.0 및 공용 어노테이션 등이 추가되었습니다.

2006년 자바 SE 6이 출시된 이후 자바진영은 침체기에 접어들지만 JAVA SE 7 발표는 미뤄지면서 5년간의 장기 침체에 빠집니다.
이 사이사이의 거대한 변화들(JAVA EE 6 발표 등 여러가지 기술 추가) 이 있었지만 가장 큰 사건은 2010년 오라클이 썬마이크로시스템즈 를 인수한 것 입니다. 이 당시 인식이 좋지 않던 오라클이 썬마이크로시스템즈를 인수했다는 소식에 자바 커뮤니티에서의 반응은 썩 좋지 않았지만 오라클은 곧바로 자바팀을 구성하고 자바 커뮤니티와의 소통을 하며 빠른 JAVA SE 7 발표 약속으로 대응했습니다.

오라클은 일정에 따라 2011년 JAVA SE 7을 발표 후  2013년 6월 자바 EE 7을 발표합니다.
이때부터는 알다시피 try-with-resources 구문같은 편의 구문들이 추가되고 EE 플랫폼에는 JAX-RS, 웹소켓 API, JSON 처리 API, 현재의 JAVA SE 8의 람다식과 컬렉션 스트림 API와 비슷한 기능들이 추가 되었습니다.

 

현재의 자바
현재 오라클 사이트에 업로드된 JAVA SE 최신 버전은 9이며, 7버전과 8 버전이 가장 많이 사용되고 있습니다. 
JAVA 8에서의 가장 큰 변화는 람다 식의 추가가 있으며, 기존이 많은 문제가 되었던 java.util.Date를 대체하기 위한 날짜 및 시간 API인 JSR 310이 추가되었습니다.
날짜 라이브러리로 많이 사용되던 Joda Time을 기반으로 하고 있지만 Joda Time 아키텍처를 개선하였기 때문에 더욱 강력한 기능을 사용할 수 있게 됐습니다.

언급하지 않았지만 이제는 자바의 표준 프레임워크가 되어버린 스프링이 서로 녹아들어 함께 발전하고 있기 때문에 향후 자바 플랫폼의 미래도 나쁘지는 않을 것 같다는 매우 주관적인 생각입니다.

 

블로그 이미지

도로락

IT, 프로그래밍, 컴퓨터 활용 정보 등을 위한 블로그

,