1. Java의 탄생

개발 언어의 역사

  • A 언어
    • 핵심기능 : 입/출력, 문맥
  • B 언어
    • Bell 사에서 개발
    • 핵심기능 : A언어 기능 + 기계식 데이터 타입, 연산기능, 메서드
  • C 언어
    • 핵심기능 : B언어 기능 + 자료형 데이터 타입, 자료구조
  • Java 언어
    • 핵심기능 : C언어 기능 + 공통 실행환경, 클래스, 객체

 

Java 언어의 기능


2. Java를 배워야 하는 이유

Java를 배워야 하는 이유

  • Java는 가장 많이 쓰이는 개발 언어 중 하나
  1. Java는 공통 실행환경이 있어 여러 기기에서 실행 가능
    • 여러 기기의 운영 체제에서 실행할 수 있는 언어
    • 특히, 앱 개발에 적합!
  2. Java는 코드를 이해하기 쉽고 유지 보수가 쉬움
    • 존재하는 물건을 “객체”라고 부르는 세상을 닮도록 만든 객체언어
    • Java에서는 클래스를 통해 객체를 만듬
  3. Java는 안정성이 높아 프로그래밍 오류를 방지하고 보안상 안전함
    • Java 언어로 작성된 문맥을 바이트 코드로 변환하는 변환기(Compiler)가 먼저 오류를 체크
    • Java에서 지원하는 보안 기술이 많이 있음
  4. 대규모 앱 개발이 가능함
    • 네트워크 및 데이터베이스 연결 및 통신 등의 작업을 처리하는 API를 제공
  5. 다양한 개발 도구와 라이브러리를 사용할 수 있음
    • 이를 통해 앱 개발에 필요한 작업을 보다 쉽게 처리할 수 있음

3. Java의 놀이터, JVM

JVM의 뜻

  • Java Virtual Machine의 약자로 “자바 가상 머신”이라는 뜻
  • 가상 머신이란 가상의 기기를 만들어주는 것을 의미
  • 다시 말해서, 여러가지의 기기위에 Java 프로그램을 실행시킬 수 있는 가상의 기기를 만들어주는 것을 의미
  • 어느 장비에서든 JVM을 깔아주면 Java가 실행될 수 있는 환경이 됨

 

JVM의 구성

  • 바이트 코드
    • Java 프로그램 변환 코드
    • 내가 작성한 코드가 운영체제가 읽을 수 있는 코드(바이트코드)로 Java 컴파일러가 변환한 코드
    • Java 컴파일러란?
      • 내가 작성한 Java코드(.java 파일)들을 운영체제가 읽을 수 있는 바이트 코드(.class 파일)로 변환하는 변환기
  • 인터프리터
    • Java .class 코드 해석기
    • 운영체제가 읽은 바이트 코드를 기기가 실행할 수 있는 기계어로 번역
  • JIT 컴파일러
    • 빠른 Java .class 코드 해석기
    • 인터프리터의 효율을 높여주는 서포터 해석기
  • 메모리 영역
    • Java 데이터를 저장하는 영역
    • 운영체제로부터 JVM이 할당받은 메모리 영역
  • 클래스 로더
    • Java .class 바이트 코드를 메모리 영역에 담는 운반기
    • JVM으로 class(바이트 코드)를 불러와서 메모리에 저장함
  • 가비지 컬렉터
    • Java 쓰레기 청소기
    • 메모리 영역에서 안쓰는 데이터를 주기적으로 흡수해가는 청소기

4. 개발환경 구성

JRE

  • JVM을 설치하는 방법 : JRE를 설치하는 것
  • Java Runtime Environment 즉, 자바 실행 환경 이라는 뜻을 가지고 있음
  • JRE만 있다면 Java 프로그램을 실행만 시킬 수 있음
  • .class 파일만 실행 가능
    • JDK 가 javac 명령을 통해 .java 파일을 실행가능한 .class 파일로 변환해줌

 

JDK

  • Java Development Kit 즉, 자바 개발 키트라는 뜻을 가지고 있음
  • Java 프로그램을 개발하기 위해서는 필요함
  • JRE 기능을 포함하고 있음
  • .java 파일들을 .class 파일들로 변환해주는 Java Compiler(javac) 기능
  • JDK 디버깅 기능
    • Java 프로그램을 실행한다는 것은 곧 Java 코드를 한줄씩 실행하면서 명령을 수행하는 것을 의미
    • 우리가 개발한 코드들을 한줄씩 객체와 메소드를 수행하면서 변수들도 변하는 과정을 우리가 볼 수 있도록 JDK는 코드를 따라가면서 변수를 볼 수 있는 “디버깅” 기능을 제공함
    • 내가 작서한 코드 라인에 “중단점”을 설정하고 “디보그”모드로 프로그램을 실행하면, 프로그램이 중단점의 코드라인을 수행할 때 프로그램 흐름이 일시정지되며 변수들을 볼 수 있게 도와줌
    • 디버깅 = 중단점 일시정지 + 코드 라인단위 수행
    • 🤓 JDK 의 Jdb 기능을 통해서 실행중인 프로그램의 코드 실행을 따라다니며 볼 수 있음


5. Java 코드 해석하기

public class Main {
	public static void main(String[] args) {
		System.out.println("Hello world!");
	}
}
  • Java 프로젝트는 제일 먼저 클래스의 main 메서드를 실행시킴
  • public class Main {
    • 클래스 정의
    • public : 클래스 경로 외부에서 실행시킬 수 있다고 표시해주는 “접근 제어자”
      • 클래스 경로 외부에서 호출 못하도록 막는 “접근 제어자”는 private (그외 protected 도 있음)
    • class : 객체를 만드는 클래스 라고 선언
    • Main : 클래스 명
      • 파일명과 일치 시켜야 함 (다르면 알림문구가 뜸)
      • 그렇게 해야 Java 컴파일러가 바이트코드 변환했을때의 파일 확장명(.class )과 일치됨
  • public static void main(
    • main 메서드 정의
    • public : 외부에서 실행시킬 수 있다고 표시해주는 “접근 제어자”
    • static : Java 컴파일러가 바이트 코드로 변환할때 미리 정의되는 메서드 표기
      • 앱 실행시 한번만 정의되며 static 메서드 또는 변수(데이터) 끼리만 호출할 수 있음
    • void : 메서드의 응답값을 정의하는 곳인데 void 는 응답할 값이 없다는 정의
      • int 는 정수, char 는 문자, string 은 문자열 등…
  • (String[] args)
    • 메서드가 시작될때 넘겨받을 데이터들(변수들)
    • String[] : 문자열 여러개 데이터 타입
    • args : 문자열 여러개 데이터의 이름 (사용자가 정의한값 아무거나 써도됨)

BELATED ARTICLES

more