데브콘 활동 후기

[Review] 2024-05-11 K-DEVCON DEAJEON 스터디 후기

dev-jonghoonpark 2024. 5. 13. 09:01
📢 notice.

K-DEVCON Daejeon 브랜치는 대전, 세종을 중심으로 운영 중인 개발자 커뮤니티이며 온라인으로 IT 지식과 개발에 관련된 토론을 나누고,
오프라인 정기 스터디 모임(격주 토요일, 유료)이 진행되고 있습니다. IT업계에 종사하고 있거나 IT를 공부하고 있다면 누구나 함께할 수 있습니다. 자세한 내용은 아래 링크를 참고해 주세요.


K-DEVCON Daejeon
K-DEVCON Daejeon 정기 스터디 모임 신청 문의

 

안녕하세요 K-DEVCON(k-devcon.com) 입니다.

 

지난 5월 11일(토) K-DEVCON 대전 챕터에서는 16번째 오프라인 스터디가 진행되었습니다.

 

이번에 진행된 내용은 다음과 같았습니다.

 

종훈님
객체지향에 대해서 알아보고, 자바에서는 어떻게 사용할 수 있는지에 대해서 알아봅니다.
참고 자료 : 자바의 정석 (ch. 6) , 객체지향의 사실과 오해

영록님 
TCP는 어떻게 순서를 보장할까?

정환님
Java 버전별 주요 변경점과 OpenJDK 와 OracleJDK 의 차이

 

K-DEVCON은 스터디 회원들의 자유로운 발표를 권장하고 있습니다.

 


객체지향 2편

이번 4월 부터 데브콘 대전에서는 자바 스터디를 진행하게 되었습니다. (종훈님 리드)

먼저 본격적으로 진행하기에 앞서 다양한 분들이 스터디에 참여하고 있기 때문에

자바를 모르는 분들도 참여하실 수 있도록

자바의 정석 책으로 자바의 기초부터 함께 스터디를 진행하고 있습니다.

 

막상 발표를 준비하려다 보면 막상 어떻게 설명해야 할지 막연할때가 있습니다.

느낌으로는 알지만, 혹은 알고있다고 생각하지만, 정확하게 알지 못하고 있기 때문이라고 생각됩니다.

이번 시간을 통해서 다시 한 번 개념을 정립할 수 있는 시간이 되기를 기대하고 있습니다.

 

 

오늘은 상속, 오버라이딩, 패키지, 제어자, 다형성, 추상클래스, 인터페이스 에 대한 부분을 다뤄보았습니다.

 

이번시간에도 본격적으로 시작하기에 앞서 왜 객체지향을 쓰는 것인지에 대한 부분을 먼저 설명하고 진행을 하였습니다. 결국 추상화를 통해 복잡성을 이해하기 쉬운 수준으로 단순화하기 위한 것이라는 점을 이야기 드리면서 시작하였습니다.

상속이라는 말은 참 어려운 단어인데요. 부모 클래스의 특성과 기능을 물려받기 때문에 상속이라는 표현을 사용하였습니다. 조금 더 쉬운 단어로 생각해보자면 일반화 하는 과정이라고 생각해볼 수 있겠습니다.

 

오버로딩과 오버라이딩은 단어가 비슷해서 종종 헷갈리는 경우가 있습니다. 그래서 지난 시간에 배운 오버로딩을 리뷰하면서 그 차이점을 다시 한 번 짚어주고 넘어갔습니다. 간단하게 정리해보자면 오버로딩은 기존에 없는 새로운 메서드를 정의하는 것입니다. 오버라이딩은 기존의 상속받은 메서드의 내용을 변경하는 것입니다. 오버로딩은 개발자의 사용성을 개선해 줄 수 있는 '패턴' 이라는 점을 기억해두면 좋을 것 같습니다.

 

최근에 오픈채팅방에서도 동적 디스패치 와 관련된 질문이 올라왔었는데 마침 이번 발표 범위에 포함이 된 내용이여서 관련된 문제를 내보았습니다. 다들 어려워 하셨는데요 여러분들도 한 번 뭐가 나올지 생각해보시고 생각했던 답이 맞는지 직접 확인해보시면 좋을 것 같습니다.

첫번째 m1 과 두번째 m1 은 어떤 것을 출력할까요?
p.age와 p.getAge() 는 어떤것을 출력할까요?

 

추상클래스는 여러 클래스에 공통적으로 사용될 수 있는 부분을 뽑아서 생성합니다.

인터페이스는 spec의 정의하고 그것을 사용하는 곳에서 구현 (implements, 다른 말로 하자면 실현(realization)) 합니다.

 

static object는 gc의 대상인가

추가적으로 지난시간에 질문으로 들어왔던 "static object는 gc의 대상인가" 에 대한 답변을 정리해보았습니다.

 

자바 8부터는 permgen 영역이 삭제되고, static object도 Java Heap 영역으로 이동하여 GC의 영향을 받게 되었습니다. static object가 GC의 대상이 되는 경우는 더 이상 참조되지 않거나, 명시적으로 null이 대입되는 경우인데요, static object가 참조가 되지 않는 경우는 해당 static object를 로드한 클래스 로더가 언로드된 경우입니다. 클래스 로더는 JVM의 일부로, 클래스를 로드하고 참조하며, 대부분의 경우 내장 클래스 로더는 JVM이 종료될 때까지 살아있지만, 커스텀 클래스 로더는 사용자 구현에 따라 언로드될 수 있습니다.

 

한줄로 정리를 해보자면 일반적으로 static object가 gc의 대상이 되는 경우는 jvm이 종료되는 시점이라고 생각해볼 수 있겠습니다. (자세한 내용은 "Static Object는 GC 의 대상일까?" 에서 확인해볼 수 있습니다.)

 

TCP는 어떻게 순서를 보장할까?

지난시간에 TCP는 어떻게 순서를 보장할까 에 대한 질문이 나왔고 영록님께서 해당 부분에 대해서 이어서 준비를 하셔서 발표를 진행해주셨습니다.

 

 

TCP의 구조와 동작 과정에 대한 부분에 대해서 설명을 해주셨고

TCP 에서 사용되는 slide window 의 동작 방식에 대해서 토론하면서 설명을 진행하였습니다. window 방식을 처음 접하신 분들께 도움이 되셨을 것이라고 생각됩니다.

 

 

구체적인 내용은

에서 확인할 수 있습니다.

 

Java 버전별 주요 변경점과 JDK 배포판

요즘 Java 를 스터디에서 다루고 있다보니 Java 를 설명할 때 버전별로 바뀐 것에 대해서 이야기를 해야할 부분이 많아서 이번에 정환님 께서 버전 별 변경사항에 대해 간단하게 정리를 해주셨습니다. 해주시면서 JDK 배포판 별 차이에 대해서도 설명해 주셨습니다.

 

 

자바는 java 8 이전과 이후로 많이 갈리는 것 같은데요, 요즘은 정말 빠르게 변화하고 있는 것 같습니다. 어느새 java 22 까지 릴리즈가 되었네요. 점점 트렌드를 쫓아가고 있는 것으로 생각됩니다.

 

최근에 릴리즈된 Java 22 관련 변경사항을 정리한 글이 있어서 참고용으로 링크 올리면서 마무리 해봅니다.
https://www.baeldung.com/java-22-overview

 

알고리즘 문제 풀이

남는 시간에는 알고리즘 문제를 함께 풀어보았습니다.

 

알고리즘 문제를 처음 접해보시는 분들도 있으셔서 먼저 어떻게 진행되는지 방식 설명도 함께 진행하였습니다.

 

 

어떻게 풀었는지 설명도 하고 어떻게 더 개선할 수 있을지도 이야기 해보았습니다.

 


장소 대관

충남대학교 소프트웨어중심대학사업단 에서 도움을 주셔서 창의SW설계실 을 대여해주셨습니다.

 


 

K-DEVCON 대전 스터디에 참여하고 싶으신 분들은 언제든지 환영합니다.

 

저희는 단순히 진도를 나가는데 목적을 두는 것이 아니라 해당 주제에 대해 서로 공부해 온 것을 기반으로 이야기 하면서 스터디를 진행하고 있습니다. 모르는 부분은 질문하고, 자기가 알던 내용과 다르면 얼마든지 의견을 제시해도 좋습니다. 같이 더 좋은 것을 얻어가기 위해 함께 노력하고 있습니다.

 

서로서로 현업에서 있었던 일이나, 최근 있었던 이슈들에 대해서도 이야기 하고 있습니다.

 

오늘도 다들 파이팅입니다!