2Java 프로그램의 실행구조

-1강은 자바의 전체적인 개요에 대해 설명

-2강은 실행구조에 대해 살펴본다.

 

2-1 환경변수 설정

1.환경변수란

JDK, JRE 환경변수를 설정하는 이유

-코딩을 한 것들이 java.exejavac.exe 경로 안에 있어야 코드작성한것들이 실행된다.

그래서 일일이 설정을 하지 않고, 어떠한 javac.exe, java.exe를 다른 디렉토리에서도 실행 할 수 있도록 하기 위해

환경변(Path)bin 경로를 세팅/등록 한다.

 

JDK->bin에 하기 파일들이 있다.

java.exe

-> 컴파일 되어서 클래스파일이 나오고 자바프로그래밍을 구동 시켜주는 JVM구동 명령

javac.exe

-> 컴파일러로 이용 되는 파일

 

 

환경변수(Path) bin 경로를 세팅/등록 하기위해 해야할 것들

a. JAVA_HOME 환경변수 추가

자바가 어디에 설치되어 있는지 시스템변수에 생성

내컴퓨터->속성->시스템속성->환경변수->변수생성 및 편집(java가 있는폴더까지 경로설정)

 

세팅1

 

b. Path환경변수에 JDK bin 디렉토리 추가

*자바가 어디에 있는지 알고 있는 상태에서 추가할 것

 

세팅2

 

*자바가 제대로 설치 되었고 환경변수가 잘 설정 되었는지 확인 하는 방법

window + r 로 실행파일을 실행시키고 cmd를 입력하여

command 창에서 java -version을 입력하면

하기와 같이 확인 할 수 있다.

 

 

2-2 Java 컴파일러와 JVM

java 소스 작성부터 프로그램 실행까지의 순서/원리

1. java 소스 (개발자가 공수하는 파트)
xxxxx.java 파일 -사람이 이해할 수 있는 소스코드/파일
(자바문법에 맞게 만들어진 소스코드. 기계는 이해할 수 없음.
그래서 기계가 저 확장자 파일을 이해할 수 있도록 전환해야 함->compile)

2. java compiler으로 바이트 코드 파일을 만듬
(javac.exe : 확장자 파일을 이해할 수 있도록 하는 실행)
이클립스에서는 소스코드 작성후 저장버튼을 누르면 자동으로 .class라는 확장자라는 파일이 만들어진다. 그것이 밑에 java application.class(자바의 기술을 응용해서 만든 application)

3. 바이트 코드 파일(xxxx.java에서 xxxxx.class로 바뀐다.)
(xxxxx.class : 소스코드 작성후 저장버튼을 누르면 자동으로 javac.exe가 컴파일해주면서 만들어진다)

4. java.exe : JVM 구동
(java application class파일을 java virtula machine이 읽어서 적혀 있는대로 컴퓨터를 동작시킨다)

5. 기계어로 바뀌어서 실제로 컴퓨터에서 실행(기계어로 바뀐 것이 컴퓨터에서 실행)
*기계에서 실행이 되었다라는 것을 LINK되었다라고 표현한다.
LINK 될 때(PC에서 하는 일)
-메모리로딩/실행준비/실행결정/초기화 => 실행

 

 

2-3 Java 프로그램 실행

a.자바소스코드 작성 단계까지 수작업

public class Mainclass {

public static void main(String[] args){

#jvm이 작동될 때 제일 먼저 찾는 main method

System.out.println("Hello Java World!!");

}

}

 

b.compile해주기 위한 수동작업(javac.exe가 클래스파일을 만들어줌)

c.파일출력

*환경변수 편집을 통해

javac.exe, java.exe를 다른 디렉토리에서도 실행 할 수 있도록 하기 위해

환경변(Path)bin 경로를 세팅/등록을 해주어야 함.

 

=>이 수작업을 이클립스틀 통해서 모두 자동으로 가능하다.

 

 

2-4 이클립스 사용의 정점

컴파일, 디버깅 그리고 실행까지 쉽게 할 수 있다.

 

2-5 가비지 컬렉터

c계열 프로그램

-개발자가 직접 메모리를 관리해야 하고

메모리를 잘못 관리하면 메모리 누수가 발생하고 타프로그램 동작이 멈출 수 있음.

 

java프로그램

-개발자가 메모리에 접근할 수 없고

가비지 콜렉터가 불필요한 메모리를 회수해서 메모리를 최적화함.

 

*나같은 경우에는 잘 빠뜨리는 느낌이라 메모리누수가 발생할 것 같은 느낌이어서

 c계열 프로그램이 안맞을 수도 있을 것 같다..

'신입개발자로 취업하기까지 > JAVA' 카테고리의 다른 글

20200304 4-3강 형 변환  (0) 2020.06.14
20200304 4-2강 Java기본자료형  (0) 2020.06.14
20200304 4강 기본자료형  (0) 2020.06.13
20200304 3강 변수  (0) 2020.06.13
20200303 1강-자바프로그래밍이란  (0) 2020.06.08

1. 자바란

-가장 많이 사용 되는 언어

-웹서비스에 사용

-모바일에도 사용

-시스템 구축 및 다양한 산업 분야에 이용

 

 

2. 자바프로그래밍이란?

a.코딩- 개발자 업무영역

 

b.코드가 실행되기까지의 구조

->Java source code.java

->compile(compiler가 존재)

->Java application.class->run->Java virtual machine->run->computer

 

코드 실행되기까지의 순서

1. java source code.java -사람이 이해할 수 있는 소스코드/파일

(자바문법에 맞게 만들어진 소스코드. 기계는 이해할 수 없음.
 그래서 기계가 저 확장자 파일을 이해할 수 있도록 전환해야 함->compile)

2. compile (확장자 파일을 이해할 수 있도록 하는 실행)

-이클립스에서는 소스코드 작성후 저장버튼을 누른다.
-저장 버튼을 누르면 자동으로
.class라는 확장자(complie이 된 파일)라는 파일이 만들어진다.
-컴파일된 확장자 파일이 3번에 java application.class 이다.(자바의 기술을 응용해서 만든 application)

3. java application.class (소스코드 작성후 저장버튼을 누르면 자동으로 만들어진다)

(java source code.java를 저장하면 compile이 작동하면서 컴퓨터가 이해할수 있는 java application.class를 만든다.

4. run 1

(java application class파일을 java virtula machine이 읽어서 적혀 있는대로 컴퓨터를 동작시킨다)

java virtual machine (내가 설치[다운로드]한 프로그램)

5. run 2

(java application class파일을 java virtual machine이 읽어서 적혀 있는대로 컴퓨터를 동작시킨다)

computer

 

3. 자바언어의 탄생

-제임스 고슬링이 oak언어를 처음 개발하고 자바 언어로 발전

-가전제품에 탑재할 수 있는 프로그램을 개발하기 위해 탄생

-jsp, 서버가 알려지게 되면서 자바도 알려지게 됨

 

 

4. 자바언어 특징

a.언어트리

 

-FORTRAN 위에 어셈블리 언어 등등 있다.

 

 

5. C, C++이 있는데 왜 자바언어를 만들었는가

-초창기 시절의 자바언어의 단점을 본다면 C,C++에 비해서 속도가 굉장히 느리다.

 

*C,C++이 더 빠른 이유

-C,C++은 메모리에 직접 접근이 가능해서 메모리를 직접 관리한다.

 

*메모리역할 : PC안에도 메모리가 있듯이 메모리는 실제로 일꾼 일을 하는 역할을 한다.

*CPU역할 : CPU는 연산을 한다. 연산(+,-)을 하기 위해 데이터를 CPU에 넣어주어야 한다.

              그럴 때 데이터를 왔다갔다하게 이동 시켜주는 것이 메모리이다.

 

 

6. 초창기 시절 자바속도가 느렸던 이유

-리소스(메모리,CPU)를 많이 사용한다.

-자바는 직접 메모리를 관리할 수 가 없고, 중간에 매개체를 두고 한단계 프로세스가 더 있으므로 속도가 느리다.

 하지만, 현재 2018년도에는 자바가 굉장히 많이 빨라졌다.

 

 

7. 현재 자바의 장점

-초창기 단점이 전부 해결이 되진 않음

 

a. 객체지향 언어로 기능 부품화가능

 내가 작성한 코드, 다른 사람이 작성한 코드, 또 다른 사람이 만든 코드를 각각 객체라고 하고,

 그 객체를 합쳐서 확장해 나갈 수 있다는 개념

 내가 원하는 부품만 떼고, 다시 좋은 것으로 대체하는 기능을 자바에서 지원

 

b. JRE를 이용하여 운영체제로부터 자유로움(WRITE ONCE, RUN ANYWHERE)

 윈도우 환경에서 코드를 작성했지만, 리눅스 환경에서는 다시 코드를 작성해야 하지만,

 JRE를 통해서 알아서 리눅스 용으로 컴파일이 되어 작성된 코드가 돌아간다.

 즉, 나는 한번만 코딩을 하면 JRE를 이용해서 윈도우/OS/리눅스에서도 돌아간다.

 

c. 웹 및 모바일 프로그래밍이 쉬움

   안드로이드 자바기반으로 되어 있다. 모바일에 최적화된 프레임워크를 제공하고 있다.

 

d. GC(garbage collector)를 통한 자동 메모리 관리를 지원 : 메모리비접근단점보완

   c,c++는 메모리를 쓸만큼 쓰고 반환할 때는 반환한다.

   자바는 그럴 수 없다. 내가 쓸만큼 메모리를 쓰고, 놔두면 GC가 쓸필요가 없구나 하고 알아서 메모리를 정리해준다

 

e. 실행속도가 많이 개선 되어 속도가 빨라짐

 

8. 자바개발을 위한 준비물 및 HELLO WORLD 출력

 

a. 준비물1

JDK

Java Development Kit를 내가 사용하는 PC에 설치

JRE

-자바프로그래밍이 실행될 수 있도록 환경을 만들어준다
 OS환경에 간섭을 받지 않고 코드를 한번만 작성하면 알아서   다른 OS에서 실행되도록 도와준다.

API

-JVM을 컨트롤 하기 위해 API가 있다.
-API는 기능들이다.
-JVM이 일할 수 있는 기능들로 바깥쪽을 감싸고 있다.

JVM

Java Virtual Machine(자바 가상머신)
-프로그래밍을 하고 나면 JVM이 실행 되면서 작성된 코드가   실제로 실행된다.

*JDK(Java Development Kit)설치

-개발자가 아닌 사람은 프로그래밍 사용하는 입장에서는

-JRE(Java Runtime Environment)만 있으면 된다.

 

b. 준비물2

eclipse

- java 언어를 코딩하기 위한 기본 툴

- IDE(Integrated Development Environment : 통합개발환경)

- 무한 디버깅을 할 수 있다.

*어디서 문제가 생겼는지 확인하는 작업을 디버깅이라고 표현한다.

 

bin(binary)-컴파일된 코드(기계가 이해할 수 있는 코드)

src-작성한 코드

 

 

c. 실행 (Hello World 출력)

package explorer에서 실행

-src에 클래스를 만든다.

-글자폰트를 preference->general->appearance->text font->calibri(내스타일로)

-main을 누르고 ctrl+스페이스를 누르면 assitance가 뜨고 엔터를 치면 바로 자동으로 작성이 됨을 볼 수 있다.

 

main method 사용

-main을 타입후 ctrl + 스페이스 하기와 같은 main method가 만들어 진다.

 ->public static void main(String[] args)

*어느 프로그래밍이든 main method가 있다.(메인함수라고도 함)

 

main method

-프로그래밍이 시작될 때 가장 먼저 실행되는 프로그래밍의 출발점을 지정해주는 method이다.

*main method를 만들어 놓으면 많은 파일들 안에서 수많은 기능들 중 안에

 main method 안에 있는 것부터 프로그래밍을 시작되게 한다.

 

출력을 하기 위한 명령어

-sysout 타입후 ctrl+스페이스를 누르면 다음과 같은 출력명령어가 생성된다.

->System.out.println()

 

)hello world 작성

->System.out.println(“Hello Java World!!")

작성후에 ctrl + s 저장을 하면 src폴더에 저장이 되고,

bin(binary)에 컴파일(기계가 읽을 수 있는코드)Mainclass.class 파일이 생성됨을 확인 할 수 있다.

 

저장을 하면

 

d. Hello worldrun(play버튼)을 누르면 밑에 console메뉴에 헬로자바월드가 출력 됨을 볼 수 있다.

 

+ Recent posts