728x90 백엔드개발45 [JAVA] Java7 multi-catch란? 코드 다이어트의 핵심 자바 개발을 하다 보면 여러 종류의 예외를 처리해야 할 때가 많습니다. Java 7 이전에는 각 예외마다 별도의 catch 블록을 작성해야 했기에 코드가 길어지고 가독성이 떨어지는 고질적인 문제가 있었습니다. 이를 해결하기 위해 등장한 혁신적인 기능이 바로 'multi-catch' 블록입니다. 오늘은 multi-catch가 왜 등장했는지, 어떻게 사용하는지, 그리고 사용 시 반드시 주의해야 할 기술적 제약사항은 무엇인지 전문적인 시각에서 심도 있게 분석해 보겠습니다.1. Multi-catch의 등장 배경과거에는 서로 다른 예외임에도 불구하고 예외 처리 로직(로그 기록, 알림 등)이 동일한 경우가 많았습니다. 개발자들은 어쩔 수 없이 동일한 코드를 복사해서 붙여넣거나, 아니면 모든 예외의 부모인 Excep.. 2026. 1. 20. [JAVA] finally 블록이 실행되지 않는 예외적인 4가지 시나리오 분석 자바 프로그래밍을 처음 배울 때 우리는 "finally 블록은 예외 발생 여부와 상관없이 무조건 실행된다"고 배웁니다. 하지만 시니어 개발자로 거듭나기 위해서는 이 '무조건'이라는 단어 뒤에 숨겨진 예외 상황들을 정확히 파악하고 있어야 합니다. 시스템의 안정성을 설계할 때 finally에만 의존했다가 자원이 해제되지 않는 치명적인 버그를 마주할 수 있기 때문입니다. 오늘 포스팅에서는 자바 가상 머신(JVM)의 동작 원리를 바탕으로, finally 블록이 실행되지 않는 아주 특별하고 구체적인 사례들을 정리해 보겠습니다.1. finally 블록의 일반적인 메커니즘일반적으로 finally는 리소스 반납(파일 클로즈, DB 연결 종료 등)을 보장하기 위해 사용됩니다. try 블록에서 return이 발생하더라도 .. 2026. 1. 20. [JAVA] 외부 라이브러리 없이 JSON/XML 파싱하기 : 표준 API의 숨겨진 힘 자바(Java) 프로젝트를 진행하다 보면 Jackson이나 GSON 같은 외부 라이브러리를 사용하는 것이 당연하게 느껴지곤 합니다. 하지만 보안상의 이유로 외부 라이브러리 반입이 제한된 환경이거나, 아주 가벼운 마이크로서비스를 구축해야 한다면 어떨까요? "순수 자바(Pure Java)만으로 데이터 파싱이 가능한가?"라는 질문에 대한 답은 "YES"입니다. 심지어 XML의 경우 자바 표준 스펙 내에 강력한 도구가 이미 포함되어 있습니다.1. XML 파싱: 자바 표준의 강력한 기본기 (JAXP)XML은 자바의 역사와 궤를 같이해왔습니다. 자바는 JAXP(Java API for XML Processing)를 통해 외부 라이브러리 없이도 DOM, SAX, StAX 세 가지 방식의 파싱을 완벽하게 지원합니다. 별.. 2026. 1. 20. [JAVA] PrintStream vs PrintWriter : 당신의 출력 코드가 전문적인지 확인하는 법 자바 개발자라면 System.out.println()을 수만 번은 사용해 보셨을 겁니다. 하지만 정작 System.out이 어떤 클래스인지, 그리고 실무 파일 출력이나 네트워크 통신에서 왜 PrintStream 대신 PrintWriter를 권장하는지 명확히 답할 수 있는 개발자는 의외로 많지 않습니다. 오늘은 출력 스트림의 양대 산맥인 두 클래스를 완벽히 해부해 보겠습니다.1. 뿌리부터 다른 설계: Byte vs Character가장 근본적인 차이는 데이터를 다루는 단위에 있습니다. 자바의 I/O 시스템은 크게 바이트 기반 스트림(InputStream/OutputStream)과 문자 기반 스트림(Reader/Writer)으로 나뉩니다.PrintStream: 바이트 출력 스트림(OutputStream)의 .. 2026. 1. 20. [JAVA] HashMap의 심층 작동 원리 : 성능 최적화와 내부 구조의 이해 자바 프로그래밍에서 데이터를 효율적으로 관리하기 위해 가장 빈번하게 사용되는 자료구조 중 하나가 바로 HashMap입니다. 단순히 put()과 get() 메서드를 사용하는 것을 넘어, 그 내부에서 어떤 알고리즘이 동작하고 어떻게 성능을 최적화하는지 이해하는 것은 고성능 애플리케이션 개발을 위한 필수적인 과정입니다. 오늘날의 복잡한 시스템 아키텍처에서 HashMap의 메커니즘을 정확히 파악하는 것이 왜 중요한지 심층적으로 살펴보겠습니다.1. HashMap의 근간: 해싱(Hashing)과 버킷(Bucket)HashMap은 기본적으로 해시 테이블(Hash Table) 자료구조를 기반으로 합니다. 데이터를 저장할 때 '키(Key)' 값을 해시 함수에 대입하여 '해시 코드(Hash Code)'를 생성하고, 이 코.. 2026. 1. 18. [JAVA] ArrayList vs LinkedList : 성능 최적화를 위한 완벽 가이드 자바 개발을 하다 보면 가장 빈번하게 사용하는 컬렉션이 바로 List 인터페이스입니다. 하지만 그 내부 구현체인 ArrayList와 LinkedList 중 무엇을 선택하느냐에 따라 애플리케이션의 응답 속도는 천차만별로 달라질 수 있습니다. 단순히 "둘 다 리스트니까 아무거나 쓰자"라는 생각은 대규모 데이터를 다룰 때 치명적인 성능 병목을 야기합니다. 이 글에서는 두 자료구조의 내부 메커니즘을 심도 있게 분석하고, 실무에서 어떤 상황에 어떤 리스트를 선택해야 하는지 명확한 기준을 제시합니다.1. 내부 구조의 근본적인 차이가. ArrayList: 연속적인 메모리의 힘ArrayList는 내부적으로 동적 배열(Dynamic Array)을 기반으로 합니다. 데이터들이 메모리상에 다닥다닥 붙어 있는 '연속적인 공간.. 2026. 1. 17. 이전 1 ··· 4 5 6 7 8 다음 728x90