'개발/Java8'에 해당되는 글 4건

  1. 2021.06.08 #4 FunctionalInterface
  2. 2021.06.08 #3 Optional
  3. 2021.05.31 #2 final, 람다
  4. 2021.05.24 #1 Java8을 학습하는 이유

https://woowacourse.github.io/javable/post/2020-07-17-Functional-Interface/

 

Functional Interface란

Java8부터 함수형 프로그래밍을 지원한다. 함수를 일급객체처럼 다룰 수 있게 제공하는 Functional Interface에 대해 알아볼 것이다. Functional Interface란? 단 하나의 추상 메서드를 가지는 인터페이스. - J

woowacourse.github.io

https://codechacha.com/ko/java8-functional-interface/

 

Java8 - 함수형 인터페이스(Functional Interface) 이해하기

함수형 인터페이스는 1개의 추상 메소드를 갖고 있는 인터페이스를 말합니다. Single Abstract Method(SAM)라고 불리기도 합니다. 함수형 인터페이스를 사용하는 이유는 자바의 람다식은 함수형 인터페

codechacha.com

 

https://javaplant.tistory.com/32

 

JAVA8 Lambda 람다는 @FunctionalInterface의 구현체이다.

JAVA8 Lambda람다는 @FunctionalInterface의 구현체이다. JAVA7이 나온지 약 10년만에 JAVA8이 나왔다. JAVA8에서의 다양한 변화중 가장큰 변화는 Lambda표현식을 통한 Funtional Programming (함수형 프로그래밍..

javaplant.tistory.com

 

 

'개발 > Java8' 카테고리의 다른 글

#3 Optional  (0) 2021.06.08
#2 final, 람다  (0) 2021.05.31
#1 Java8을 학습하는 이유  (0) 2021.05.24
Posted by 커다란꼬꼬마

2021. 6. 8. 01:29 개발/Java8

#3 Optional

https://daddyprogrammer.org/post/1988/java-optional/

 

Java Optional 사용법 - 아빠프로그래머의 좌충우돌 개발하기!

Java8에서 도입된 Optional에 대하여 살펴보겠습니다. Optional class의 목적은 null 참조 대신 Optional value로 표현되는 형식의 솔루션을 제공하는 것입니다. 즉 이전 버전까지의 Java의 고질적인 문제였던

daddyprogrammer.org

 

http://homoefficio.github.io/2019/10/03/Java-Optional-%EB%B0%94%EB%A5%B4%EA%B2%8C-%EC%93%B0%EA%B8%B0/

 

Java Optional 바르게 쓰기

Java Optional 바르게 쓰기Brian Goetz는 스택오버플로우에서 Optional을 만든 의도에 대해 다음과 같이 말했다. … it was not to be a general purpose Maybe type, as much as many people would have liked us to do so. Our intention w

homoefficio.github.io

 

https://sungminhong.github.io/java/optional/

 

[JAVA] Optional을 필드에서 몰아내자!

글을 쓰게 된 이유 회사에서 코드리뷰를 하면서 Optional 사용법에 관한 논의가 있었습니다. :flushed: 기록을 위해 쓰면서도 혹시 도움이 되실 분이 있을까 해서 공개로 포스팅했습니다.

sungminhong.github.io

 

 

'개발 > Java8' 카테고리의 다른 글

#4 FunctionalInterface  (0) 2021.06.08
#2 final, 람다  (0) 2021.05.31
#1 Java8을 학습하는 이유  (0) 2021.05.24
Posted by 커다란꼬꼬마

2021. 5. 31. 00:52 개발/Java8

#2 final, 람다

람다 표현식에서 변수를 변경하는 작업은 스레드에 안전하지 않다.

 

final을 쓰면 side effect를 줄일수 있다.변경되지 않기때문에?

 

P. 107람다에서 참고하는 지역변수는 final로 선언되거나 실질적으로 final처럼 취급되어야한다.

 

해당 내용을 찾아보다가, 아래의 글을 보게 되었다.https://www.slipp.net/questions/278

 

anonymous inner class는 final 변수에만 접근해야 하는 이유는?

오늘 자바 8에 추가된 람다와 관련한 내용을 읽다가 다음과 같이 내용이 있어 궁금증이 생겼다. 람다 표현식에서 변수를 변경하는 작업은 스레드에 안전하지 않다. - 가장 빨리 만나는 자바8 28페

www.slipp.net

2014년에 나온 이야기인데, 토비님도 이야기를 하고있어서 신기했고, 단순하다고 생각했던 final 키워드에 대해서 여러가지 의미가 있음을 알게 되었다.

 

위의 글에 이해가 안되었던 부분은

디컴파일러를 이용해서 람다, final이 어떤 방식으로 구현되었는지 역추적하는 부분이었다.

 

나의 이해 정리

final 변수 -> 변경되지 않는다.

멀티 쓰레딩 환경에서 여러 쓰레드가 처리를 할때 변경되지 않는 값이라 안전하게 사용할수 있다.

side effect가 없다. (없다? 적다?)

 

실무에서 if문 대신 filter를 사용하자.

 

https://www.popit.kr/java8-stream%EC%9D%80-loop%EA%B0%80-%EC%95%84%EB%8B%88%EB%8B%A4/

 

Stream API 덕분에 데이터 처리 과정을 병렬화하면서 스레드와 락을 걱정할 필요가 없다.

 

부족함을 느껴서 재미있다.

 

'개발 > Java8' 카테고리의 다른 글

#4 FunctionalInterface  (0) 2021.06.08
#3 Optional  (0) 2021.06.08
#1 Java8을 학습하는 이유  (0) 2021.05.24
Posted by 커다란꼬꼬마

일을 하면서 stream을 사용하였고, 절차지향적인 언어를 stream을 사용해서 한줄로 작성된 코드를 읽기가 어색했다.

 

함수형 프로그래밍을 처음본것은 2017년쯤 Hadoop에서 데이터를 가져와서 spark, scala를 통해서 데이터를 가지고 놀때였던것 같다. 회사일에 대한 공부는 했지만, map, reduce를 써서, 데이터를 나눠서 동시에 처리하여 데이터 분석을 하였다. 그때는 http://www.postechx.kr/ko 에서 가입하여 강의도 듣고 그랬는데, 현재 들어가보니, 없어진것 같기도하고 MOOC로 변경된것 같기도 하다.

 

Java8을 이유는 회사일을 하면서 동시성을 제어해야하는 이슈가 있었다. 하나의 자원을 여러곳에서 사용하면서도 효율적으로 사용하는 것. Spring Boot와 Akka 라이브러리를 사용하여, Atomic 단위로 lock을 걸어 사용하는 부분도 있지만, 언어차원에서 해당 내용을 컨트롤 할수있다.(Akka에서 사용하는 동시성 제어와 Java8에서 사용하는 동시성 제어가 어느 레이어에서 차이점이 있고, 아니면 같은 역할을 하는지 좀더 공부후에 추후에 다뤄야겠다.)

 

또한, filter를 통해 if의 사용을 줄이려는 의도도 있다.

 

 

https://engineering.linecorp.com/ko/blog/functional-programing-language-and-line-game-cloud/

 

함수형 프로그래밍 언어에 대한 고찰 - LINE ENGINEERING

안녕하세요, LINE에서 게임 플랫폼을 개발하는 주니어 개발자 김부성, 이재호입니다. 저희는 LINE Game Cloud가 함수형 프로그래밍 언어 중 하나인 Clojure로 구현되어 있는 것을 보고 함수형 프로그래

engineering.linecorp.com

https://github.com/JKKorea/jkStudy/tree/master/java-8-study

 

JKKorea/jkStudy

Contribute to JKKorea/jkStudy development by creating an account on GitHub.

github.com

 

 

 

https://download.hanbit.co.kr/exam/2179/

'개발 > Java8' 카테고리의 다른 글

#4 FunctionalInterface  (0) 2021.06.08
#3 Optional  (0) 2021.06.08
#2 final, 람다  (0) 2021.05.31
Posted by 커다란꼬꼬마
이전버튼 1 이전버튼

블로그 이미지
커다란꼬꼬마

공지사항

Yesterday
Today
Total

달력

 « |  » 2024.5
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

최근에 올라온 글

최근에 달린 댓글

글 보관함