키보드워리어

【JAVA】자바 플랫폼 소개 및 클래스를 만들어보기 본문

JAVA/입문

【JAVA】자바 플랫폼 소개 및 클래스를 만들어보기

꽉 쥔 주먹속에 안경닦이 2022. 8. 28. 14:33
728x90

 

안녕하세요 【키보드 워리어】

 

⌨🗡🧑


블로그 방문자 여러분, 안경닦이입니다.

 

오늘은 자바 플랫폼에 대해 소개하고, 클래스를 만들어보면서

 

앞으로 배울 내용들을 정리해보겠습니다~!

 


 

플랫폼이 독립적이다

 

앞으로 작성하는 대부분의 코드는 Jshll로 실행이 아닌 자바 코드로 컴파일하고 실행해볼게요

 

이 글을 보시기 전에 제가 작성했던 Jshell글을 보시면서 따라오시면 더 이해가 잘되실 거에요

 

 

https://keyboardwarrior.tistory.com/category/JAVA%20%EC%99%84%EC%A0%84%EC%A0%95%EB%B3%B5%21%21/Jshell

 

'JAVA 완전정복!!/Jshell' 카테고리의 글 목록

프로그래밍 개발지식 공유 블로그입니다.

keyboardwarrior.tistory.com

 

JAVA는

플랫폼이 독립적이에요 이게 뭘 의미할까요?

 

 

 

컴퓨터의 기본 명령은 어셈블리 언어에요

 

 

컴퓨터는 0과 1을 알아듣죠

 

 

자바나 파이썬 등 어떤 프로그래밍 언어를 사용하려 해도

 

 

출력은 운영체제를 위해 기본 명령으로 바뀝니다

 

 

플랫폼 독립적이라는 것은 내가 프로그래밍한 자바 코드가

다른 운영체제들에서 모두 작동하길 원하는 걸 의미합니다

 

 

※하지만 모든 운영체제마다 명령이 다르잖아요!

 

 

자바는 이 문제를 어떻게 헤쳐나갔을까요?

 

 

byte code

 

자바는 byte code라고 하는 중간 표현을 가지고 왔어요

 

 

0과 1 위에 모든 운영체제에서 잘 쓰는 표현을 만들어 두는데 이를

bytecode라고 해요

 

 

바이트 코드는 운영체제와 관계없이 공통적인 포맷을 취하기 때문에

 

 

자바는 코드만 byte code로 바꿔주기만 하면 됐죠

 

 

※하지만 운영체제들은 자바가 만든 바이트 코드를 이해하지 못해요

 

 

바이트코드들을 어떻게 운영체제에 맞는 명령어로 바꾸었을까?

 

 

JVM의 등장

 

JVM 

Java Virtual Machine의 약자입니다.

 

 

JVM이 할 수 있는 건 바이트 코드를 가져다가

 

 

특정한 운영 체제가 명령을 실행할 수 있도록 바꾸는 겁니다

 

 

※윈도우/ 유닉스/ 리눅스/ Mac 모두 제각각 운영체제 JVM을 가지고 있어요

모든 운영체제에서 운영 가능하단 뜻이죠

 

 

※정리

 

자바가 플랫폼 독립성 문제를 해결한 방법?

  1. byte code 개념 개발
  2. 각 운영체제를 위한 명령으로 바꿔주는 JVM 개발

 

그래서 우리가 자바를 통해 처음으로 할 것은 컴파일해보기에요

 

 

이 행위는 우리에게 bytecode를 얻게 해주죠

 

 

그리고 그 프로그램을 bytecode로 실행하는걸 RUN이라고 합니다

 

 

우리가 지금까지 배운 자바 코드들을 jshell 밖에서

 

실행해보려면 이 컴파일이 필요하게 됩니다

 

 

 

 

<그림으로 표현해볼게요>

 

 


 

Class

 

Class는

클래스는 템플릿과 같아요

 

 

무슨 말이냐고요?

 

 

Country라는 클래스가 있다고 가정해봐요

 

 

이 Country 클래스엔 많은 사례들이 있겠죠?

 

 

한국, 미국, 네덜란드 등 말이에요.

 

 

이걸 Object(객체)라고 합니다

 

 

자바에서 클래스를 쓸 때 어떻게 쓰는지 살펴보시죠

 

클래스 선언 방법

자바에서 클래스를 사용할 때는 class 이름을 입력하고 메서드, 클래스 괄호를 여닫아요

 

 

{Int = I} 처럼 프로토 데이터 유형을 변수로 지정한 거처럼

Country라는 클래스를 유형으로 지정할 수 있게 됩니다

 

이걸 클래스의 사례들을 만든다고 표현하고

영어로는 instance라고 해요

 

클래스는 템플릿(견본)이고 오브젝트는 인스턴스(사례화)시킨 거죠

 

 

예시를 살펴볼게요

Country Korea = new Country()

country 클래스에 korea 오브젝트를 인스턴스 하는 방법

 

 

여기서 korea 클래스가 Country형의 오브젝트가 됩니다

클래스는 Country,  korea는 Country형 클래스의 오브젝트가 되도록 인스턴스화 시킴

 

 

클래스는 하나의 견본이라서 여러 오브젝트를 만들 수 있어요

 

 

보통 클래스는 메소드가 있고

 

 

변수, 데이터가 들어가 있습니다

 

 

 

 

※ 참고 내용

 

 

 

[01] Planet 클래스 만들어보고, 지구, 금성 메소드를 만들어보세요!

 

 

 

[정답]:

Class Planet{
}
Planet earth = new Planet()
Planet venus = new Planet()

 

 ※ 정답 화면 (Jshell로 출력)

 

 

 

728x90