2월25일 내용정리-1
*자바 특징
1.단순하다.
2.객체지향언어다.(OOP, object-oriented programming)
객체지향 언어란 예를 들어 자동차를 만들때 자동차의 부품(문,바퀴,엔진...)부품들을 각각 만들어 만들어진 부품을 조립하여 하나의 자동차를 만드는 개념이라 한다.
3.메모리를 자동정리해준다. 가비지컬렉션(GC, garbage collection) 기능이 있음
가비지컬렉션(GC, garbage collection)이란??메모리 관리 기법 중의 하나로, 프로그램이 동적으로 할당했던 메모리 영역 중에서 필요없게 된 영역을 해제하는 기능이다.
예를 들어 책꽂이에 책이 수백권 꽂혀있다고 가정 했을때,
내가 공부를 할려면 책만 있으면 공부가 될까?!
아니다. 책상에 원하는 책을 펴고 공부를 해야 한다.
즉, 여기서 책꽂이는 하드디스크(대량저장소) 책상은 램(Ram) 이고
원하는 저장된 정보를 꺼내서 램위에 올려놓아야 그것을 실행 할수 있는데,
이것을 수백권의 책꽂이에서 원하는 책을 골라 책상에 올려놓는것과 같은 이치이다.
이때 책상이 넓다고 이것저것 펼쳐서 책상에 올려 놓으면 공부의 효율이 떨어지거나 과부하 걸려 공부를 아예 못해버리는 것처럼
책상에 공부할 책만 펼쳐놓을수 있게 지정을 하고 필요 없으면 다시 책꽂이에 꽂아 놓아주는 관리해주는 기능을 JVM이 해준다.
JVM는 운영체제의 메모리 관리 능력을 허용받아 운영체제를 대신하여 java에서관련 메모리를 관리해준다.
여기서 운영 체제란??컴퓨터 시스템의 자원들을 효율적으로 관리하며, 사용자가 컴퓨터를 편리하고, 효과적으로 사용할 수 있도록 환경을 제공하는 여러 프로그램의 모임입니다.
예를 들어 최고급 오디오(하드웨어)와 아이유CD(소프트웨어)만 있다 한다면 아이유의 노래를 들을수 있을까?!
못듣는다! 왜? 플레이버튼을 안눌렀기 때문에 들을수 없다.
여기서 오디오(하드웨어)와 아이유CD(소프트웨어)를 연결하는 플레이 버튼처럼 중간다리 역할을 하는것이 운영체제이다.
메모리관리 및 하드웨어와 내가원하는 소프트웨어의 작동을 위하여 중간 역할을 하고, 우선순위를 정하고 메모리관리등...모든 중간역할을 하는것이 운영 체제이다.
4.풍부한 무료라이브러리(자바API 이외)가 있어서 개발하기에 좋은환경을 갖췄다.
5.이식성이 좋다.즉, A컴터에서도 작동이 잘되고 B컴터로 옮겨서도 작동이 잘되는것
6.멀티쓰레드를 지원 (동적로딩지원)한다. 즉, 작업을 동시다발적으로 가능하게끔 해준다.
7.분산처리 지원(예를 들어 미국본사에 있는 오라클 자바를 다운로드 받을때 직접 미국본사까지 신호를 주고받으면서 다운로드를 받는게아니라 각 나라별 또는 지역별로 데이터센터 지점을 만들어 유져의 살고있는 각각 해당지역 데이터센터에서 나눠서 처리해주는것을 말한다.
***컴파일 이란??
사람이 짜는 프로그램은 소스파일(고급언어)->컴터 못알아 먹음->컴퓨터는 이진코드(0101)으로만 인식하기때문->컴파일러(JAVAC.exe)가 바이트파일=이진코드(0101)로 바꿔줌 이 모든 과정을 컴파일 이라고 한다.
여기서 한단계 나아가
->다시한번 각 해당 운영체제에 맞는 기계어로 번역해주는 것을 JVM이 해주는 이기능 때문에 자바를 많이 애용하고 있다.
자바는 자바가상머신(JVM)이 핵심!!!
과거 프로그램을 만들때 각각 운영체제를 염두해두고 각 해당 운영체제 가 알아듣는 해당 운영체제 기계어로 개발을 했었으나,
자바는 자바가상머신(JVM)이라는 중간에 통역해주는 통역사가 있어
각 해당 운영체제에 맞는 기계언어로 번역하여 적용해준다.
아래와 같은 시스템을 거친다.
즉 각 운영체제의 통역관 역할을 하는 자바가상머신(JVM)
예) 한국어(소스파일)------컴파일러------>영어(바이트파일=이진코드(0101),JAVAC.exe)-------JVM(java.exe)---->일본어(맥킨토시 운영체제)
예) 한국어(소스파일)------컴파일러------>영어(바이트파일=이진코드(0101),JAVAC.exe)-----JVM(java.exe)------>사우디아라비아(윈도우 운영체제)
예) 한국어(소스파일)------컴파일러------>영어(바이트파일=이진코드(0101),JAVAC.exe)------JVM(java.exe)---->독일어(리눅스운영체제)
이러한 특징을 플렛폼(운영체제)에 독립적이다. 라고 말하기도 한다.