Java

0. 프로그래밍과 자바

pkch 2018. 8. 30. 00:37

2016년 09월 01일은 내가 처음으로 Java 프로그래밍 언어를 접한 날이다. 그로부터 2년 뒤인 지금, 가장 자주 쓰는 자바의 기초를 다지고자 Java에 대해 포스팅하기로 했다. 그동안 블로그활동도 열심히 못했지만..

 

이번 자바 포스팅을 통해 자바 언어에 대한 기초를 더욱 탄탄히 다지고 더 나아가 기술 면접 등을 준비하는데 도움이 됐으면 좋겠다!

 

0. 프로그래밍과 자바

 

처음 자바 프로그래밍을 배울때 교수님께서는 프로그램과 프로그래밍에 대해 무엇인지 생각해보라고 강조하셨다. 정답을 안 알려주신건 함정... 아마 본인이 생각하는게 정답이 아닐까...

 

위키백과에서는 프로그래밍을 '하나 이상의 관련된 추상 알고리즘을 특정한 프로그래밍 언어를 이용해 구체적인 컴퓨터 프로그램으로 구현하는 기술'이라고 말하고 있고, 필자의 친구는 단순히 '코드로 프로그램을 만드는 행위'라고 말하고 있다.

 

그럼 내가 생각하는 프로그래밍은 뭘까? 컴퓨터공학과 프로그래밍을 공부한 지 2년이 지난 지금도 또렷하게 말할 수 있는 건 아니지만, 프로그래밍은 '생각한 컴퓨터 세계에서 펼쳐볼 수 있는 마법'이라고 생각한다. 실제로 세상의 수많은 아이디어들이 컴퓨터 기술과 만나 4차산업혁명을 이루었고 지속적으로 발전하고 있다. 내 생각을 세상에 보일 수 있다는 것 자체로도 프로그래밍이라는 것은 큰 메리트를 가질 수 있다고 생각한다.

 

그렇다면 프로그래밍을 하기 위해서는 프로그래밍 언어를 알아야 한다. 세상에는 엄청나게 다양한 언어들이 존재한다. 그 언어를 선택하는 것만으로도 상당한 고민거리를 준다고 생각한다.

 

출처 : https://www.tiobe.com/tiobe-index/

 

위는 프로그래밍 언어의 순위를 매긴 자료이다. 최근 데이터 분석, 웹, 쉬운 문법 등으로 인기를 얻는 Python, 빠른 속도와 컴퓨터 언어의 전통격인 C, 동적 웹을 구현과 이제는 서버 개발까지 가능한 최근 인기있는 JavaScript, 객체지향언어의 대표격인 Java 등 현재의 트렌드에 따른 언어들의 인기 비중을 보여준다. 

 

언어를 선택하는 기준은 사람마다 다르고 다양할 것이라 생각한다. 어떤 사람은 구글 검색이 찾아볼 자료가 많아야 하는 것이 기준이 될 수 있고, 어떤 사람은 특정 분야에 특화된 언어가 기준이 될 수 있고, 누군가는 본인이 처음 접한 언어가 선택의 기준이 될 수 있다.

 

여기서 나의 이야기를 하면 나는 Java를 주로 쓰고 있다. Java가 1등이여서 쓴다기보다는 일단, 학교에서 지속적으로 쓰고 배운 언어가 바로 Java이고 널리 쓰여서 각종 라이브러리와 검색했을 때 찾아볼 자료가 많다는 점, 특히 나는 웹(특히, back-end)에 관심이 많기 때문에 Java 계열 오픈소스 프레임워크인 Spring이 있다는 점이 내가 Java를 공부하고 주로 사용하는 이유가 된다.

 

만약, 프로그래밍 언어에 대해 고민하는 사람이 있다면 자신이 무엇을 하고 싶은지 생각해보고 그 분야에 맞는 언어를 선택하는 것을 추천한다! 단순히 사람들이 많이 쓴다고 따라서 쓰는 것보다는...

 

 

 

그럼 현재 1위를 달리고 있는 자바의 특징은 무멋이 있을까? 자바에 특징에 대해 알아보자.

 

1. 운영체제에 독립적이다.

 

자바의 가장 큰 특징은 동일한 프로그램이 다양한 컴퓨터에서 실행이 가능하다는 점이다. 즉, 내가 사용하는 컴퓨터가 애플이든 윈도우든 상관없이 프로그램을 실행시킬 수 있다는 점이다. 이것이 가능한 이유는 자바에는 JVM(Java virtual machine, 자바 가상 머신)이 있기 때문이다.

 

보통의 프로그래밍 언어는 소스 코드가 컴파일되어 기계어로 변하면 컴퓨터에서 바로 사용할 수 있다. 하지만, 자바 컴파일러의 경우는 컴퓨터를 위한 코드를 바로 만들어주지 않는다. 먼저, JVM을 위한 코드를 만들어준다. 이를 바이트 코드(Byte Code)라고 한다. 그리고 이 바이트 코드는 JVM에 의해 해석되어 프로그램이 실행된다.

 

이렇게 하는 이유는 응용 프로그램들을 다시 컴파일하지 않아도 모든 컴퓨터에서 실행할 수 있도록 만들기 위해서이다. 바이트 코드는 자바코드와 운영체제와의 중간 코드로 특정 컴퓨터와는 일치하지 않지만, 어떤 기계어로도 쉽게 변환할 수 있다. 따라서 동일한 바이트 코드로 리눅스, 윈도우, Mac OS 등 다양한 운영체제에서 실행 할 수 있다.

 

2. 객체 지향적이다.

 

객체 지향은 객체 별로 코드를 작성하고 객체를 조합하여 전체 프로그램을 완성하는 프로그램 설계론이다. 그리고 자바는 이런 객체 지향적 방법론을 가장 적극적으로 지원하는 언어이다.

 

자바는 기본 데이터 타입을 제외한 모든 것을 객체로 표현한다.(심지어 에러까지!) 거기에 객체 간의 관계를 지어주는 상속 개념, 객체 지향의 핵심 개념인 캡슐화, 정보 은닉, 다형성 등을 지원해준다.

 

3. 멀티스레딩 지원

 

자바는 멀티스레딩을 지원하여 CPU의 성능을 최대로 효율적으로 사용할 수 있도록 해준다.

 

4. Garbage Collection

 

자바는 쓸데없는 메모리 낭비를 제거하기 위해 Garbage Collect라는 기능으로 메모리 누수를 막는다.

 

이렇게 4가지가 자바의 대표적인 특징이라고 할 수 있다.