java
Java
Java Java 란 High level, 객체 지향, 클래스 기반 프로그래밍 언어. Bytecode로 컴파일되어 어떤 환경의 JVM에서도 실행됨. 플랫폼에 종속적이지 않음. C / C++와 비슷한 문법을 가지고 있으나, 이들에 비해서 low level의 지원은 적음. OpenJDK는 GPL2 license이나 Oracle JDK는 유료. 에디션 Java는 서로 환경을 위해 다음과 같은 edition 존재.
Java SE: Standard edition으로, 핵심 기능 및 API를 제공. Jakarta EE: Enterprise edition으로, 기업에서 운영하는 대규모 분산 시스템 혹은 JSP 등 WAS에 필요한 기능을 제공.
read morejava
Gradle
Gradle Gradle 이란 Groovy (혹은 Kotlin) 언어를 기반으로 한 오픈 소스 빌드 자동화 도구. 빌드 스크립트를 Groovy (혹은 Kotlin) 기반의 domain specific language 사용. Ant, Maven과 같은 XML 기반의 이전 세대 빌드 도구들의 단점을 보완. 컴파일, 패키징, 테스트, 배포 등의 과정을 제어. Java C, C++, Python, JS 등 다양한 언어를 지원하며, 안드로이드 스튜디오의 공식 빌드 시스템. build.gradle이라는 파일을 통해 의존성 및 플러그인 등 빌드에 필요한 설정을 할 수 있음. 확장 가능한 여러 프로젝트를 빌드하는 것을 목적으로 작성됨.
read morejava
Jar
Jar Jar 이란 여러 자바 class 파일과 관련 메타데이터, 리소스들을 배포하기 위해 한 파일에 모은 패키지 파일 포맷. 실제로는 zip 파일 포맷으로 이루어진 압축 파일. Jar을 통해 자바 런타임이 전체 애플리케이션을 효율적으로 배포. Jar 파일들에 디지털 서명 가능. 이후 런타임이 서명이 유효한지 확인. Jar 파일 내용은 리버스 엔지니어링 방지를 위해 난독화 되기도 함. 실행 가능한 자바 프로그램은 jar 파일로 압축 가능하며, java -jar foo.jar과 같은 명령어를 통해 실행 가능. References https://en.
read morejava
Lombok
Lombok Lombok 이란 여러 가지 어노테이션을 기반으로 코드를 자동완성해 주는 java 라이브러리. Byte code로 컴파일하는 과정에서 어노테이션을 이용해 코드를 생성. 반복되는 코드 작성을 줄여주고, 생산성 향상 및 유지보수 용이. 직관성이 비교적 떨어질 수 있고, 러닝 커브 존재. 예시 @Getter, @Setter 클래스의 모든 변수 혹은 특정 변수에 대한 getter 및 setter를 자동완성해 줌. @AllArgsConstructor 모든 변수를 사용하는 생성자를 자동완성해 줌. @NoArgsConstructor 아무 변수도 사용하지 않는 생성자를 자동완성해 줌. @RequiredArgsConstructor 특정 변수만을 활용하는 생성자를 자동완성해 줌.
read morejava
Getter / Setter
Getter / Setter Getter란 객체 지향 언어에서 객체의 인스턴스 변수를 읽기 위해 사용하는 method. Public이며, 외부에서 데이터를 읽을 수 있게 함. Setter란 객체 지향 언어에서 객체의 인스턴스 변수를 수정하기 위해 사용하는 method. Public이며, 외부에서 데이터를 수정할 수 있게 함. 사용 이유 객체 외부에서 인스턴스 변수에 직접 접근할 수 있다면, 유효하지 않은 값이 들어 오는 등 오류가 발생 가능. 따라서 보통 인스턴스 변수는 private으로 설정됨. 하지만 인스턴스 변수를 변경하거나 조회하는 과정은 필요하기 때문에 public으로 설정된 method인 getter 과 setter를 이용하는 것.
read morejava
Mustache
Mustache Mustache란 다양한 언어를 합쳐서 사용할 수 있는 client-side template engine 별도의 로직이 존재하지 않음. 구문에 {를 사용하므로, 수염과 비슷하다는 의미에서 mustache라는 이름이 붙음. 문법 데이터는 json 형태로 주어지게 됨.
{{key}} 데이터의 key에 해당하는 value. {{{key}}} 데이터의 key에 해당하는, HTML을 포함하는 value. {{#key}} CONTENT {{/key}} 데이터의 key에 해당하는 값이 false나 empty list가 아닌 경우 CONTENT를 표시 만약 key가 list인 경우, list 안의 모든 원소가 CONTENT에서 열거됨. {{#key?}} CONTENT {{/key?}} 데이터의 key에 해당하는 값이 false나 list가 아닌 경우 CONTENT를 표시 {{^key}} CONTENT {{/key}} 데이터의 key에 해당하는 값이 false 혹은 empty list인 경우 CONTENT를 표시 {{!
read morejava
Template Engine
Template Engine Template Engine 이란 지정된 양식(템플릿)과 데이터를 합쳐서 문서를 출력하는 소프트웨어. 웹 템플릿 엔진의 경우 HTML 문서가 출력됨. 사용자에게 보이는 HTML 문서와 DB 로직을 분리해주는 역할. Server Side Template Engine DB에서 가져온 데이터를 미리 정의된 템플릿에 넣고 HTML 렌더링을 서버에서 수행. 이후 클라이언트에는 HTML을 전송. Client Side Template Engine 클라이언트에서 HTML 형태로 템플릿 엔진 코드를 작성함. 서버에서 데이터를 받아 오면, 템플릿 엔진이 이 데이터와 템플릿을 통해 HTML을 렌더링 해줌. 이벤트에 따라 화면이 계속 변해야 하지만, 서버 연결이 필요하지 않은 경우 템플릿 엔진이 화면을 변화시켜줌.
read morejava
JIT Compile
JIT Compile JIT Compile 이란 프로그램을 실행하는 중에 컴파일을 수행하는 기법. 정적 컴파일과 인터프리트를 혼합한 방식. 정적 컴파일: 프로그램 실행 전에 코드를 기계어로 변환하는 방법. 인터프리트: 프로그램 실행 중에 각 코드에 해당하는 기계어를 실행하는 방법. 주로 인터프리터 언어 구현에서 성능 향상을 목적으로 사용. 소스 코드가 아닌 byte code를 실행할 때 일반적으로 사용. 동작 방식 수행하기 전 byte code 컴파일러가 소스 코드를 byte code로 변환. Byte code를 읽으며 파일, 함수 등의 단위로 동적으로 기계어로 변환.
read morejava
Java compiler / JVM
Java compiler / JVM Java compiler란 자바 코드를 기계가 이해할 수 있는 언어로 바꾸는 byte code 컴파일러. .java 파일을 byte code인 .class 파일로 변환. Byte code는 OS가 이해할 수 있는 코드는 아니자만, JVM이 이해할 수 있음. Byte code의 각 명령어의 크기는 1 byte. JVM이란 Java Virtual Machine의 약자. Java byte code를 OS가 이해할 수 있는 기계어로 변환해주는 기계. JVM을 통해 java는 플랫폼, OS 독립적으로 수행 가능. JVM 구성요소 Class Loader: .
read morejava
DTO, DAO, VO
DTO, DAO, VO DAO Data Access Object 객체 지향 언어에서 DB에 접근하기 위해 사용하는 “객체” DB 접근 로직과 비즈니스 로직 간의 분리에 사용. DTO Data Transfer Object 객체 지향 언어에서 데이터를 전송하기 위해 사용하는 “객체” 별도의 로직을 가지지 않고, 값을 읽거나 쓰는 getter & setter 메소드만 가짐. ex) 데이터를 DTO에 넣고, 서버에 전달하면 DAO를 이용해 DB에 데이터를 삽입. VO Value Object 객체 지향 언어에서 값을 가지고 있는 객체. DTO와 달리 값을 변경할 수 없음.
read more