Java9 에서 List, Set, Map 인터페이스에 불변 인스턴스를 생성할 수 있는 새로운 팩토리 메소드가 추가되었습니다.(별로 환영하고 싶지 않은) 이 팩토리 메소드는 복잡하지 않고 간결한 방법으로 collection 을 생성하기 위한 편리한 팩토리 메소드 입니다.과거Set set = new HashSet(); set.add("A"); set.add("B"); set.add("C"); set = Collections.unmodifiableSet(set); List list = new ArrayList(); list.add("A"); list.add("B"); list.add("C"); list = Collections.unmodifiableList(list); Map map = new HashMap..
Java8 이전 까지의 인터페이스는 variable/methods 에 대해서 다음 두 가지의 형태를 갖고 있었습니다.- Constant variables (상수) - Abstract methods (추상메소드)그래서 우리는 인터페이스 안에서 메소드를 구현할 수 없고 더 정밀한 기본 구현을 할 수 없었습니다. 하지만 Java8 부터 인터페이스는 다음과 같은 형태를 갖을 수 있게 되었습니다.- Constant variables - Abstract methods - Default methods (기본 메소드) - Static methods (정적 메소드)이제 기본 구현과 정적 메소드를 통해서 인터페이스 자체를 사용할 수 있게 되었습니다. (난 반댈세...)Java9 부터는 (이제 그만~!!) 다음 타입들이 늘..
출처 - https://www.tutorialspoint.com/java9/java9_module_system.htmJava 9 에서는 모듈이라고 불리는 새로운 프로그래밍 요소가 소개되었습니다. 모듈은 코드와 데이터와 구분 짓기 위한 자체 이름을 갖고 있는 self-describing 집합입니다.Feature모듈 요소들과 함께 다음 사항들이 강화되었습니다.- 링크 시간이라는 새로운 선택적 단계가 도입되었습니다. 이 단계는 컴파일 시간과 실행 시간 사이에 있으며 이 단계동안 jlink 도구를 사용하여 일련의 모듈을 어셈블 및 최적화하여 사용자 정의 런타임 이미지를 만들 수 있습니다.- javac, jlink, java 는 추가적인 옵션으로 특정 모듈의 경로를 설정하고 경로를 통해 모듈의 정의를 찾습니다.-..
PostgreSQL 의 timezone 을 보다가 jvm의 timezone 까지 확인할 일이 생겼다. 서버를 처음 구축할 당시 아무 생각없이 timezone 을 .profile 에TZ='Asia/Seoul'; export TZ설정을 추가하여 사용하고 있었는데 java 의 로그시간이 이상한 것을 보고 어느 부분을 수정해 주어야 하는지 찾아 보았다. 우선 date 명령어를 통해서 현재 시간이 맞지 않는 것을 확인했고 이것을 고치면 jvm 도 같이 고쳐질 것이라고 생각했다.1. /etc/localtime 은 어떤 시간대를 사용할 지 정해주는 파일로 사용해야 하는 파일은 /usr/share/zoneinfo/ 밑에 있는 폴더 안의 파일들을 사용하면 되는데 서울은 /usr/share/zoneinfo/Asia/Seo..
이 글은 tutorials point(https://www.tutorialspoint.com/java8)를 번역한 글입니다.JAVA 8 은 Java 프로그래밍 언어 개발의 주요한 릴리즈 버전으로 2014년 3월 18일에 초기 버전이 나왔습니다. Java 8 출시와 함께 Java 는 함수형 프로그래밍 지원, 새로운 Javascript engine, date time 을 정교하게 다루기 위한 APIs, 새로운 스트림 API 등을 제공하게 되었습니다.새로운 특징Lambda expression - 함수 처리 능력 Method references - 함수를 직접 호출하지 않고 이름으로 함수를 참조. 파라미터로 함수를 사용 Default method - interface 는 기본적인 method 의 구현체를 가질 ..
bitbucket.org 에서 repository 를 생성하면 왼쪽 메뉴 중에 Pipelines 이 있는 것을 볼 수 있다. 이 기능이 CI, CD 를 지원해 준다는 것을 알 수 있다.클릭해서 설명을 보면 무료계정일 경우 50분을 무료로 사용할 수 있는 것을 확인할 수 있다. 사용해보기 위해서 맨 하단의 Settings 로 이동한다.많은 메뉴 중에 PIPELINES 메뉴를 볼 수 있다.우선 Settings 를 클릭하면 pipelines 를 활성화 할 수 있는데 repository 에 push 가 될 때 마다 bitbucket-pipelines.yml 파일을 통해서 CI, CD 를 수행하게 된다.Deployments 메뉴는 각 환경 (Test, Staging, Production) 에서 사용 할 변수들을 ..
스타트업 개발 초기에는 로컬 개발환경을 도커를 사용하지 않고 간단한 임시 환경에서 개발을 시작 했다. 시간이 지나서 하나의 서비스를 오픈한 후 부터는 DB 사용부터 (개발DB 도 모두 같이 사용하기 때문에 맘데로 사용할 수 없기 때문에) 서비스를 올리고 테스트 하는 환경이 필요한 순간이 온다. 그래서 도커를 사용하여 간단한 로컬개발환경을 구축해 보려고 한다. 로컬개발환경을 도커로 만드는 것은 만들어야 하는 이유가 더 중요하기 때문에 아주 간단하고 빠르게 설치하고 지나갈 것이다. 1. Dockermac에서 docker 설치는 docker 사이트를 참고해서 다운받고 설치하면 된다. https://docs.docker.com/docker-for-mac/install/ docker 를 실행 시키고 우분투 이미지..