사실 자바를 처음 배울 때 읽어 봤었지만, 이해하지 못하고 의미없게 넘겼다.
책을 다 읽고나서 리마인드하는 겸 처음부터 읽으면서 이해가 갔다.
책 처음에 이렇게 중요한 개념이 있었다..
내가 갈 수록 자바라는 언어를 잊고 그냥 타이핑하거나 실행하는 것에 집중했기 때문인 것 같다.
자바의 특징은 프로그래밍을 하면서 정말 중요한 개념이다.
자, 그럼 자바의 특징을 정리해 보겠다.
1. 단순하지만 강력하다.
자바는 C++에서 출발했다.
하지만 강력하지만 까다로운 포인터 연산을 제거하였으며, 유지 보수를 힘들게 했던 연산자 중복, 다중 상속 등의 복잡한 기능을 삭제했다.
자바는 이런 단순함을 가지면서도 C++에서 제공되지 않는 자동 메모리 관리 기능, 멀티 스레드, 객체 지향적인 방법으로 제작된 방대하고 풍부한 라이브러리를 무료로 제공하고 있다. 그렇기 때문에 개발자들은 이런 라이브러리를 사용하여 원하는 프로그램을 힘들이지 않고 작성할 수 있다.
2. 객체 지향적이다.
객체 지향(Object-Oriented)은 객체별로 코드를 작성하고 객체들을 조합하여 전체 프로그램을 완성하는 프로그램 설계 방법론이다. 객체 지향 기법을 사용하면 작성된 코드를 재사용하기 쉬워서, 보다 빠르게 신뢰성 있는 프로그램을 만들 수 있다.
자바에서는 기본 자료형(int, float, long) 등을 제외한 거의 모든 것이 객체로 표현된다. 반면에 C++와 같은 언어는 기존의 설계 방법이 절차 지향적인 특성도 여전히 가지고 있어서 사용자가 객체 지향 방법을 전혀 사용하지 않고서도 프로그램을 작성할 수 있다.
3. 분산처리 지원
자바는 네트워크상에서 동작되는 것을 기본으로 설계된 언어이다. 그렇기 때문에 TCP/IP, HTTP, FTP 같은 프로토콜을 처리할 수 있는 라이브러리를 가지고 있다. 따라서 다른 언어보다 쉽게 네트워크 관련 프로그램을 개발할 수 있으며 프로그래머는 로컬 파일 시스템에서 파일에 접근하는 것과 마찬가지로 네트워크에서 URL을 이용하여 네트워크의 자원에 접근하여 사용할 수 있다.
4. 견고하다.
자바 컴파일러는 실행 시에 문제를 일으키는 많은 오류들을 잡아낸다. 또 포인터 오류로 인한 메모리 누수 문제도 자바에서는 일어나지 않는다. 연결 리스트와 같은 복잡한 자료 구조를 구현하려면 포인터는 필수이다. 하지만 포인터로 인하여 많은 메모리 오염 문제들이 발생한다. 자바는 포인터 개념을 사용하면서도 안전하게 처리한다.
5. 안전하다.
자바는 네트워크 환경에서 운영되는 언어이므로 다른 언어보다 안전성이 요구된다.
- 실행 스택을 벗어난 접근
- 자신의 프로세스 밖의 메모리 공간 접근
- 파일을 허락없이 읽거나 쓰는 것
6. 컴퓨터 구조에 중릭적이다.
이 특징이 가장 중요하다. 사실 이 아이디어는 자바가 처음이 아니다. 하지만 실제로 이 아이디어를 성공시킨 언어가 바로 자바이다. 자바에서는 컴파일된 실행 코드가 플랫폼 독립적이다. 자바 컴파일러는 자바 언어로 작성된 프로그램을 바이트 코드(byte code)라는 특수한 이진 파일로 변환한다. 바이트 코드를 실행하기 위해서는 자바 가상 기계(JVM: Java Virtual Machine)라는 특수한 가상 컴퓨터 S/W가 필요하다. 이것이 바이트 코드를 한 줄씩 읽어서 해석한 후에 실행한다. 따라서 자바로 개발된 프로그램은 CPU나 운영 체제의 종류에 관계없이 자바 가상 기계를 설치할 수 있는 시스템에서는 어디서나 실행할 수 있다.
이러한 특징 때문에 자바는 인터넷 시대에 가장 잘 맞는 언어라고 할 수 있는데 인터넷은 다양한 종류의 컴퓨터가 연결된 네트워크이기 때문이다.
7. 이식성이 있다.
C나 C++와는 다르게 자바는 구현에 따라서 달라지는 언어 스펙이 없다. 예를 들면 자바에서는 int형은 항상 32비트이다. C/C++에서는 int형이 16비트도 될 수 있고 32비트일수도 있다. 이것은 프로그램을 다른 컴퓨터 기종으로 이식하는 경우에 많은 문제를 야기할 수 있다. 또 이진 데이터들은 고정된 형식으로 저장되고 전송된다. 따라서 Big-Endian 이나 Little-Endian과 같은 바이트 순서(byte ordering) 문제가 발생하지 않는다. 문자열은 항상 유니코드 형식으로 저장된다.
8. 멀티스레딩 지원
자바는 프로그래밍 언어안에서 멀티스레딩(multithreading)을 지원한다. 따라서 다른 언어와는 다르게 아주 쉽게 멀티스레딩 프로그램을 작성할 수 있다. 멀티스레딩이란 여러 가지 작업을 동시에 실행하는 것을 의미한다. 특히 자바는 멀티 프로세서 하드웨어를 지원하도록 설계 되었으므로 멀티 프로세서 시스템에서 높은 효율을 낼 수 있다.
9. 동적이다(Dynamic)
자바는 동적으로 변화하는 환경에 적응하도록 설계되었다. 라이브러리들은 실행 파일에 영향을 끼치지 않고 자유롭게 새로운 기능들을 추가할 수 있다. 기존의 C나 C++프로그램들은 라이브러리들이 변경되면 소스 파일들을 다시 컴파일, 링크하여 새로운 실행 파일을 생성하여야 했다. 하지만 자바는 실행되지 직전에 라이브러리를 동적으로 링크하므로 실행할 때 변경된 라이브러리가 자동적으로 참조된다.
'웹 프로그래밍 > Java' 카테고리의 다른 글
JVM? 가상기계, 버츄얼 머신, 가상 머신, 가상 컴퓨터이다 (0) | 2019.07.18 |
---|