인프런 워밍업 클럽 스터디 BE 1주차 발자국

인프런 워밍업 클럽 스터디 BE 1주차 발자국

JDK, JER, JVM 알아보기

JVM(Java Virtual Machine)

자바 소스 코드 파일을 컴퓨터가 이해하고 실행하기 위해서는 0과1로 이루어진 코드로 컴파일해야 한다.

그런데 문제는 Windows, Mac, Linux와 같이 서로 다른 운영체제들은 이해하는 방식이 달라서 운영체제 마다 다르게 컴파일을 해줘야 한다.

그래서 자바는 JVM이라는 녀석이 운영체제에 맞게 컴파일을 해주는 역할을 한다.

JVM은 그루비, 스칼라, 코틀린 같은 다른 언어에도 사용된다.

JDK > JRE > JVM

JDK(Java Development Kit)는 자바 개발에 필요한 도구들을 모아놓은 패키지이고

JDK 안에 JRE가 포함되고 JRE 안에 JVM이 포함되는 구조이다.

JRE(Java Runtime Environment)는 자바 프로그램 실행에 필요한 라이브러리 파일들과

실행환경을 위한 JVM을 가지고 있다.

따라서 JDK를 설치하면 JRE와 JVM도 함께 설치되는 것이고

Java의 버전은 JDK의 버전이라고 말할 수 있다.

JDK의 종류

JDK에는 많은 버전과 종류가 있고 성능과 비용에 차이가 있다.

Oracle JDK는 Oracle에서 만든 JDK로 개인에게 무료이고 기업용은 유료이다.

Open JDK는 Oracle JDK와 비슷한 성능이지만 기업용도 무료이다.

Open JDK는 잘 몰랐는데 혹시나 상업용으로 자바 프로그램을 만든다면 Open JDK를 써야될 것 같다.

 

HTTP와 API

HTTP(HyperText Transfer Protocol)

두 개의 다른 컴퓨터인 클라이언트와 서버가 통신을 하기 위해서 만들어진 규칙으로

규칙에 맞게 요청과 응답을 보내면 된다.

HTTP 요청은 HTTP Method와 Path(경로)가 핵심이고

데이터를 전달하기 위한 방법으로 쿼리와 바디가 있다.

HTTP 응답의 핵심은 상태코드이다.

HTTP Method

HTTP 요청의 행위나 방법을 나타내는 부분

  • GET : 데이터 조회

  • POST : 데이터 추가, 저장

  • PUT : 데이터 수정

  • DELETE : 데이터 삭제

API(Application Programming Interface)

HTTP 규칙을 통해서 데이터를 주고 받을 때

특정 기능은 어떤 방식으로 요청하고 응답할 지를 결정하는데

이처럼 특정 기능을 수행하기 위한 정해진 약속을 API라고 한다.

예를 들면 어떤 메소드 그리고 어떤 경로로 요청을 보내고 어떤 데이터를 보내며 어떤 응답을 줄 지와 같은 약속을 말한다.

 

GET, POST API 개발

@RequestParam

Get 메서드로 요청을 보낼 때 쿼리에 들어있는 데이터를 받을 수 있다.

@GetMapping("/add")
public int add(@RequestParam int number1, @RequestParam int number2) {
	return number1 + number2;
}

DTO로 받기

쿼리의 파라미터들을 필드로 가지는 DTO를 만들어서 Controller 메서드의 매개변수로 받으면

여러 개의 파라미터를 한번에 받을 수도 있다.

Spring은 파라미터와 일치하는 필드를 가진 DTO에 매핑해서 객체로 만들어준다.

@GetMapping("/add")
public int add(AddRequest request) {
	return request.getNumber1() + request.getNumber2();
}

@RequestBody

POST 메소드는 바디에 데이터를 넣어서 요청을 보내는데

이 때 바디에 들어있는 데이터를 객체로 만들어서 받기 위한 어노테이션

@PostMapping("/multiply")
public int multiply(@RequestBody Multiply request) {
	return request.getNumber1() * request.getNumber2();
}

 

MySQL 사용하기

도커를 이용해서 설치하기

Mysql을 직접 설치하면 설정에 문제가 생겼을 때 MySQL을 삭제했다 다시 설치해야 되고

도커를 이용하면 여러 개의 DB를 사용하게 될 경우 각각 컨테이너로 띄울 수 있어서

도커를 이용하여 MySQL 설치해보았다.

  1. 먼저 도커를 설치

  2. MySQL 이미지 다운로드

    1. docker pull mysql

  3. MySQL 컨테이너 실행

    1. docker run --name <컨테이너명> -e MYSQL_ROOT_PASSWORD=<password> -d -p 3306:3306 mysql:latest

    2. 도커 데스크탑이 있다면 GUI를 이용해 실행할 수 있다.

  4. 컨테이너 접속

    1. docker exec -it <컨테이너명> bash

  5. Mysql 접속

    1. mysql -u root -p

 

좋은 코드(Clean Code)는 왜 중요한가?

코드는 요구사항을 표현하는 언어

현업에서 개발자는 수많은 코드를 읽어야 한다.

그렇기 때문에 코드만 보고도 의미를 파악할 수 있는 것이 중요하다.

프로그램이 커질 때 안좋은 코드가 쌓이면 점점 복잡해지고 그로 인해 생산성도 떨어진다.

하나의 함수는 하나의 기능만 수행하는 것이 좋다.

많은 기능을 가지고 있으면 코드가 길어지기 때문에 읽고 이해하기 어렵다.

여러 명이 작업하고 수정하기 어렵고 테스트하기 힘들다.

하나의 함수는 하나의 기능을 수행하도록 분리하는 것이 좋다.

 

과제

어노테이션이란?

  • 소스 코드에 영향을 주지 않고 프로그램에 정보를 제공해주는 역할

  • @ 를 붙여서 사용한다.

  • JDK 1.5버전 부터 사용 가능

  • @SpringBootApplication, @RestController, @GetMapping...

람다식

  • 익명 클래스를 간결한 함수식으로 표현한 것

  • 함수형 프로그래밍을 사용하기 위해 추가되었다.

  • 함수형 인터페이스와 함께 사용된다.

interface Add {
		int add(int x, int y);
}

// 익명 클래스
Add a = new Add() {
		public int add(int x, int y) {
				return x + y;
		}
};

// 람다식
Add a = (x, y) -> {return x + y;};

 

회고

공부에 대한 의욕이 많이 떨어지고 있는 시기에 공부 의욕을 올리고 자극을 받기 위해서 이번 주부터 인프런 워밍업 클럽 스터디를 시작했다.

처음 강의를 수강할 때는 알고있는 내용이라 생각되는 강의 내용이 많아서 빠르게 강의를 듣고 과제를 진행하는데 역시 쉽게 공부 의욕이 올라오지는 않았다.

그래도 강의를 듣고 따라서 API도 만들어보니 예전 기억들이 떠오르면서 3일차부터 조금씩 집중력이 오르기 시작했다.

다시 공부 의욕도 올라오고 하루에 시간을 잘 분배해서 계획을 세우고 계획에 맞게 생활을 시작할 수 있게 되었다.

초반에는 집중력이 떨어지는 시간이 많았지만 다시 조금씩 집중력을 찾기 시작했으니 다음 주에는 더 많은 시간을 공부에 투자하고 집중력을 끌어올릴 수 있도록 해야겠다.

댓글을 작성해보세요.