java

    POJO, JavaBean, Entity, VO, DTO

    다양한 객체 디자인 POJO, JavaBean, Entity, VO, DTO 에 대해서 배워보자. POJO(Plain Old Java Object) 정의 특정 프레임워크에 대한 참조가 없는 간단한 유형 public class EmployeePojo { public String firstName; public String lastName; private LocalDate startDate; public EmployeePojo(String firstName, String lastName, LocalDate startDate) { this.firstName = firstName; this.lastName = lastName; this.startDate = startDate; } public String nam..

    Java Stream 기초

    Java Stream 기초 Stream 은 데이터 컬렉션 반복을 멋지게 처리하는 기능이다. Collection vs Stream Collection 의 주제는 데이터이고, Stream 은 계산이다. 컬렉션은 Iterator 와 같은 외부 반복자를 직접 이용해야하며, 스트림은 내부 반복자를 사용한다. Loop vs Stream Stream 의 장점 Stream 이 Loop 에 비해 갖는 장점이 무엇일까? 내가 생각했을때의 가장 큰 장점 중 하나는 표현력이 좋다는 것이다. 표현력이 좋다는 것은 가독성이 좋다는 것을 의미한다. // 내부 반복 사용 : WHAT 중심 Employee topDeveloper = employees.stream() .filter(employee -> "Developer".equals..

    자바 어노테이션

    Java Annotation 어노테이션은 Java SE 5 에서 Generics 와 함께 등장하였다. 어노테이션의 사전적 의미는 주석이지만, 자바 언어에서 사용하는 주석(//, /*, /**) 과는 다르다. 주석의 등장 배경 어노테이션의 사전적 의미인 주석의 등장 배경을 먼저 보자. 주석이 없던 시절에는, 소스 코드와 문서화가 별도로 진행되었다. 따라서, 소스 코드가 변경되면 그에 알맞은 문서를 찾아서 변경해줘야 했었다. 자고로 개발자는 귀찮은 것을 매우 싫어한다. 따라서, 소스 코드만 변경하고 문서를 변경하지 않는 일이 자주 발생하였고, 코드와 문서의 버전 불일치 문제를 해결하고자 탄생하게 되었다. 어노테이션의 등장 배경 어노테이션이 등장하기 전에는 프로그램 설정 파일들이 XML 형태로 작성되었다. 컴..

    자바 버전별 역사 및 특징

    자바 버전별 역사 및 특징 JDK 1.0a2 1995년 5월 23일 발표. 자바 언어 자체가 정식으로 발표된 날 이때의 명칭은 Oak JDK 1.0 1996년 1월 23일 발표 1.0.2 버전에서 이름이 Java 로 변경 JDK 1.1 1997년 2월 19일 발표 Inner Class, JavaBeans, RMI, Reflection, Calendar 유니코드 지원 등이 추가되었다. What is Java Beans 자바로 작성된 소프트웨어 컴포넌트를 지칭 Beans 규약 기본 생성자가 반드시 존재해야 한다. 모든 속성은 비공개이다. 속성에 접근하고 꺼내올 수 있는 getter, setter 메서드를 구성한다. Serializable 을 구현한다. What is RMI(Remote Method Invoc..

    다양한 자바 플랫폼(SE/EE/ME)

    다양한 자바 플랫폼 자바는 특정 구문과 스타일을 가진 고급 객체 지향 언어이다. 자바 플랫폼이란 자바 언어로 작성된 프로그램이 실행되는 특정한 환경을 의미한다. 자바는 총 4가지 플랫폼을 제공한다. Java SE(Standard Edition) Java EE(Enterprise Edition) Java ME(Micro Edition) Java FX 모든 자바 플랫폼은 JVM 과 API 로 구성된다. API 는 다른 소프트웨어 구성 요소 또는 응용 프로그램을 만드는 데 사용할 수 있는 소프트웨어 구성 요소 모음이다. Java SE Java SE(Standard Edition)는 Java 프로그래밍 언어의 핵심 기능을 제공한다. Java 프로그래밍 언어의 기본 유형 및 개체에서 네트워킹, 보안, 데이터베이스..

    JVM Archtiecture

    JVM Archtiecture 다양한 JVM 구현체 Execution of a Java Program 에서 자바는 플랫폼 독립적이며, JVM 은 플랫폼 종속적이라는 내용에 대해서 배웠다. 따라서, JVM 은 다양한 구현체 들이 존재한다. 예를들어 JPA 와 Hibernate 같은 경우를 생각하면 이해가 편한데, Oracle 에서 JVM 의 스펙과 표준을 정의하면, 공급업체 들이 JVM 을 구현하여 배포하게 된다. 이 공급업체를 Vendor 라고 한다. 즉, JVM 은 각 OS 환경에 맞게끔 여러가지 구현체가 존재한다고 보면된다. Hotspot JVM vs Open J9 JVM Hotspot JVM 은 가장 자주 사용되고, 검증이 잘된 JVM 이다. AdoptOpenJDK 에서는 HotSpot 과 Open..

    자바 프로그램 실행 과정

    Execution of Java Program 자바 프로그램 실행 과정 자바 프로그램이 실행되는 과정을 살펴보자. 프로그램(Program)이라는 의미를 정확히 모른다면, 해당 링크를 통해서 지식을 배울 수 있습니다. IDE(Ex. IntelliJ)를 사용하여 Program.java 코드를 작성한다. Java Compiler(javac) 가 자바 소스 코드를 참고하여 클래스 파일(Program.class)을 생성한다. 생성된 클래스 파일은 JVM 이 설치되어있는 환경이면 어디에서든지 실행 가능하다. JVM 은 바이트 코드를 Interpreter 를 사용하여 한 줄 씩 기계어로 번역한다. 따라서, 자바는 Compiler 와 Interpreter 를 사용한다는 것을 알 수 있다. 각각 어떤 특징이 있고, 자바..

    PatternMatchUtils 를 활용한 필터링

    PatternMatchUtils PatternMatchUtils 는 추상 클래스로 선언된 유틸 클래스이다. /** * Utility methods for simple pattern matching, in particular for * Spring's typical "xxx*", "*xxx" and "*xxx*" pattern styles. * * @author Juergen Hoeller * @since 2.0 */ public abstract class PatternMatchUtils { /** * Match a String against the given pattern, supporting the following simple * pattern styles: "xxx*", "*xxx", "*x..