욱 연구소

슬기로운 개발생활

반응형

프로그래밍/Java 6

Mac OS에서 Java(temurin JDK) 설치하기

temurin JDK가 뭐야? Oracle이 Java 소유권을 가지면서 Java 유료화에 대한 논란이 있었다. (Java 유료화에 대한 논란은 구글링 해보면 알수 있다.) 논란과 함께 Open JDK 사용률이 증가하게 되었고 그러면서 등장된 여러 배포버전(구현체)이 존재하게 되었다. (배급사별 배포버전으로 Azul Zulu, AdoptOpenJDK, Amazon Corretto 등이 흔히들 쓰이는 것 같다.) 필자는 위 배포버전에서 AdoptOpenJDK를 선택했다. (AdoptOpenJDK는 여러 기업의 후원을 받아 개발자들이 운영하는 커뮤니티로 추후에도 유료화가 되지 않고 사용할 수 있을 거 같았다.) 그리고 해당 AdoptOpenJDK는 Eclipse에서 Adoptium 프로젝트를 진행함에 따라 D..

VO와 DTO 는 다르게 부르는 같은 말?

VO vs. DTO DTO와 VO는 분명히 다른 개념과 목적을 가지고 사용하는 객체 이지만 그것에 대한 구분 없이 혼동하여 사용하는 경우가 많다. 그의 원인으로는 일반적으로 ⌜Core J2EE Patterns: Best Practices and Design Strategies⌟ 책의 초판에서 데이터 전송용 객체를 VO로 표기를 했었고 2판에서는 해당 객체를 TO로 정정하여 표기를 하였다고 한다. 이로인하여 DTO와 VO를 혼동하게 된 것으로 보고 있다. 개인적으론 실질적으로 개발자들간에 협업이나 커뮤니케이션을 할때 단편적인 개념으로 이야기를 하다보니 각각 다르게 이해를 하고 있어 더욱이 혼동하고 혼용하여 사용하게 된 것 같다. 개념 정리하기 DTO(Data Transfer Object) 순수하게 값을 ..

Constant Interface

상수를 인터페이스로 사용하는 것은 Anti pattern이다. 인터페이스가 아닌 Final Class를 써야 한다. 상수 변수 사용시 import를 static으로 선언하면 클래스명을 생략하여 사용할 수 있다. /** * 클래스로 구현한 공통코드 상수 */ public final class CommonCode { private CommonCode() { throw new AssertionFailure(); } public static final String ERROR_CODE_A = "001"; public static final String ERROR_CODE_B = "002"; } import CommonCode ; /** * 공통코드 상수 클래스를 호출하는 방법1 */ public class Res..

junit4 vs. junit5 어노테이션 비교(기본)

Junit4 어노테이션과 junit5의 어노테이션 비교 이제부터라도 테스트 코드 작성에 신경을 쓰려고 한다. Junit4도 제대로 활용 못했지만 기왕 하는 거 최신버전인 Junit5를 사용하려고 한다. 기본적으로 사용했던 어노테이션 마저 이름이 변경되어 아래와 같이 소개한다. 같은 기능에 대응 되는 기본적인 어노테이션 Junit4 Junit5 설명 @Test @Test 기본적인 테스트 메서드에 붙이는 어노테이션으로 테스트 코드 실행을 위해 붙여준다 @BeforeClass @BeforeAll 여러개의 테스트 메서드가 작성되어있을 경우, 해당 테스트 메서드들이 실행 되기 전 최초 1번만 수행할 메서드에 해당 어노테이션을 붙여 사용한다 @AfterClass AfterAll 여러개의 테스트 메서드가 작성되어있을..

JAVA log4j와 log4j2 외부경로 설정

log4j란? log4j는 자바에서 상황에 맞게 레벨로 나누어 로그를 남길 수 있도록 도와주는 도구라고 할 수 있다. 자바 프로젝트를 *.jar 또는 *.war로 압축하여 사용하게 되는데, *.war의 경우 tomcat과 같은 WAS(Web Application Server)에 배포(또는 압축해제)하여 사용하게 되므로 압축이 해제된 경로를 통해 log4j파일 수정이 가능하다. 그러나 *.jar의 경우 압축을 해제하지 않고 사용하게 되어, log4j파일 수정이 불가하다. 오늘은 log4j설정 파일을 외부에서 즉 절대경로로 읽어오는 방법을 공유하고자 한다. log4j설정파일의 경우 대표적으로 *.properties와 *.xml 형식을 사용하게 된다. log4j.properties의 경우 // filePath..

Java 8기준 stream collect에서 unmodifiable객체 만들기

Java11이 LTS로 선정된지 꽤 시간이 지나 현재는 Java 15까지 릴리즈 되었다 (심지 Java16, 17이 개발이 진행중인듯 하다) 개발을 하면서 Java8 과 Java11을 섞어쓰는 시점이 요즘인거 같다. (Java11 쓰는게 빠른건 아닌거 같고 늦은건가 싶기도 하고..) 개발을 하면서 불변(unmodifiable)한 객체를 필요할 때 생성하게 되는데 Java11에서는 편하게 작성했던 소스가 Java8로 하려니 돌아가지 않아 확인을 하게 되었다. Stream 에서 종결 메서드인 collect()시에 unmodifiable한 객체를 만드는 방법에 대해 Java8과 Java11의 차이점을 알아보자 // Java11 class BlogTest { @Test void test() { List test..

반응형