Java 프로그래밍 기초

2025. 8. 7. 16:37·백엔드/spring

이 글은 알파코에서 진행 중인 [신한투자증권] 프로디지털아카데미 6기 과정 중 백엔드 과목의 김송아 강사님의 강의를 기반으로 작성되었습니다

 

MVC란?

controller

비즈니스 로직을 처리해야되는 부분을 구현해둔 곳

  • model과 view 사이 매개체

model

예를들어 회원 과 같이 서비스에서 쓰는 객체의 요소를 정리해둔 것?

  • 데이터와 관련된 연관 처리/ 연산

view

  • 화면에 나오는 부분들을 처리하는 곳

롸면 사용자와 가까운 위치

 

 

GIT이란?

내 컴퓨터 버전 관리 프로그램

깃허브랑 소통하는 역할

 

 

github

공용 컴퓨터에서 버전 관리 프로그램

브랜치관리가 중요

  • 협업할 때 쓸 수 있는 명령어?
  • 진짜 회사에서는? 다른 시스템을 사내에 구축해서 씀

 

 

 

빌드란?

소스코드를 실행할 수 있게 하는 모든 프로세스

  • 인터프리트(동시통역): 코드를 한줄한줄 번역
  • 컴파일(통번역): 파일을 통째로 번역

 

OS

프로그램

운영체제

커널 : 위 두개는 소프트웨어인데 둘이 연결될 수 있게 해주는 것

하드웨어

 

 

JVM

커널 역할처럼 os 신경쓰지 않고 어떤 os에서든 돌아갈 수 있게 해주는 가상황경

자바소스코드 → 컴퓨터가 해석할 수 있도록 자바 컴파일러가 컴파일링→ 자바 바이트 코드

클래스로더는 클래스를 로딩하고 Linking을 통해 사용할 준비를 한 후 초기화를 해준다. 그리고 인터프리터가 코드를 한줄씩 번역해준다.

이때 가비지 콜렉터는 실행환경 옆에서 불필요하게 사용되는 메모리 정리해줌

 

 

라이브러리

다른사람이 만들어놓은 코드를 가져다 쓰는 것

 

 

 

프레임워크

정해진 틀에 맞춰서 따르면 동작하는 것

문제를 해결하기 위한 구조

중간에 있는 핵심을 무조건 써야함

spring

자바 개발을 하면서 불편했던 걸 도와주는 프레임워크

스프링부트

스프링을 쉽게 쓸 수 있게 해주는 스프링 진화 버전

빌드 도구

빌드를 도와주는 도구

Ant : 느림

maven: 좀 더 빨라짐, 명령하는 게 복잡하다는 단점

gradle : 더 빠르고 명령이 쉬워짐

요즘 IDE 자체에서 빌드도구를 가지고 있기도 함

JDK vs JRE

jdk : 자바 개발키트

jre: 자바 실행 환경

자바 개발자가 필요한건? jdk

자바로 만든 게임 유저가 필요한건? jre

하나의 컴퓨터에 여러개의 jdk 깔 수 있다? o

둘 중 하나는 다른 하나에 포함이다? x

 

 

클래스

클래스는 사용설명서처럼 객체를 만들 수 있는게 적힌 것

구성요소: 메소드, 필드, 생성자

실행용 클리스: main 메소드를 가지는 클래스

라이브러리용 클래스: main을 가지지 않는 클래스 = 객체화가 되는 것들

객체지향 vs 절차지향

우선순위에 따른 차이이지 하나를 무시하지는 않음

객체지향

객체를 미리 선언해놓은 후 그다음 순서를 생각함 객체가 우선순위 높음 / 객체단위로 프로그앰이 굴러가는 것

                 ex) 자동차 핸드폰 나 에어팟 키보드

세상을 이루는 대부분의 것들이 객체라서 객체지향이 생겨나게 됨

 

절차지향

 절차를 먼저 얘기하는 것 절차가 우선적인 것 / 정해진 절차 순서대로 실행되는 프로그램

 

 

 

GUI ↔ CLI

GUI: windows, mac, ios, android

CLI: 텍스트 명령어로 일을 시키는 것

  • shell: 껍데기 CLI의 대표적인 예시
  • ex) window powershell, cmd, mac terminal
  • bash: Shell 의 진화버전 ex) git bash

cf) 서버 리눅스 ..→ CLI써야함

 

 

 

생성자

클래스를 객체로 만들어주는 것

생성자는 객체가 살아있는 동안 언제든 호출할 수 없다. 생성될때만 호출 가능

기본생성자는 생략할 수 있다.

생성자를 호출할 때 메모리에 객체가 올라간다.

소멸자가 있다. ex) finalize 근데 안씀

cf) 생성자는 상속이 될까?

 

초기화

 

메모리에 올린다. = 사용할 준비를 마쳤다.

기본형은 변수의 메모리 공간에 값 자체가 할당되는 것이며, 참조형은 변수의 메모리 공간에 해당 값이 저장된 주소가 저장된다.

 

 

 

메모리

static

가비지컬렉터가 청소하지 않는 구역, 컴파일 시점에 셋팅하는 구역, 코드가 기계어로 변환돼서 그대로 올라가는 구역

  1. JVM이 실행될 때 Class 가 로딩될 때 생성.
  2. Class의 정보, Static 변수(클래스 변수), 생성자(Constructor), 메소드(Method)와 같은 것들을 저장한다.
  3. Static 영역에 있는 것은 어디서든 접근 가능 하다.
  4. JVM이 종료 시(프로그램이 종료 시) 메모리에서 해제 된다. 즉 프로그램이 종료되기 전까진 메모리 상에 존재하게된다. 그렇기 때문에 어디서든 접근이 가능한 것이며, 무분별 하게 사용될 경우 메모리 부족 현상이 발생할 수 있다.

heap

참조형 데이터 객체의 실제 데이터가 저장되는 공간이다. Stack 영역에서 실제데이터가 존재하는 Heap 영역의 참조값을 가지고 있다.

  1. new 를 사용해 객체를 생성할 때 저장된다.
  2. 참조형 데이터 타입이 저장된다. (String, 배열(array), enum, class, interface), Object
  3. Heap 영역의 데이터들을 가르키는 Reference(참조 주소)는 Stack영역에 적재된다.Reference를 통해서만 Heap 영역의 데이터들에 접근, 핸들링 할 수 있다.
  4. 호출이 종료되도 삭제되지 않는다. -> GC(가비지 컬렉터)에 의해 메모리에서 해제된다.
  5. 쓰레드가 몇개가 존재하든, 단 하나의 영역만 존재한다. (Stack 영역의 경우 쓰레드 별로 1개씩 생성된다.)

stack

  1. 기본 자료형(원시 자료형, Primitive type), 지역변수, 매개변수가 저장되는 메모리.(int, double, boolean, byte)
  2. 메서드 내부의 기본자료형에 해당하는 변수 적재.
  3. *Heap 영역에 생성된 데이터의 참조값이 할당됨. -> 그림 : Heap, Stack 저장되는부분 참고.
  4. 메소드가 호출될 때 메모리에 할당, 메서드 종료시 메모리에서 삭제됨.
  5. 자료구조 Stack의 구조이다, LIFO(Last In First Out)
  6. 각 Thread 마다 자신만의 Stack 을 가진다. (1:1) - (Thread : Stack) Thread는 내부적으로 Static, Heap, Stack 영역을 가진다. Thread는 다른 Thread에 접근 할 수 없지만, static, Heap 영역을 공유하여 사용 가능.

'백엔드 > spring' 카테고리의 다른 글

Java 프로그래밍 기초2  (4) 2025.08.08
asserThat 사용 안됨 문제 해결 (import해도 안되는 경우)  (0) 2025.03.30
[Spring] java.lang.NoClassDefFoundError: org.springframework.core.NestedIOException 해결  (2) 2025.01.22
[Intelli J 에러 해결] Unknown host 'root'.Please ensure the host name is correct. If you are behind an HTTP proxy, please configure the proxy settings either in IDE or Gradle.  (1) 2024.12.10
[spring] intellij 로 새 프로젝트 시작시 Unknown host 'root'.Please ensure the host name is correct. If you are behind an HTTP proxy, please configure the proxy settings either in IDE or Gradle 오류 문구 해결  (0) 2024.07.31
'백엔드/spring' 카테고리의 다른 글
  • Java 프로그래밍 기초2
  • asserThat 사용 안됨 문제 해결 (import해도 안되는 경우)
  • [Spring] java.lang.NoClassDefFoundError: org.springframework.core.NestedIOException 해결
  • [Intelli J 에러 해결] Unknown host 'root'.Please ensure the host name is correct. If you are behind an HTTP proxy, please configure the proxy settings either in IDE or Gradle.
hiwon
hiwon
천천히 굴러가는 코딩일기
  • hiwon
    하이원의 코딩 일기
    hiwon
  • 전체
    오늘
    어제
    • 분류 전체보기 (83)
      • 프론트엔드 (0)
        • react (0)
      • 백엔드 (13)
        • node.js (1)
        • spring (6)
      • 코딩테스트 (57)
        • 백준 (41)
        • 프로그래머스 (15)
      • 프로디지털아카데미 (9)
        • 클라우드 (1)
        • JavaScript (1)
      • github (1)
      • AWS (2)
      • Infra (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    백준
    깃허브
    다익스트라
    백트래킹
    EC2
    알고리즘
    AWS
    그리디
    알파코
    UnionFind
    python
    프디아
    신한투자증권
    프로디지털아카데미
    코딩테스트
    bastion host
    프로그래머스
    코테
    github
    백엔드
    파이썬
    BFS
    spring
    Java
    IT기획
    K디지털트레이닝
    kdt교육
    투포인터
    MSA
    알파코캠퍼스
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
hiwon
Java 프로그래밍 기초
상단으로

티스토리툴바