상세 컨텐츠

본문 제목

[TIL#5-1] Java를 자바랑 part.1 <Java란?>

내배캠/Chapter2

by DK9 2023. 10. 12. 14:25

본문

<어제 검색해서 찾은 것들>

 : 없다

 

<데일리 루틴>

내배캠 공부

밥 잘 먹기

운동

 

1. Java의 역사

 1) 1990년대에 발표, 어디서나 마시는 커피처럼 어디서나 동작 가능한, 자바 커피에서 이름을 따 만든 언어, 가장 대중적인 언어이다.

 2) 핵심기능 = C언어 기능 + 공통 실행환형(JVM) + 클래스 + 객체;

 3) 객체는 모든 것을 표현하기 위한 개념, 특징(=속성, 변수)과 행동(=메서드, 함수)을 가지고 있음. 매우 중요한 개념.

 4) 특징은 대표적인 객체지향언어(클래스&객체)이며, 여러 운영체제에서 실행 할 수 있다(JVM). 유지보수가 쉽고 프로그래밍 오류를 방지하고 있어 프로그램이 상대적으로 무겁지만 보안상 안전하다. 대규모 앱 개발이 가능하고(API제공) 다양한 개발 도구와 라이브러리를 사용할 수 있다.

 

2. JVM이란?

 1) Java Virtual Machine, 자바 가상 머신이라는 뜻이며 여러가지 기기 위에 Java를 실행시킬 수 있는 가상의 기기를 만들어 주는 것을 의미(ex. 어디든 모포를 깔면 화투를 칠 수 있다. '예림이 그 패 봐봐 사쿠라여?' 의 장면은 선상이었다.)

 

 2) 구성

  2-1. 바이트 코드 : ~~.java 운영체제가 읽을 수 있는 코드로 컴파일러가 변환한 코드.

  2-2. 컴파일러 : 현 수준에서는 ~~.java파일을 Class파일로 변환하는 기능을 수행한다 로 정의한다. ~~.java는 사람이 이해할 수 있는 방법으로 짠 운영체제는 읽을 수 없는 코드이다. Class는 운영체제가 읽을 수 있다.

  2-3. 클래스 로더 : ~~.class 바이트 코드를 메모리 영역에 담는 운반기, JVM으로 Class파일을 불러와서 메모리에 저장함

  2-4. 인터프리터 : 운영체제가 읽은 바이트 코드(Class파일)를 기계가 실행할 수 있는 기계어로 번역하는 기능

   가) JIT 컴파일러 : 인터프리터의 효율을 높여주는 서포터 해석기

  2-5. 메모리 영역 : Java데이터를 저장하는 영역, 운영체제로부터 JVM이 할당받은 메모리 영역

  2-6. 가비지 컬렉터 : 메모리 영역에서 안 쓰는 데이터를 주기적으로 청소하는 기능

 

 3) JVM을 설치하려면 JRE를 설치해야한다.

 

3. JRE란?

 1) Java Runtime Environment, 자바 실행 환경

 2) JRE만 있다면 Java를 실행만 시킬 수 있다. 즉 ~~.class파일만 실행 가능하다.

 3) 이를 해결하기 위해서는 JDK가 필요하다.

 

4. JDK란?

 1) JRE를 포함하고 있다. Java Development Kit, 자바 개발 키트

 2) ~~.java 파일을 ~~.class 파일로 변환해 주는 컴파일러 기능과 코드를 디버깅하는 jdb 등의 기능이 잇다.

 3) 디버깅 : 코드를 면밀히 살펴보고 수정할 수 있는 기능

 

5. Java실행 이후

 1) 모든 Java프로젝트는(=자바 앱은) 제일 먼저 클래스의 main 메서드를 무조건 실행시킨다. 이는 JVM의 약속이다.

 2) 메소드 : 현 수준에서는 클래스 밑의 하위 요소라고 정의한다.

 3) class : 현 수준에서는 ~~.java파일을 ~~.class로 컴파일할 때의 기준이 되는 영역이라고 정의한다.

 4) public : 현 수준에서는 접근 제어자, class를 어떻게 제어할지(=어디까지 접근하게 할 것인가?)를 결정한다. 종합해서 public이 붙은 class는 공통적으로 어디서든 접근이 가능하다. 로 정의한다.

 5) 파일 이름 : public class의 이름은 해당 ~~.java파일의 이름과 일치시켜야 한다.

 6) static : 현 수준에서는 해당 프로그램이 실행될 때 무조건 실행된다 로 정의한다.

 7) void : 메서드 출력 값의 정의는 메소드 이름 앞에 위치한다. void는 메소드 출력 값의 데이터 타입의 한 종류. 출력이 없다는 뜻. 출력이 있다면 메소드 내부에 return ~~~ 이 있고 메소드 출력 값으로 ~~~에 해당하는 데이터 타입을 기입힌다. input과 output 중 output이다.

ex) 


public class Main {
    
    // A라는 메소드는 String을 리턴한다.
    public static String A() {
        return "String 은 문자열";
    }
    // one이라는 메소드는 int를 리턴한다.
    public static int one() {
        return 1;
    }
    // A메소드와 one메소드를 출력하는 main메소드
    // 메소드 이름 뒤의 ( )는 매개변수(=input) 자리 이다.
    public static void main(String[] args) {

		//객체 : 특징(속성, 변수) , 행동(메소드, 함수)
        //System클래스 .(의 하위 요소) out이라는 객채 . println 행동
        System.out.println(A());
        System.out.println(one());
    }
}

출력하면 이렇게 나온다.

 8) (String[] args) : 매개변수, 메서드 이름 뒤 의 ( )에 위치한다. main 이라는 메서드를 호출할 때 'input은 무엇으로, 어떤 타입으로 할 것이냐?' 는 질문에 'String타입의 args라는 이름으로 메소드를 호출할 것이다.' 고 답하는 자리. input과 output 중 input이다.

 9) ㅁ.ㄴ : ㅁ의 하위 요소 ㄴ. 온점(.)은 하위 요소를 표현할 때 사용한다.

 

 

#5-2 에서 계속#

 

관련글 더보기