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
'😒 저 저 저 개념없는 나 > 🤝🏻 자바를 JAVA' 카테고리의 다른 글
[Java] String.matches(String regex) | 인턴 (1) | 2023.12.04 |
---|---|
[Java] servlet tomcat 오류 | 인텔리제이 intelliJ (0) | 2023.05.10 |
[Java] ArrayList.removeIf() (0) | 2023.05.03 |
[Java/antlr] antlr gen 폴더 설정 방법 (0) | 2022.12.09 |
[JAVA] JAVA와 C언어 (0) | 2022.03.12 |