Java/자바 잡지식
자바 EE 란?
자바 EE 란 무엇인가 자바 EE 는 엔터프라이즈 애플리케이션을 배포하고 개발하기 위한 스펙의 모음이다. 일반적으로, 엔터프라이즈 앱이란 회사에서 사용하며, 서버에서 호스팅되고 있는 애플리케이션 소프트웨어를 말한다. 이 스펙은 서비스, 애플리케이션 프로그래밍 인터페이스 (API), 프로토콜을 기술한다. 자바 EE 의 핵심기술 자바 EE를 이루는 핵심 기술 13가지는 다음과 같다. JDBC JNDI EJBs RMI JSP Java servlets XML JMS Java IDL JTS JTA JavaMail JAF 자바 EE 프로덕트 제공자는 일반적으로 스펙에 있는 인터페이스를 구현하는 애플리케이션 서버, 웹서버, 데이터베이스 시스템 벤더들이다. 이 벤더들은 자바 EE 스펙의 구현을 경쟁한다. 회사가 자바 ..
클린 아키텍처 (by Robert C. Martin) 번역
클린 아키텍처 몇년간 다양한 아키텍처가 등장했다. Hexagonal Architecture Onion Architecture Screaming architecture DCI BCE 위 아키텍처의 핵심은 관심사의 분리이다. 소프트웨어의 계층을 나누며 관심사의 분리라는 목적을 달성하려 했다. 각각은 최소한 비즈니스 룰을 위한 계층 하나와 인터페이스를 위한 계층 하나를 가진다. 아키텍처가 갖는 보통의 규칙 프레임워크나 라이브러리에 독립적이어야 한다. 테스트가 가능해야 한다. ex) 비즈니스 로직은 UI, 데이터베이스, 웹서버와 같은 외부 요소 없이도 테스트 가능해야 한다. UI에 독립적이어야 한다. 웹 UI 로 작동하던 프로그램은 콘솔 UI로 바뀌어도 정상적으로 작동해야 한다. 데이터베이스에 독립적이어야 한다..
Test Double 이란?
Test Double Test Double 이란, 테스트를 위해 대역을 하는 스턴트맨 정도로 생각하면 된다. 대충 5가지의 Test Double 이 존재한다. Dummy Objects 테스트를 위해 파라미터로 넘겨지지만, 절대 사용되지는 않는 오브젝트를 말한다. Fake Objects 실제 구현도 존재하지만, 프로덕션에서 사용되지는 않는다. 인 메모리 데이터베이스가 좋은 예가 된다. Stubs (쓰다 남은 물건의) 토막, 꽁초, 몽당연필을 뜻한다. 진행중인 테스트가 의존하는 소프트웨어 컴포넌트의 동작을 흉내내는 프로그램이다. 정해진 답(canned answers) 을 반환한다. top-down approach 에서 사용된다. Spies 어떻게 호출되었는지를 기반으로 정보를 기록하는 Stubs 이다. 이메..
Gradle 에서 Plugins 의 역할은 무엇일까?
Gradle plugins 소개 그레이들의 코어에서 의도적으로 약간의 실용적인 자동화를 제공한다. plugins 를 추가함으로써 자바 코드 컴파일과 같은 유용한 기능들을 제공한다. plugins 는 새로운 태스크(ex. 자바 컴파일), 도메인 오브젝트(ex. SourceSet), 컨벤션(ex. 자바 소스는 src/main/java에 위치하게 함) 그리고 확장된 코어 오브젝트와 다른 플러그인들도 제공한다. 플러그인이 하는 일은? 프로젝트의 기능을 확장해준다. Gradle model 을 확장한다. ex. 설정 가능한 새로운 DSL 엘리먼트를 추가한다. 컨벤션에 따라 프로젝트를 설정한다. ex. 새로운 태스크를 추가하거나 실용적인 기본 값들을 설정해준다. 구체적인 설정정보를 적용한다. ex. 조직에서 사용하는..
자바의 synchronized 키워드 정복하기
주로 해결하려는 문제: 동시성 문제에서의 경쟁 상태 멀티 스레드 프로그래밍에서의 경쟁 상태를 해결하기 위해서 필요하다. 경쟁 상태란 여러 스레드가 순서에 영향을 받는 작업을 병렬적으로 할 때, 의도치 않은 결과가 나오는 것을 말한다. 비동기 프로그래밍에서 각 동작의 시작과 끝이 보장되지 않으면 실행/출력 결과가 일정하지 않을 수 있고 의도와 다른 결과물을 보여줄 수 있으며 심각한 버그까지 초래할 수 있다. ex) object.method() 는 Thread1 완벽히 수행을 끝낸 이후에 Thread2 가 수행해야 한다. 행위에 대한 Atomic 함이 보장되어야 한다. 보통 자바 프로그래밍에서 멀티 스레드 프로그래밍 코드를 작성해 볼 일은 잘 없다고 생각하지만, 엔터프라이즈 서버 환경을 경험해볼 일은 매우 ..
자바에서 주석 다는 방법: Javadoc 이란 무엇일까? (Feat. 위키피디아)
Javadoc 이란? 선 마이크로 시스템즈에서 개발한 문서 생성기이다. 자바 소스코드로 HTML 포맷의 API 문서를 생성한다. HTML 로 생성하는 이유는 하이퍼링크를 편하게 달기 위함이다. 컴파일 타임에는 모두 지워지니 성능 걱정은 할 필요 없다. 작성된 자바 코드를 잘 이해하고 유지보수 하기 위함이 목적이다. 역사 이전에는 소프트웨어에 대한 독립형 문서를 작성할 Technical writers 를 고용했는데, 문서와 소프트웨어의 싱크를 유지하는 것은 매우 어려운 일이었다. 그래서 문서 생성기인 Javadoc 이 쓰이게 되었다. 자바의 첫 릴리즈 이래로 Javadoc 은 계속 쓰였고, JDK의 새 릴리즈마다 업데이트 됐다. 다른 언어의 문서 시스템에서 @field 문법을 모방하였다. 기술적인 구조 J..