소개(Introduction)



   본 내용은 자바 프로그래밍의 본질을 설명하고자 하는 목적이 있습니다. 많은 예제들과 자체 시험, 자체 프로젝트를 통해 차례로 자바 프로그래밍 공부를 완성도를 높히겠습니다. 앞으로 다룰 내용들을 공부 할 시 이전 프로그래밍 경험이 전혀 없어도 무방합니다. 

자바 프로그램을 컴파일 하고 실행하는 것과 같은 아주 기초적인 내용부터 다루기 시작해서 이후 자바의 향상된 고급 기능들을 다루게 될 것입니다. 예를 들어 멀티스레드(Multithread) 프로그래밍 혹은 제네릭(Generic) 같은 것들입니다. 그리고 스윙(Swing)과 자바FX(Java FX)의 내용도 다룰 예정입니다. 

앞으로 다룰 내용들을 모두 습득한다면 이 글을 보시는 독자 분들은 자바 프로그래밍의 본질을 깨닫게 되는 통찰이 생길 것입니다. 


  자바는 프로그래밍 언어 그 이상입니다. 또한, 자바는 확장 라이브러리(Library)와 프로그램 개발에 도움이 되는 도구들을 포함하고 있습니다. 그래서 Top 자바 프로그래머가 되기 위해선 이러한 모든 자바 영역들을 공부해야 합니다. 이 내용들을 모두 습득한 뒤에는 여기서 다루지 않은 자바의 다른 영역에 대해서도 지식을 쌓고자 노력하셔야 합니다.

 



혁명적인 자바


   역사적으로 몇몇 프로그래밍 언어들은 프로그래밍의 근본적인 토대를 새롭게 정의했습니다. 이런 1급 프로그래밍 언어들(C언어, C++ 등) 중 단연 한 가지 눈에 띄는 것이 있습니다. 이것이 눈에 띄는 이유는 아주 충격적이고 동시에 급속도로 퍼져 나갔기 때문이죠. 이 언어는 바로 자바 입니다. 



   자바는 1995년 선 마이크로시스템즈(Sun Microsystems) 사에서 발표한 언어입니다

가히 혁명적인 언어였죠. 이 혁명은 웹(Web)과 상호작용 환경으로 급진적인 이동을 뜻합니다. 이러한 과정은 자바를 컴퓨터 프로그래밍의 새로운 표준으로 자리잡게끔 하였습니다. 
   몇 년이 흘러 자바는 계속해서 성장하고 진화하고 다른 한편으로 재정의(Redefine) 되었습니다. 다른 많은 언어들과는 달리 아주 천천히 새로운 기능들을 추가하였고 자바는 자주 컴퓨터 프로그래밍 언어의 선두 주자로 자리매김을 하게 되었습니다. 

이렇게 된 이유는 자바가 가진 혁신적인 문화와 자바 주위의 환경들을, 변화로 이끌게 만들었기 때문입니다. 그 결과, 자바는 몇 번의 변화를 거듭하게 됩니다. 



   첫 번째 자바 업데이트 버전은 1.1 이었습니다. 

자바 1.1에 추가된 기능들은 그 이전에 기능보다 상당히 중요한 것들이었습니다. 예를 들어 자바 1.1 버전에서는 다양한 새로운 라이브러리를 추가하고 이벤트를 처리하는 방법을 재정의 하였습니다. 그리고 1.0의 기존 라이브러리의 많은 기능들을 다시 수정하였죠. 



   그 다음 주요 업데이트인 자바 2.0 버전은 2세대라고 가리키고 있습니다. 새롭게 만들어진 자바 2.0에서는 자바의 모던 시대의 시작을 알리는 분수령이었습니다. 자바 2의 첫 번째 배포 버전 번호는 1.2였습니다. 이는 자바 2의 첫 배포 버전 번호를 1.2로 사용하는 것은 좀 이상해 보일 것입니다. 1.2로 발표한 이유는 자바 라이브러리 내부 버전 번호를 참조해 만들었기 때문이죠. 그리고 선 마이크로시스템즈는 자바 2와 더불어 자바 제품인 J2SE(Java 2 Platform Standard Edition)을 추가 하고 자바 2 버전 번호를 이 제품에 적용하기 시작했습니다. 



   다음 버전 자바는 J2SE 1.3이었죠. 이 버전은 자바 2 배포판을 기준으로 처음 업그레이드된 자바 버전입니다. 많은 부분에서 이미 구현된 함수들을 추가하고 개발 환경을 강화하였습니다. 그리고 J2SE 1.4 배포판에서는 자바 기능적 향상에 주안점을 두어서 개발하였습니다. 이 배포판에서는 다양하고 새로운 주요 기능들을 포함하는 데 이 주요 기능들은 체인 예외처리(chain Exception), channel-based I/O, assert 키워드들이 있습니다. 



   J2SE 5 배포판에서는 자바의 두 번째 작은 혁명이라고 할 수 있습니다. 아주 중요하지만 점진적으로 향상된 이전에 자바와는 달랐습니다. J2SE 5는 언어의 범위와 힘 그리고 근본적인 시야를 확장시키는 계기였습니다. J2SE 5에 의해 변화된 내용들을 살펴보면 다음과 같습니다.



1. 제네릭(Generic)
2. Autoboxing/unboxing
3. 열거(Enumerations)
4. 향상된 for문(foreach)
5. Variable-length arguments(varargs)
6. Static import
7. 주석(Annotations)



   위 리스트는 사소한 업데이트 내용이 아닙니다. 

 위 리스트에서 있는 각각의 새 기능들은 자바 언어에서 중요한 추가 내용들 입니다. 제네릭, 향상된 for문, varargs와 같은 것은 새로운 구문을 제시한 것이고 오토박싱과 같은 것은 언어의 의미론적으로 변화를 준 것이고, 주석은 전체 프로그래밍에서 새로운 국면을 제시한 것입니다. 이러한 새로운 기능들의 중요성은 버전 번호 5를 사용함으로써 얻을 수 있는 것들이죠. 



   이 다음 자바 버전인 1.5 버전은 일반적인 업그레이드였습니다

 그러나 새로운 기능들은 1.4에서 1.5로 넘어가는 과정에서 특별한 변화는 없었지만 아주 중요 했었죠. 그래서 Sun 사에서는 이를 다시 버전 5로 명명하고 아주 특별한 이벤트의 변화가 있을 때만 사용하기로 했습니다. 그리하여 이름이 J2SE 5가 되었고 Java Development Kit(JDK) 버전을 JDK 5로 불렀습니다. 이러한 명명법을 앞으로 쭉 이용하긴 했으나 자바 내부 버전 번호는 ‘개발 버전 번호’라 하여 여전히 1.5로 되어 있습니다. 



   이 다음 버전은 Java SE 6이라 불립니다

 이 시기에 Sun 사에서는 자바 플랫폼 번호 명명법을 바꾸기로 결심했습니다. 

첫 번째는 버전 표기에서 2라는 표현은 빼기로 했습니다. 그래서 플랫폼 이름이 JAVA SE가 되었습니다. 그리고 공식 제품 명은 Java Platform Standard Edition 6, 이와 더불어 JDK 6 버전으로 이름 지어졌습니다. 이때 6이라는 것은 자바 제품 버전 번호를 뜻하죠. 이때도 내부적으로 개발 버전 번호는 1.6이었습니다.
자바 SE 6은 기본적으로 J2SE 5를 기초로 만들어졌습니다. Java SE 6에서는 특별한 기능들이 자바 언어에 추가된 것은 아니었으나, API 라이브러리에 대한 기능이 향상되었고 새로운 패키지(Packages)들이 추가 되었습니다. 그리고 무엇보다 런타임(runtime)의 기능이 향상되었습니다. 



  이 다음 버전으로 Java SE 7이 JDK 7과 더불어 배포되었습니다

이때도 내부 버전 번호는 1.7이죠. Java SE 7에서는 썬 마이크로시스템즈 사가 오라클 사에 인수된 이후 처음 발표된 차기 자바 버전이었습니다. Java SE 7에서는 API 라이브러리 관련 주요 기능들이 추가 되었습니다. 추가된 주요 기능들 중 ‘Project Coin’(코인 프로젝트)의 일부가 포함되어 있었습니다. 코인 프로젝트의 목적은 JDK 7에 통합된 자바 언어의 작은 변화를 명시하고자 하는 목적이 있었습니다. 7 버전에서 바뀐 세부 사항을 보면 다음과 같습니다.



1. String이 switch문을 조정할 수 있게 됨
- 기존엔 case에 대한 조건이 int 값이었죠.


2. 바이너리 정수 리터럴(Binary integer literals)
- Literal의 사전적 의미: 문자 그대로, 직역의, 상상력이 부족한


3. 숫자 리터럴 내에 언더스코어(Underscores)
- 언더스코어는 ‘_’ 를 나타냄


4. 확장된 try 문(‘try-with-resources’라고 불림)
- 자동 리소스 관리를 지원해줌


5. 다이아몬드 연산자(diamond operator)를 통한 타입 추론(Type inference)
- 제네릭 인스턴스를 생성할 때 사용


6. 2가지 이상의 예외처리 하는 향상된 예외처리
- 전역 예외처리 대신 다중 예외처리 지원



   위에서 본 바와 같이 코인 프로젝트의 기능은 자바 언어에서 아주 작은 변화라고 볼 수 있습니다. 이들을 이용해서 얻을 수 있는 이득은 사실 작다고 표현한 것보다는 더 큽니다. 

위 내용 중에서 ‘try-with-resources’ 같은 경우 작성된 코드에 상당한 영향을 줄 수 있는 구문입니다.

 

 



Java SE 8


   이제 자바는 Java SE 8이라는 새로운 버전과 JDK 8을 발표하게 됩니다. 

 물론, 내부 개발 버전 번호는 1.8입니다. JDK 8은 자바 언어에서 아주 중요한 업그레이드라고 할 수 있는 데 그 이유는 광범위한 새로운 언어 기능이 추가 되었기 때문입니다. 이 강력한 기능은 바로 람다식(Lamda-expression)이죠


다식의 등장은 아주 충격적이었고 프로그래밍 해결방법론 개념화에 대한 방법과 자바 코드를 어떻게 써야하는지에 대한 새로운 방법을 제시하였습니다. 람다식을 사용하게 될 경우 아주 단순하고 생성자를 위한 불 필요한 많은 코드를 줄일 수 있게 되었습니다. 

또한, 람다식을 위한 -> 연산자도 추가 되었고 그 외 새로운 구문들이 추가되었습니다. 덕분에 람다식은 자바가 사용자들로 하여금 힘있고 날렵한 언어로 남을 수 있도록 큰 도움을 주었습니다. 



 람다식뿐 만 아니라 JDK 8에는 그 외 많은 중요한 기능들이 추가되었습니다. 

예를 들어 JDK 8을 사용하게 되면 인터페이스에 의해 명시된 메소드들을 선언과 동시에 기본값을 초기화 시킬 수 있게 되었습니다. 그리고, JDK 8에는 JavaFX를 위한 번들도 제공이 됩니다. 

JavaFX는 자바의 새로운 GUI 프레임 워크를 뜻합니다. JavaFX는 곧 모든 자바 어플리케이션에서 중요한 역할로 자리잡을 것입니다. 특히, 대부분의 GUI 기초 프로젝트들에서 사용된 Swing을 대체할 것입니다. 

그리고 마지막으로 Java SE 8는 언어의 가용성을 확대하고 자바 코드를 작성하는 방법을 아주 혁신적으로 바꿀 것입니다.

 

 




영어원문 Oracle - java a beginner's guide 

번역,의역 및 작성 : 개발 토끼

검수 : 초코 토끼

오역 및 오타의 지적은 겸손히 받겠습니다




+ Recent posts