기록

DAY1. 자바의 특징

devcorn3 2022. 9. 8. 09:13

자바

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부터 지원)