Hyun's Wonderwall

[백엔드] 스터디 1주차 - Java (1) 이론 본문

Study/Java, Spring

[백엔드] 스터디 1주차 - Java (1) 이론

Hyun_! 2023. 3. 27. 15:52

웹 개발 스터디를 시작했다! 나는 백엔드 파트로 자바와 스프링을 공부하게 되었다.

1주차(2023.03.20~2023.03.27) 과제: 자바 리뷰 1/3 진행하기!

 

공부에 사용한 자료들


[Chapter 01] Java 프로그래밍 주요 개념 (이론)

* 대표적인 자바 개발 툴: 이클립스, IntelliJ

 

□ 프로그램 언어의 종류 : 저급 언어(기계어, 어셈블리어), 고급 언어(C, Java 등)

[컴퓨터로 프로그램 개발 시]
: 사람이 고급 프로그래밍 언어로 소스 파일 작성 컴파일러가 컴퓨터가 이해할 수 있는 기계어로 변환 ➡ 프로그램 실행

[Java로 프로그램 개발 시]
:
사람이 Java로 소스 파일(*.java) 작성  컴파일러(javac.exe)바이트 코드 파일(.class) 생성 JVM 구동 명령어(java.exe)로 JVM 실행 바이트 코드를 기계어(바이너리 코드)로 변환 => 실행

 

□ JVM(Java Virtual Machine, 자바 가상 기계): 자바 바이트 코드를 실행하는 자바 가상 기계(소프트웨어). 하드웨어의 영향을 받지 않고 어플리케이션 개발 가능.

*장점: 하드웨어나 운영체제를 가리지 않고 어디서나 동일한 프로그램을 실행

*단점: 최적화된 바이너리에 비해 속도가 느릴 수 있고, 각 플랫폼에서 동작하는 가상머신의 개발이 필요.(Windows용 JVM, Mac용의 JVM을 따로 만들어야 한다는 뜻)

**같이 볼 링크: JVM란? 자바의 실행 원리 알아보기 https://codingwell.tistory.com/66

 

□ 자바의 플랫폼 독립성, WORA(Write Once Run Anywhere)

- 한번 작성된 코드는 모든 플랫폼에서 바로 실행. C/C++ 등 기존 언어가 가진 플랫폼 종속성 극복(OS, H/W에 상관없이 자바 프로그램이 동일하게 실행). 네트워크에 연결된 어느 클라이언트에서나 실행 (웹 브라우저, 분산 환경 지원)

- WORA를 가능하게 하는 자바의 특징 : 바이트 코드(byte code, 자바 소스를 컴파일한 목적 코드), JVM이 설치된 모든 컴퓨터에서 실행됨

 

□ 자바 플랫폼

JRE(Java Runtime Environment) : 자바 프로그램 실행에 필요한 구성 요소
ㄴ JVM + 표준 클래스 라이브러리

JDK(Java Development Kit) : 자바 프로그램 개발 시 필요한 툴킷

ㄴ JRE + 개발 도구
API :
자바 응용 프로그램 개발에 사용하는 라이브러리 (
주요한 기능들을 미리 구현한 클래스 라이브러리의 집합)

 

□ Java의 특징

  • 객체 지향 언어 (Objected Oriented Programming)
    - 부품 객체를 먼저 만들고, 이것들을 조합해 전체 프로그램을 완성하는 기법. 캡슐화, 상속, 다형성 기능을 완벽하게 지원.
    - 완성된 프로그램은 부품 객체들의 연결로 이루어져있다. 객체간의 관계는 상속/소유/사용. 부품들은 언제든지 교체 가능.
  • 함수적 스타일 코딩 지원 - 람다식(Lambda Expressions)
  • 메모리를 자동 관리(가비지 컬렉션garbage collection) - 사용하지 않는 객체를 자동으로 메모리에서 제거.
  • 멀티 스레드 쉽게 구현 가능
  • 동적 로딩(Dynamic Loading) 지원 - 미리 객체를 만들어 놓지 않고 필요한 시점에 동적 로딩해 객체 생성

 

□ 자바 프로그래밍에서 기억할 것

  • 플랫폼 독립성 - 자바 프로그램은 플랫폼에 상관없이 어디서든지 실행.
  • 클래스로 캡슐화 - 클래스 내에 모든 변수(필수), 함수(메소드) 구현해야 함. 클래스 안에서 새로운 클래스 (내부 클래스) 작성 가능.
  • 소스(.java)와 클래스(.class) 파일 - 팡 소스 파일의 이름과 public으로 선언된 클래스 이름은 같아야 
  • 실행 코드 배포 - 실행 코드는 1개이상의 class 파일로 구성. 자바 응용프로그램의 실행은 main() 메소드에서 시작. 하나의 클래스 파일에 여러개의 main() 메소드가 있을 수 없음.
  • 패키지 - 관련된 여러 클래스를 패키지로 묶어 관리. 패키지는 폴더 개념.