요즘 알고리즘 문제를 코틀린으로 다시 풀어보고 있다.그동안은 거의 자바로만 풀었는데, 같은 문제를 코틀린으로 옮겨보면 문법 차이가 꽤 크게 느껴진다.특히 배열, 리스트 같은 자료구조를 다루는 방식이나 BFS, DFS를 구현하는 코드 패턴이 자바와 다르게 흘러간다.알고리즘을 풀 때 대표적인 유형을 살펴보면서 코틀린과 자바의 차이를 비교해보겠다.알고리즘 풀면서 자바와 코틀린이 다르게 느껴진 부분문제를 풀다 보니, 자바와 코틀린이 특히 이런 부분에서 다르게 느껴졌다.배열, 리스트 초기화 방식컬렉션 타입 선택 (List vs MutableList, IntArray vs Array)좌표나 상태를 표현할 때 Pair, data class 같은 걸 쓸 수 있는지반복문에서 인덱스를 다루는 방식입력 처리 스타일대략 이런..
Kotlin + Spring Boot ORM/DSL 선택기JPA, QueryDSL, Kotlin JDSL, JOOQ, MyBatis 공부 기록Kotlin으로 개인 프로젝트를 조금씩 만들어 보면서 자연스럽게 데이터 접근 방식을 어떻게 가져갈지 고민이 생겼다.회사에서는 아직 Java 8, Spring 2.x, MyBatis 조합을 쓰고 있고, 스프링부트도 사용하지 않는다.그래서 Kotlin, JPA, QueryDSL, Kotlin JDSL, JOOQ 같은 것들은 전부 개인 프로젝트에서 따로 설치해 보고 부딪혀 보면서 익히는 중이다.비슷한 상황에 있는 취준생이나 현업 개발자가 ORM이나 쿼리 DSL을 고를 때,이런 관점으로도 비교해 볼 수 있겠구나 정도만 가져가도 좋을 것 같다.JPA를 써 보면서 느낀 점JP..
🌱 Spring Boot에서 Kotlin vs JavaSpring Boot 기반 백엔드 개발을 하다 보면 언어 선택이 서비스 구조와 개발 방식에 큰 영향을 준다. Kotlin과 Java는 JVM 위에서 돌아간다는 공통점을 갖지만, 실제로 개발해 보면 느낌은 꽤 다르다. 아래는 실무에서 두 언어를 모두 사용해 보며 정리한 비교 내용이다.🔒 Null 안정성: 사소하지만 가장 큰 차이를 만드는 요소Kotlin을 사용하면서 가장 먼저 체감되는 점은 null 처리다.nullable 타입을 명확히 구분하고, 컴파일러가 위험한 부분을 먼저 잡아주기 때문에 런타임에서 갑자기 NPE가 터지는 일이 확실히 줄어든다.Kotlin이 null 안정성을 언어 차원에서 보장한다는 점은 여러 연구에서도 확인된다. 실제로 안드로이..
☕️ Java to Kotlin, 느낀점Java로 개발해온 시간이 길수록 Kotlin은 낯설게 느껴진다.하지만 막상 써보면 “이래서 사람들이 Kotlin을 쓰는구나” 싶을 만큼 편해진다.최근 프로젝트를 Kotlin으로 전환하며 체감한 변화들을 정리했다.Null-safe, 더 이상 NullPointerException 걱정이 없다Java에서는 아래처럼 null 체크를 매번 해줘야 했다.if (user != null && user.getName() != null) { System.out.println(user.getName());}Kotlin에서는 이렇게 쓴다.println(user?.name ?: "이름 없음")?. 와 ?: 만으로 조건문이 사라진다.Null-safe 문법이 처음엔 어색했지만 금방 손..
기술면접 질문(자바)Java의 특징을 설명하라.Java는 대표적인 객체지향 프로그래밍 언어로써 기본 자료형을 제외한 모든 요소들이 객체로 표현되고, 객체 지향 개념의 특징인 캡슐화, 상속, 다형성이 잘 적용된 언어입니다.장점으로썬 JVM 위에서 동작하기 때문에 운영체제에 독립적이고,가비지 컬렉터를 통한 자동적인 메모리 관리가 가능하다가 있습니다.단점으로썬 JVM 위에서 동작하기 때문에 실행 속도가 상대적으로 느리고,다중 상속이나 타입에 엄격하여 제약이 많다가 있습니다. JVM의 역할에 대해 설명하라.JVM은 스택 기반으로 동작하며, Java Byte Code를 OS에 맞게 해석해주는 역할을 하고 가비지 컬렉션을 통해 자동적인 메모리 관리를 해준다. 자바 애플리케이션의 구동 원리를 설명하라.자바 애플리케이..
MyBatis 특징 SQL 매핑 프레임워크 SQL문과 저장 프로시저(Stored Procedure)등의 매핑을 지원하는 퍼시스턴스 프레임워크(persistence framework) JDBC로 처리하는 상당 부분의 코드와 파라미터 설정 및 결과 처리를 대신해줌 Map 인터페이스 그리고 자바 POJO를 설정 데이터베이스와 매핑해서 사용 가능 XML과 Annotation 설정을 통해 사용할 수 있음 MyBatis 동작 구조 MyBatis는 SQL을 처리하고 Java 객체와 DB간의 매핑을 처리한다. MyBatis 구성 요소 MyBatis는 SqlSession 인터페이스를 통해 DB와 상호작용 한다. SqlSessionFactory SqlSession 객체를 생성하는 팩토리 클래스 런타임 도중 CRUD 처리 ..