학습목표

  • 자바의 특징을 이해하고 기본적인 개발 환경을 설정할 수 있다.
  • 타입, 변수, 상수 형 변환 등을 이해하고 활용할 수 있다.
  • 연산자, 입/출력과 제어문(조건문, 반복문)을 이해하고 활용할 수 있다.
  • 배열을 이해하고 활용할 수 있다.
  • 자바의 기초 문법을 활용하여 계산기를 구현할 수 있다.
  • 자바의 4가지 특징을 이해할 수 있다.
  • JVM의 기능과 필요성을 이해할 수 있다.
  • main 메서드가 무엇인지 이해한다.

자바의 특징

  1. 운영체제에 독립적
  2. 객체 지향 언어(Object Oriented Programming, OOP)
  3. 함수형 프로그래밍 지원
  4. 자동 메모리 관리(Garbage Collection)

JVM과 JDK

자바는 컴파일러(Compiler)를 통해 기계어(Machine Language)로 변환되는 언어이다.

컴파일이란 특정 프로그래밍 언어를 기계가 이해할 수 있는 언어로 옮기는 번역 과정이다.

자바가 운영체제에 독립적인 것은 JVM이 있기 때문에 가능합니다. JVM은 자바 코드로 작성한 프로그램을 해석해 실행하는 별도의 프로그램입니다. 즉, 프로그램을 실행하는 프로그램입니다. 자바는 JVM을 거치기 때문에 C나 C++에 비해 속도는 느린 편입니다. 하지만 JVM 내부의 최적화된 JIT 컴파일러를 통해 속도를 크게 개선해나가고 있습니다.

JDK 8 vs 11 vs 17

  • 각 JDK 버전에 대한 관리 및 지원이 얼마나 오래 동안 제공되는지를 알려 줍니다. 많은 자바 버전들 중에서 기업들은 보통 장기적인 지원이 보장되는 LTS 버전을 주로 사용

  • JDK 11을 사용하는 이유?
    JDK 뿐만 아니라, 개발과 관련된 툴의 버전을 선택할 때에 우선적으로 고려해야 하는 가장 중요한 요소는 안정성입니다. 만약에 웹 서버가 안정적으로 동작하지 못한다면 회사가 제공하는 서비스를 사용자들이 이용할 수 없게 됩니다. 또한, 치명적인 에러가 발생하여 데이터가 소실되거나 엉키게 되면 복구하는 데에 많은 시간과 비용이 들어갑니다. 이와 같은 상황은 회사의 수익 감소로 직결되므로, 웹 서버는 반드시 안정적으로 동작할 수 있어야 합니다.

    💡 개발도구 버전의 안정성을 판단하는 기준
    1. 해당 도구에 대해 장기적인 유지 및 보수가 보장되는가?
    : LTS? Long Term Support의 약자로, 개발 도구에 대한 장기적인 관리와 지원이 제공된다는 의미입니다. 따라서, 일반적으로 엔터프라이즈용 애플리케이션을 개발할 때에는 개발 도구에 LTS라는 표기가 명시된 버전을 주로 사용합니다.

    2. 해당 도구가 많은 사람들에 의해 오랫동안 사용되어 왔는가?
    : 해당 개발 도구가 얼마나 많은 사람들이 얼마나 오랫동안 사용해왔는지도 버전 안정성에 대한 중요한 지표로 사용할 수 있습니다.


public static void main(String[] args) { … }

먼저, A main(B C) { D }는 메서드를 정의하는 문법입니다.
메서드란, 어떤 기능을 하는 코드를 묶음으로 묶은 것을 의미합니다. 즉, 메서드는 어떠한 기능을 수행하기 위한 일련의 코드들의 집합체입니다.

void

void는 반환 타입을 의미합니다.
void는 main메소드 실행 후 return할 값이 없다는 뜻이며 이 외 int, String, double등 main메서드의 데이터타입이 들어갈 수 있다.

(String[] args)

외부에서 데이터를 받아 메서드 내부로 전달되어진 값을 의미한다.
이 값은 '변수'라는 것에 저장(할당)하여야만 사용할 수 있다. 이처럼 외부로부터 전달받은 값을 저장하고있는 변수를 매개변수라고 한다.

즉, 매개변수는 메서드 외부와 내부로 전달한 값을 할당받아 저장함으로써, 메서드 내부에서 사용할 수 있게 해준다.


메서드 호출

add(1, 2);

main 메서드

  • main 메서드 내부의 코드부터 코드의 흐름이 시작됩니다. 이처럼 프로그램이 실행될 때 가장 먼저 실행되는 메서드 또는 함수를 진입점 함수라고 합니다.

  • main 메서드의 구조를 파악할 수 있습니다.

public static void main(String[] args) {

}

void : “정확히 무엇인지는 모르겠지만, 반환 타입을 의미하는구나!”
main : “메서드의 이름이 main이구나!”
String[] : “정확히 무엇인지는 모르겠지만 매개변수의 타입이 String[] 타입이구나!”
args : “입력 데이터로 들어오는 값을 args라는 이름의 매개변수에 할당하는구나!”
“그리고 중괄호 블록 {} 안에 코드를 작성하면 되는구나!”

profile
기억을 위한 기록 :>

0개의 댓글