[Java] 자바의 특징
JAVA가 처음 출시되었을 당시 다른 프로그래밍 언어와 달리 특색 있었던 것은
어떤 컴퓨터 기종에서도 실행이 가능하다는 것이다.
일단 프로그래밍을 작성하면 하드웨어나 운영 체제의 종류에 관계 없이 동일한 모습으로 실행할 수 있다
Wirte Once, Run Everywhere
자바의 개발진이 공개한 자바 언어 설계 목표를 요약하여 알아보자
1. 단순
c++에서 출발하여 많이 사용하지 않던 불필요한 기능들은 삭제하고 꼭 필요로 하는 기능들만 포함하였다.
또한 c++에서 제공되지 않았던 자동 메모리 관리기능, 멀티 스레드, 방대한 라이브러리 등을 무료로 제공한다.
즉 구현 시 라이브러리를 사용하여 원하는 프로그램을 힘들이지 않고 작성할 수 있다.
2. 객체 지향
자바에서는 기본 데이터 타입등을 제외한 거의 모든 것이 객체로 표현된다.
C++은 여전히 절차지향적인 특성을가지고 있다.
3. 분산 환경 지원
자바는 TCP/IP, HTTP, FTP같은 프로토콜을 처리할 수 있는 라이브러리를 가지고 있기에
다른 언어보다 쉽게 네트워크 관련 프로그램을 개발할 수 있다. ex ) Spring
4.견고
보다 신뢰성 있는 프로그램을 만들기 위하여 오류를 만들 수 있는 원인들을 제거하였다.
ex) C언어에 있던 포인터 개념을 삭제, 컴파일 시에 강력하게 데이터 타입을 검사한다.
=> 포인터의 단점을 제거하고 장점만을 취할 수 있도록 설계
5. 안전
네트워크 환경에서 운영되는 언어이기에 안전성에 대한 중요성이 요구된다.
바이러스, 파일의 삭제 및 수정, 데이터 파괴작업이나 컴퓨터 오류 연산등을 방지하면서 실행되도록 설계되었다.
6. 컴퓨터 구조에 중릭적
자바의 컴파일러는 바이트 코드로 변역된다.
이는 어떤 컴퓨터에서도 해석하기 쉽고, 특정 프로세서의 명령어로 쉽게 변역될 수 있기에
서로 다른 기종의 컴퓨터에서도 자바는 실행 가능하다.
7. 이식성
하드웨어에 관계 없이 사용하기 위해 하드웨어 구조, 운영체제,
윈도우 시스템에 독립적인 바이트 코드를 사용한다.
더 나아가 기본 데이터 유형의 크기와 그 연산자의 행동을 명확하게 정의하는 등
기본 언어 정의를 엄격하게 함으로써 이식성을 높인다.
이로인해 모든 플랫폼에서 동일한 실행 결과를 생성한다.
8. 고성능
자바는 매 번 실행할 때마다 바이트 코드를 해석 해야 하기에 실행속도가 느린편이다.
이를 해결하고자 자바 코드를 실제 컴퓨터의 기계어로 직접변환하는 JIT 컴파일러 개념이 도입되었다.
이는 인터프리트 과정 없이 프로그램이 직접 실행될 수 있도록 한다. == 속도 up
9. 멀티스레딩
많은 작업을 동시에 할 수 있음을 의미한다. CPU를 효율적으로 사용할 수 있다.
ex) 브라우저에서 음악을 연주하며 데이터를 다운 / 이미지를 다운받으며 페이지 스크롤
10. 동적
C나 C++은 라이브러리들이 변경되면 소스파일들을 다시 컴파일, 링크하여 새로운 실행 파일을 생성.
자바는 실행되기 직전에 라이브러리를 동적으로 링크하므로 실행할 때 변경된 라이브러리가 자동적으로 참조된다.
아무래도 C언어에서 파생된 언어이다 보니 C언어랑 비교를 하는 경우가 많은 것 같다.
그리고 작성하다 보니 C언어와 JAVA의 차이가 궁금해져서 다음 게시물에는 그에 대하여 정리해 볼 것 같다!!
참고 문서 : power JAVA 2
http://www.kyobobook.co.kr/product/detailViewKor.laf?mallGb=KOR&ejkGb=KOR&barcode=9788992649865