안녕하세요. 이제 Java 초보자 다메입니다.
이 소책자는 초보자가 입문자의 눈높이에서 작성한 Java를 위한 입문서 입니다.
Java를 최근 들어서 다시 복습하고 있어 감회가 새롭네요.
초보자나 입문자나 도긴개긴이지만 최대한 이해하기 쉽게 풀어서 작성해보도록 하겠습니다 :)
이번 챕터는 Java의 특징에 관한 내용입니다. 시작합니다.
1. Java란?
Java란 객체 지향 프로그래밍 언어 중 하나로 다양한 장점을 지니고 있는 언어입니다.
MicroSoft가 개발한 C#이라는 언어는 Java에서 영감을 얻어 개발했다고 할 정도로 완성도가 높아요.
첫줄에서 설명 드렸듯, 객체 지향성을 보유한데다가 보안성 측면에서도 우수합니다. 뭔가 좋다는 얘기가
많이 나오니 좋은 언어인 것 같지 않나요? 자세한 장점은 다음 항목에서 알아보도록 합시다.
2. Java의 장점
1) 무료로 사용 가능
현재 Java는 오픈 소스인 상태입니다.
추후에 어떻게 될지는 모르겠지만 오픈소스이기 때문에 무료로 이용이 가능하죠.
단, PHP랑은 다르게 이용자가 개발에 직접 참여하지는 않습니다.
잘 만들어진 언어를 무료로 사용한다니... 이거 완전 개이득?
2) 배우기 쉬운 언어
Java가 배우기 쉽다는 얘기 들어 보셨나요?
Java는 점유율이 굉장히 높은 프로그래밍 언어로, 사용하는 사람이 많기 때문에
그 만큼 습득할 수 있는 정보의 양도 많습니다.
또한, 라이브러리가 잘 작성 되어있어 원하는 기능을 라이브러리에서 채택해서 사용하면 되죠.
내가 만들지 않아도 이미 원하는 기능이 있다면 생산성이 엄청 높아질 것 같지 않나요?
3) 우수한 언어적 디자인
Java는 언어적 디자인이 뛰어납니다. 현존하는 객체지향 언어들은 Java에서 영감을 받은 언어가 많아요.
예를 들자면 C# 이라던지... 만약 디자인이 조잡하다면 Java를 본따 만들 이유가 없겠죠?
이 내용은 3. 기술적 특징에 귀결됩니다.
3. 기술적 특징
1) 웹과의 높은 연동성
Java로 웹 페이지를 제작할 수 있다는거 알고 계시나요?
JSP(Java Server Pages)를 이용해 Java로 웹 페이지를 제작할 수 있어요.
요새는 Spring Framework라는 것을 이용해 웹 페이지 제작에 필요한 기능을 지원 받을 수 있다고 해요.
저의 최종 목표는 Spring Framework를 이용한 웹 페이지 제작이니 같이 열심히 공부해 봅시다.
2) 높은 보안성
Java는 원래 네트워크 분산 처리 환경에서 사용하기 위해 디자인된 언어입니다.
네트워크 환경은 다른 환경보다 보안의 측면이 강조되야 하죠. 네트워크의 해킹은 곧 정보의 누출이니까요.
따라서 Java는 보안에 중점을 두고 있어요. Java는 바이러스가 침투하지 못하는 구조를 가지고 메모리에서
데이터 접근을 제한할 수 있습니다. 접근 권한이 없으면 데이터 구조나 데이터에 접근을 하지 못합니다.
추후에 같이 실습 예제를 해 나가면서 배울 수 있으니 "아! 자바는 보안이 뛰어나구나!"
정도로 받아들이시면 될 것 같네요.
3) 메모리 관리의 용이함
C나 C++은 메모리 관리를 사용자가 직접 해주어야 합니다. 이거 실제로 해보면 엄청 어렵습니다 ㅠㅠ...
하지만 Java는 GC(Garbage Collection)라는 기능이 있어, 메모리 홀(사용하지 못하는 작은 메모리 공간)
을 자동으로 모아 큰 메모리 영역을 생성해 사용할 수 있게 바꾸어 줍니다.
굉장히 편리한 기능이에요. 저도 Java를 공부하면서 메모리 관리에 대한 필요성을 못느꼈습니다.
추후에 제 수준이 높아진다면 필요하겠지만 아직은 그럴일이 없었네요 :)
4) 높은 이식성
Java는 JVM(Java Virtual Machine)이라는 것이 내장이 되어있어, 운영체제에 구애받지 않습니다.
프로그래밍 언어중 하나인 C/C++을 예를들면 Linux에서 원활히 작동하던 C/C++ 기반 프로그램이
Windows에선 작동하지 않을 수 있다는 얘기죠. 이는 생각하는 것 보다 큰 문제입니다.
어떤 프로그램을 만들 때 지원하는 운영체제의 수 만큼 프로그램을 추가로 생성해야 한다는 의미죠.
물론 소스코드의 내용은 대동소이 하겠지만, 생산성에 문제가 생깁니다.
하지만 Java는 그럴일이 없다는거...! 단 JVM을 구동하는데에 추가적인 오버헤드가 생깁니다만
이는 Java의 장점들에 비하면 아주 작은 문제일 뿐입니다.
5) 객체 지향성
이는 객체 지향 언어에 관한 지식이 없는 사람에게는 조금 생소할 수 있습니다.
객체 지향 언어는 절차 지향 언어와 비교되는데,
절차 지향 언어는 기존의 C언어 같이 객체가 데이터만 보유하는
단순하고 불편한 언어라고 생각하시면 됩니다.
객체 지향 언어는 객체가 데이터 뿐만이 아닌 사용하는 방법(method)까지
포함할 수 있다고 생각하시면 됩니다.
데이터와 사용 방법을 동시에 보유한다니, 얼마나 큰 장점인지 아직 감이 잘 안오시죠? :D
이는 앞으로 꾸준히 살펴볼 내용이니
"아, 이거 내 생각보다 엄청 편리한 도구인거 같다!" 라고 생각하시면 좋겠네요.
오늘은 이정도만 살펴보는 것으로 마치겠습니다.
다음 챕터는 환경 구축을 다뤄보도록 하겠습니다. 긴 글 읽어주셔서 감사합니다!