[CH00]Java 기초
프로그래밍
컴퓨터가 일을 하도록 컴퓨터 언어로 명령을 만들고 컴퓨털 하여금 그 명령을 실행하도록 하는 것.
프로그램
컴퓨터에게 일을 시키는 명령의 집합
명령(소스 코드) 집합과 컴파일된 결과물까지 포함.
프로그래밍 언어
-절차 지향 : 순서 대로
-객체 지향 : 객체를 만들고 그것들끼리 유기적으로 연결
C : 메모리 직접 제어. 플래폼 호환성 없음.
└ C++ : 객체 지향
└ C# : 공장 자동화 같은 데서 많이 쓰임.
컴파일
소스 파일을 컴퓨터가 이해할 수 있는 기계어로 만드는 과정. 컴파일된 파일(오브젝트 파일)
(*소스 파일 : 프로그래밍 언어로 작성된 텍스트 파일)
자바(Java)
-자바가상머신(JVM) : 자바 바이트 코드를 실행하는 자바 가상 기계.
플랫폼이 다른 걸 완충하는 역할. → 호환성 좋음.
자바가상머신 자체는 플랫폼 종속적(플랫폼마다 각각 작성)
-WORA(Write Once Run Anywhere)
한번 작성되어 컴파일된 것은 모든 플랫폼에서 바로 실행.
바이트 코드이기 때문에(네트워크 때 추가 설명 예정)
(네트워크 통과할 때 바이트 단위이기 때문에 2바이트, 3바이트일 경우 짤려서 나올 수도 있음)
-자바 특징
✔플랫폼 독립성 : 플랫폼 상관없이 어디서든 실행. 가상머신 덕분.
✔이식성 : 웹프로그램 만드는데 적합.
가상머신 위에서 돌아가기 때문에 속도는 느린 편. 게임에선 사용하지 않음.
✔캡슐화 : 클래스 내에 모든 변수(필드), 함수(메서드) 구현.
클래스 안에 새로운 클래스(내부 클래스) 작성 가능.
✔소스 파일(.java)과 클래스 파일(.class)
소스 파일엔 여러 개의 클래스가 들어갈 수 있으나 public class는 1개여야 함.
컴파일된 클래스(.class)엔 클래스 하나만 존재. 컴파일은 클래스별로 생성.
(위치 변경하지 않았다면 bin 폴더에 클래스 파일 생성됨)
✔패키지 : 관련있는 클래스를 묶어서 관리
✔가비지 컬렉션
할당 후 사용되는 않는 메모리(가비지)를 자동적으로 정래해줌.
다만 자바가 자동으로 해주는 거라 개발자가 원하지 않는 타이밍에 할 수 있음.
가비지 컬렉션이 시행될 때는 락(Lock)이 걸려 멈춤. 실시간 응용 시스템엔 부적합.