본문 바로가기

Dev Log/Java7

Modern Java In Action 정리 - 13 디폴트 메서드 자바8 이전에는 인터페이스에 새로운 메소드를 추가하게 된다면 해당 인터페이스를 implement하는 쪽에서 전부 compile error가 나곤 했다. 따라서 하나의 인터페이스를 정의하더라도 굉장히 고심해서 설계해야 했다. 하지만 요구사항은 쉽게 변하고 변경이 많아지기 때문에 이러한 문제는 어떻게든 계속 일어나게 된다. 자바8에서는 인터페이스에 static method 와 default method를 추가해서 이 문제를 해결하고자 했다. 인터페이스를 구현하는 클래스는 자동으로 추가된 디폴트 메서드를 상속받게 된다. default void sort(Comparator 2020. 7. 11.
Modern Java In Action 정리 - 12 새로운 날짜와 시간 API Date, Calendar java 1.0에서는 날짜를 표기하기 위해서 Date 클래스를 만들었다. java.util.Date는 문제가 많다. 특정 시점을 날짜가 아닌 밀리초 단위로 표현한다. 기준이 1900년이다. 1일은 1로 표기하고 1월은 0으로 표기한다. mutable하다 Date date = new Date(117, 8, 21); 를 출력하면 Thu Sep 21 00:00:00 CET 2017 라고 나오는데 2017년이 117로 써야 하고 9월인데 8로 써야 하고 CET (중앙유럽시간대)를 쓰니까 뭐 이거 불편한게 이만저만이 아니다. 그래서 java 1.1에서 java.util.Calendar를 만들었다. 이것도 문제가 많다. 여전히 달은 0부터 시작했다 mutable하다 LocalDate ja.. 2020. 7. 4.
Modern Java In Action 정리 - 11 null 대신 Optional 클래스 I call it my billion-dollar mistake. It was the invention of the null reference in 1965. At that time, I was designing the first comprehensive type system for references in an object oriented language(ALGOL W). My goal was to ensure that all use of references should be absolutely safe, with checking performed automatically by the compiler. But I couldn't resist the temptation to put in a null re.. 2020. 6. 27.
Modern Java In Action 정리 - 10장 람다를 이용한 도메인 전용 언어 도메인 전용 언어는 특정 비즈니스 도메인의 문제를 해결하려고 만든 언어다. 기존 자바 언어로 비즈니스 로직을 설명하는 것은 읽는 사람으로 하여금 이해하기 어려운 과정을 만들 수 있다. 코드로 이어지는 의사소통을 좀 더 원활하게 하기 위해서 자바가 담을 수 있는 여러가지 기능들을 이용해서 초심자도 쉽게 이해할 수 있는 코드를 만들기 위한 노력을 다루고 있다. DSL의 장단점 Strengths Weaknesses 간결함 가독성 유지보수성 높은 수준의 추상화 집중 관심사 분리 DSL설계의 어려움 개발비용 추가 우회 계층 새로 배워야 하는 언어 호스팅 언어의 한계 최신 자바 API의 작은 DSL 최신 자바는 람다와 메소드 참조가 생기면서 DSL을 활용하기 더욱 좋은 환경이 되었다. Collections.sort.. 2020. 6. 22.