DAY1. 자바의 특징
자바
1. 소스코드(.java) 작성한다.
2. 소스코드(.java)를 실행파일(.class)로 변환 - 자바개발도구(jdk)에서 자바컴파일러(javac.exe)를 제공한다.
javac.exe에 의해 소스파일(App.java) -----> 실행파일(App.class)을 생성한다.
javac.exe는 컴파일러(Compiler) 프로그램이다.
* 컴파일 : 소스파일을 실행파일로 변환하는 작업을 의미한다.
program Files > Java > jdk-17.0.4.1 > bin 폴더 안에 java와 javac가 있다.
javac : 컴파일러, 소스코드를 실행파일로 만들어준다.
java : 자바가상머신(jvm)을 실행시켜준다. 실행파일을 실행시켜준다.
javadoc : 메뉴얼 문서를 만드는 도구
jar : 패키징하는 도구
3. 실행파일을 실행한다.
java.exe 실행파일명
* .class 확장자는 생략한다.
ex) App.class 실행파일 실행하기
java.exe App (.class 생략! 소스코드 확장자는 여러개일 수 있지만 자바에서 실행파일은 무조건 .class라서)
* 자바 가상머신이 실행되고, 자바 가상머신은 App.class 파일을 읽어서 실행한다.
4. 프로그램이 실행된다.
자바의 모든 프로그램은 컴퓨터가 수행할 작업이 정의된 작업지시서다.
소스파일(.java) : 개발자용 작업지시서, 텍스트파일이다.
실행파일(.class) : 자바가상머신용 작업지시서, 바이트코드파일이다.
* 바이트코드는 자바가상머신(jvm)이 이해할 수 있는 코드다.
* 컴파일러는 소스코드를 바이트코드로 변환한다.
- 예약어(키워드) : 사용위치와 사용목적이 이미 결정된 키워드, 식별자로 사용할 수 없다.
- 식별자 : 고유한 이름이다. 패키지명, 클래스명, 메소드명, 변수명이 식별자다.
식별자는 개발자가 임의로 정하는 것이다. 식별자는 문자, 숫자, _만 사용할 수 있다.
(단, main은 프로그램 실행의 진입점이기 때문에 변경할 수 없다.)
값을 식별자와 구별하기 위해 "" 안에 작성한다. 숫자로 시작하는 식별자는 없기 때문에 쌍따옴표를 적지 않는다.
- 수행문 : 메서드 안에 적은 문장
- 크로스 플랫폼을 지원한다.
: 자바가상머신이 설치되어 있기만 하면 운영체제나 하드웨어 플랫폼에 상관없이 자바응용프로그램을 실행할 수 있다.
- 객체지향프로그래밍 언어다.
: 레고블록을 조립하듯이 각각의 블록에 고유한 기능을 구현하고, 그 블록들을 조립해서 완성된 프로그램을 개발하는 방식이다.
: 블록 하나하나가 객체에 해당되며, 그 블록은 설계도를 이용해서 만들어진다.
: 하나의 설계도로 같은 블록을 여러 개 만들어 내는 게 가능하다.
: 기존 블록보다 더 좋은 블록이 개발되면 언제든지 새로운 블록으로 교체가능하다.
: 재사용성, 확장성이 매우 뛰어나다.
- 플랫폼 독립적인 언어다.
: 시스템의 소프트웨어, 하드웨어 사양에 상관없이 자료형이 크기가 고정적이다. (c언어의 경우 가변적으로 변한다. 시스템에 따라 정수의 최소 범위, 최대 범위가 달라진다, 자바는 값을 예상할 수 있다. 최소 범위, 최대 범위는 예측 범위 내에 있다. -> 시스템 독립적인 언어)
- 자바가상머신이 메모리 관리 작업을 자동으로 수행한다.
: 개발자가 메모리 관리기능을 신경 쓸 필요 없이 업무로직의 구현에만 집중할 수 있게 한다.
- 멀티쓰레드를 지원한다. (쓰레드는 한번에 동시 실행되는 것을 말한다.)
- 함수형 프로그래밍을 지원한다. (java8부터 지원)