[JAVA] 1장 자바 시작하기

SUbbb·2021년 9월 10일
0

Java 정리

목록 보기
1/4
post-thumbnail

"Do it! 자바 완전 정복" 책을 바탕으로 intellij와 함께 하는 JAVA 공부

1. 프로그래밍 언어와 자바

1. 프로그래밍 언어

고급 언어

  • 인간이 이해하기 쉬운 문장을 사용해 컴퓨터가 수행해야 할 작업을 정의한 언어
  • ex. C, C++, Java 등

기계어

  • 2진 데이터로 구성되어, 컴퓨터가 직접 알아들을 수 있는 언어

어셈블리어

  • 기계어와 1대1로 대응되는 언어
  • 기계어와 좀 더 가깝다고 생각

고급 언어를 사용해 컴퓨터에게 명령을 전달하려면 반드시 번역이라는 과정이 필요하고, 번역을 수행하는 것이 컴파일러

모든 컴퓨터는 똑같은 기계어를 사용할까 ?
기계어: 컴퓨터가 이해할 수 있는 언어
윈도우 컴퓨터와 맥 컴퓨터는 서로 다른 기계어를 사용

2. 자바의 역사

자바의 전신은 1991년 가전 제품의 Settop용 프로그램으로 만든 오크(Oak)

이후 개발 방향이 바뀌면서 자바의 시작

지속적인 업그레이드를 거쳤는데, 그 중 중요한 업그레이드 버전은 '자바 8'

  • 람다식(lambda expression), 인터페이스 내의 정적(static) 메서드, 디폴트(default) 메서드 등이 추가

3. 자바의 플랫폼 독립성

자바는

  • 플랫폼 독립성
  • 객체지향 언어
  • 함수형 코딩 지원
  • 분산 처리 지원
  • 멀티 쓰레드 지원

등 여러 가지 특징을 지닌 프로그래밍 언어

플랫폼 종속성, 플랫폼 독립성이란 ?

자바의 주된 특징인 플랫폼 독립성에 대해 알기 전에,
먼저 그와 반대되는 개념인 플랫폼 종속성의 대표적인 예로는 윈도우, 맥, 리눅스 운영체제의 대표적인 실행 파일(.exe, .app, .sh)이 있다.

실행파일은 일종의 '기계어 집합'

  • 서로 다른 플랫폼을 사용하는 컴퓨터는 서로 다른 기계어를 사용하기에, 서로의 실행파일을 실행할 수 없다.

이와 같이 하나의 실행 파일은 하나의 특정 플랫폼에서만 실행할 수 있는 특징을 플랫폼 종속성이라 한다.

그럼 이와 반대되는 플랫폼 독립성이란
하나의 프로그램이 모든 플랫폼에서 실행 가능하다는 것이다.

한 가지 의문점은,
모든 플랫폼은 각각의 기계어를 사용한다 즉 자바의 실행 파일인 .class 또한 특정 플랫폼만 이해할 수 있는 기계어의 집합인셈이다.
이때, 자바 가상 머신(JVM: Java Virtual Machine)이 사용

플랫폼마다 가상 머신의 모양이 다르기에 각 플랫폼마다의 가상 머신을 설치
이를 통해 자바의 플랫폼 독립성이 제공

4. 자바 개발 도구와 자바 실행 환경

자바 개발 도구란 ?

JDK

  • Java Development Kit은 자바를 이용해 프로그램을 개발하는데 필요한 도구를 모아 둔 집합

JRE

  • Java Runtime Environment는 완성된 프로그램을 실행하는데 필요한 환경

JDK를 가져와 프로그램을 완성하고 이를 JRE 위에서 실행

2. 자바 개발 환경

Pass

3. 자바 프로젝트

1. 자바 프로젝트 생성 및 실행하기

Pass

자바는 객체지향형 언어

  • 클래스를 생성하면 소스 파일(.java)이 생성
  • 따라서, 클래스를 추가한다는 의미는 자바 소스 파일 작성의 시작

자바 소스 파일을 컴파일

  • 자바 가상 머신에서 실행할 수 있는 바이트 코드(.class)가 생성

4. 자바 프로그램의 기본 구조

1. 자바 소스 코드의 실행 과정

  • 소스 파일(.java)을 작성
  • 컴파일 수행
  • 바이트 코드(.class) 생성
  • 바이트 코드 실행
    • 이때 자바 가상 머신은 운영체제에서 메모리를 할당받아 자바 프로그램 실행

자바 가상 머신이 할당한 메모리 영역은 ?
자바 가상 머신은 메모리의 효율적인 관리를 위해 메모리를
메서드(method) 영역, 스택(stack) 영역, 힙(heap) 영역으로 나눔.
메서드 영역은 클래스(class) 영역, 정젹(static) 영역, 상수(final) 영역이라고도 불림.
바이트 코드는 메모리의 메서드 영역에 로딩되며, 이후 클래스 내에 포함되어 있는 main() 메서드를 실행하는 것이 자바 가상 머신의 역할

2. 소스 코드의 기본 구조 분석

패키지 선언부

패키지를 지정하면 주석을 제외한 첫 줄에 반드시 패키지의 선언이 와야 한다.
하지만, 패키지를 지정하지 않은 경우 즉 디폴트 패키지를 사용할 때는 패키지 선언이 생략

클래스 선언부

public

  • 이 클래스를 다른 패키지에서도 사용할 수 있다는 의미를 가진 접근 지정자
  • 1개의 소스 파일 - 여러 개의 클래스 존재 가능
    • 이때 최대 1개의 클래스만 public을 포함
    • 해당 클래스가 소스 파일명을 결정

class

  • 클래스명은 반드시 소스 파일명과 일치
  • 클래스의 내부에 포함될 수 잇는 내부 구성 요소로는 필드(field), 메서드(method), 생성자(constructor), 이너 클래스(inner class)

3. 소스 파일 컴파일과 바이트 코드 생성

바이트 코드

자바의 바이트 코드(.class)클래스당 하나씩 생성

  • 1개의 파일에 4개의 클래스가 정의된 경우, 4개의 바이트 코드가 생성
  • 이너 클래스는 반드시 자신을 감싸고 있는 클래스부터 표현
    • 아우터 클래스$이너 클래스.class

4. 콘솔 출력 메서드와 문자열 출력

문자열 표현하기

문자열

  • String 자료형으로 저장
  • 큰따옴표("")안에 표기

줄 바꾸면서 출력하기 - System.out.println()

1줄로 출력하기 - System.out.print()

형식대로 출력하기 - System.out.printf()

profile
배우고 정리하고 공유하기

0개의 댓글