개요

이번 주차와 다음 주차에는 백엔드 개발에 필요한 기초 내용들을 이론 위주로 다룰 예정입니다. 여러분들 아는 내용도 많이 나올거라 편하게 읽어보시면 좋을 것 같습니다.

Java에서는 Java 8 버전 이후 새롭게 등장한 문법들에 대해 살펴볼 예정입니다. 이는 추후에 자주 등장하기 때문에 한번쯤은 봐둘 필요가 있습니다.

HTTP에서는 웹 서버와 웹 클라이언트가 통신하는 규약과 그 구성요소에 대해서 알아보겠습니다.

WEB에서는 웹서버와 웹 애플리케이션 서버의 차이를 알아보겠습니다. ****

JAVA

Java 로 개발을 많이 안해보신 분들에게는 생소할 수 있는 JAVA 문법을 설명합니다.

Lambda 표현식

<aside> 📖 람다 함수는 프로그래밍 언어에서 사용되는 개념으로 익명 함수(Anonymous functions)를 지칭하는 용어입니다.

현재 사용되고 있는 람다의 근간은 수학과 기초 컴퓨터과학 분야에서의 람다 대수이다. 람다 대수는 간단히 말하자면 수학에서 사용하는 함수를 보다 단순하게 표현하는 방법입니다.

</aside>

람다 함수는 파고 들어가면 매우매우 어려워서 저도 잘 모릅니다. 그럼에도 불구하고 설명하는 이유는 각종 레퍼런스에서 자주 사용되기 때문에 레퍼런스를 참고하려면 람다식을 이해해야할 필요가 있기 때문입니다.

[JAVA] 람다식(Lambda)의 개념 및 사용법

Java 8 함수형 인터페이스 (Functional Interface)

람다의 개념과 사용방식은 저보다 더 잘 설명해줄 수 있는 레퍼런스가 많습니다. 근본적인 동작원리를 이해하는 것도 중요하지만, 이 스터디에서는 동작원리보다는 코드를 보고 이해하는데에 초점을 맞추겠습니다.

람다식 변환

//전통적인 형태의 함수
ReturnType MethodName (Type Name1, ...) {
	states...
  return something;
}

//함수를 람다식으로 만들면..
//반환 값과 메서드 명을 생략
~~ReturnType MethodName~~ (Type Name1, ...) -> {
	states...
  return something;
}

//만약 states가 return문 한 줄 이라면
// { } 생략 가능
(Type Name1,...) -> something

//매개변수가 추론 가능하다면
//매개변수의 타입 생략 가능
(Name1,Name2,...) -> something

//매개변수가 하나뿐인 경우
// ( ) 생략 가능
Name -> something

예시코드

//람다식을 사용하지 않은 경우
List<String> list = Arrays.asList("abc","aaa","bbb","ddd","aaa");
Collections.sort(list, new Comparator<String>() {
		public int compare(String s1, String s2) {
      return s2.compareTo(s1);
    }
  });

//람다식을 사용하는 경우
List<String> list = Arrays.asList("abc","aaa","bbb","ddd","aaa");
Collections.sort(list,(s1,s2)-> s2.compareTo(s1));

람다식을 사용하지 않는 경우, 컬렉션을 정렬하는 메서드 sort의 두번째 인자를 제공하기 위해서 Comparator 클래스를 구현하여 제공해야합니다. 이 경우 Comparator의 구현체는 이 곳에서만 사용되고 별도로 변수로 사용되지 않는 ‘익명 클래스’입니다. 람다식은 익명 클래스를 더 적은 코드로 구현할 수 있게 합니다.