Skip to the content.

- JIT, AOT 컴파일러 소개

JIT:Just-in-Time의 약자이며 프로그램을 실제 실행하는 시점에 기계어로 번역하는 컴파일 기법이다.

앞에서 배웠던 컴파일방식과 인터프리터방식을 합친 하이브리드방식을 말하며

자주 실행하는 코드(HotSpot)를 기계어로 번역하여 별도의 메모리(cache)에 보관해놨다가

실행할 때 바로 기계어를 OS에 던져줌으로써 실행속도를 높인다(거의 Native App수준)

AOT:Ahead Of Time의 약자이며 프로그램을 실행하기 전에 미리 기계어로 바꿔놓는 기법이다

클래스파일의 코드를 읽어서 JVM이 바로 기계어로 변역하여 cache에 미리 저장해놓는다.

설치시점에 소스코드를 번역하여 설치가 느리며 번역을 해서 따로 파일을 저장하기 때문에 용량을 많이 먹는다는 단점이 있다.

하지만 그만큼 실행시점에 미리 번역한 파일을 실행하므로 빠르게 실행이 가능하다는 장점이 있다.

- 자바 언어 기초(com.eomcs.lang)

- 실습 프로젝트 : mini-pms(프로젝트 관리 시스템)

- 1-c 단계: 프로젝트에 버전 관리 시스템 Git을 적용하기(계속)

해당 디렉토리를 git 초기화 한다는 의미이다.

숨겨진 폴더로써 해당 디렉토리의 모든 변경 내용을 저장하는 곳으로

삭제하면 더 이상 깃으로 폴더의 변경사항을 저장할 수 없다.

new repository로 새 레포지토리를 생성한다.

- 2 단계: 리터럴과 콘솔 출력 다루기

- 3 단계: 변수와 키보드 입력 다루기

- 학습 목표 달성 확인 목록

- [] .git/ 폴더가 무슨 용도인지 알고 있는가?

숨겨진 폴더로써 해당 디렉토리의 모든 변경 내용을 저장하는 곳으로

삭제하면 더 이상 깃으로 폴더의 변경사항을 저장할 수 없다.

- [] git 을 이용하여 로컬 저장소에 변경한 내용을 백업할 수 있는가?(터미널)

git add .//변경된 파일을 목록화
git commit -m "커밋할 메시지"//백업 명단을 로컬 저장소에 백업

- [] git 로컬 저장소를 원격 저장소와 연결할 수 있는가?

echo "# 저장소 이름" >> README.md
git init//초기화
git add README.md//README파일 추가
git commit -m "first commit"//첫번째 커밋 메시지와 함께 첫 커밋
git branch -M main//처음엔 master라고 지정되어있으나 main이라고 수정해준다(인종문제로인해?)
git remote add origin 저장소 주소//로컬 저장소와 서버 저장소와 연동하기
git push -u origin main//main으로 push

- [] git 로컬 저장소의 변경 사항을 원격 저장소에 업로드 할 수 있는가?(터미널)

git push//로컬에 백업된 파일을 서버 저장소에 업로드

- [] 문자열 리터럴을 다룰 수 있는가?

String str = "abc";

str이라는 변수에 abc라는 리터럴을 메모리에 넣는다.

- [] print(), println(), printf() 메서드를 사용할 수 있는가?

코드로 이해하기 쉽게 설명하겠다.

-print();

System.out.print("나는 ");
System.out.print("자바의 왕이다.");

//결과
나는 자바의 왕이다.

-println();

System.out.println("나는 ");
System.out.println("자바의 왕이다.");

//결과
나는 
자바의 왕이다.

-printf();

System.out.printf("%s %s의 %d등이다.\n","나는","자바",1);

//실행
나는 자바의 1등이다.

%c:문자타입 리터럴 출력
%s:문자열타입 리터럴 출력
%d:정수타입 리터럴 출력
%f:실수타입 리터럴 출력
\n:줄바꾸기
\t:일정간격 띄우기
\":큰따옴표 출력
\':작은따옴표 출력

- [] Scanner 객체를 사용하여 키보드 입력을 다룰 수 있는가?

사용자에게 입력을 받을수 있는 자바의 기본 메서드이며

정수,실수,문자열을 읽어올수 있다.

최초 Scanner 메서드 생성시 맨위에

import java.util.Scanner;

가 생성된다.이렇게 되면 해당 메서드를 사용할 수 있다는 것이다.

그리고

Scanner 변수명 = new Scanner(System.in);

해당 클래스에서 Scanner 메서드를 사용해서 사용자에게 입력을 받을 수 있는 변수를 생성 할 수 있다.

정수타입 데이터의 기본형인 int같은 경우엔 nextInt(); 메서드가 뜨는것을 볼 수 있다.

센스가 있다면 nextxxx();라는 규칙이 보일것이다.

만약 float타입이면 nextFloat();가 될 것이다.

- [] C, C++, Java를 비교하여 특징을 간략히 설명할 수 있는가?

C:코드를 잘 분류해서 관리를 쉽게할 수 있으며 절차지향 언어이다.(단점:명령실행시 속도가 느리다)

C++:반 객체지향 언어이며,컴파일하여 VM위에서 실행되기 때문에 안정성과 이식성이 높다.(단점:명령실행시 속도가 느리다)

JAVA:완벽한 객체지향 언어이며,컴파일하여 JVM위에 실행되기 때문에 어느환경이든 JVM만 있으면 실행이 가능하다는 장점이 있다.

- [] function, class 문법이 등장한 이유를 이해하는가?

자바식으로 설명하자면 function은 메서드,

class는 메서드들을 담고 있는 하나의 바구니하고 생각하면 된다.

메서드는 중복되는 코드들을 한가지로 뭉쳐서 붕어빵 기계처럼 가지각색의 재료만 넣으면

같은 붕어빵이지만 다른 내용물을 가진 결과물을 나오게 해주는 소스코드들을 말한다.

해당 문법이 나온 이유는 반복되는 소스들을 단축시킬수 있으며,다른 클래스에서도 사용할수 있는 특징이 있다.

그리고 자바의 장점인 유지보수의 단축성을 보여줄수 있는 점이다.