자바

· Java
람다란 무엇인가? 람다 표현식은 메서드로 전달할 수 있는 익명 함수를 단순화한 것이라고 할 수 있다. 람다라는 용어는 람다 미적분학 학계에서 개발한 시스템에서 유래했다. 람다 표현식에는 이름은 없지만 파라미터 리스트, 바디, 반환 형식, 발생할 수 있는 예외 리스트는 가질 수 있다. 람다의 특징을 하나씩 살펴보자. 익명 보통의 메서드와 달리 이름이 없으므로 익명이라 표현한다. 구현해야 할 코드에 대한 걱정거리가 줄어든다. 함수 람다는 메서드처럼 특정 클래스에 종속되지 않으므로 함수라고 부른다. 하지만 메서드처럼 파라미터 리스트, 바디, 반환 형식, 가능한 예외 리스트를 포함한다. 전달 람다 표현식을 메서드 인수로 전달하거나 변수로 저장할 수 있다. 간결성 익명 클래스처럼 많은 코드를 구현할 필요가 없다...
· Java
동작 파라미터화란? 우리가 어떤 상황에서 일을 하든 소비자 요구사항은 항상 바뀐다. 변화하는 요구사항은 소프트웨어 엔지니어링에서 피할 수 없는 문제다. 회사에서 매일 점심 메뉴를 정해야 하는데 매일 변하는 과장님의 입맛을 맞춰서 정해야 한다고 예를 들어보자. 월요일 - "주말에 과식을 했으니 칼로리가 적은 음식을 먹어야겠어" 화요일 - "어제는 칼로리가 적은 음식을 먹었으니 오늘은 푸짐한 음식을 먹고 싶어" 수요일 - "어제 퇴근하고 술을 먹어서 해장으로 국물이 있는 음식을 먹고 싶어" 목요일 - "스트레스를 받으니 매운 음식을 먹고 싶군" 금요일 - "오늘은 금요일이라 기뻐서 칼로리가 높은 음식을 먹을래!" 이렇게 자주 변화하는 요구사항에 동작 파라미터화(Behavior Parameterization)..
· Java
Java 패키지를 Github에 간단히 릴리즈 해 배포 후 다른 프로젝트에서 쉽게 사용할 수 있다. 나의 경우는 프로젝트마다 Message Queue를 사용하는데 큐를 보내고, 받는 페이로드를 공통으로 사용하고 있다. 보안이 중요하지 않은 코드는 릴리즈 해 사용하는것도 편리한 방법이 될 것 같다. 인텔리제이, Gradle 기준으로 정리하겠다. 일단 배포할 모듈을 생성한다. 예제를 찾다보면 maven plugin을 적용하면 된다고 하는데 Gradle 7버전에는 maven plugin이 지원되지 않는듯하다. Gradle 7버전 이상을 사용한다면 모듈을 생성 후 build.gradle에 maven-pulish 플러그인을 적용해준다. plugins { id 'java' } // maven-publish 추가 시..
· Java
메서드(Method)에 예외(Exception) 선언하기 메서드 선언부에 키워드 throws를 사용해서 메서드 내에서 발생할 수 있는 예외를 선언할 수 있다. 예외가 여러개일 경우 쉼표(,)로 구분한다. 이런 경우 예외가 처리된것이 아니고 단순히 전달만 하는 것이다. void method() throws Exception1, Exception2 { ... } 이렇게 예외를 선언하면 자손타입의 예외까지도 발생할 수 있다는 점을 주의해야 한다. 그렇게 때문에 try-catch문을 사용해 중간에 예외 처리가 되어야 한다. 오버라이딩할 때는 단순히 선언된 예외의 개수가 아니라 상속관계까지 고려해야 한다. // try-catch문을 사용하지 않았을때 public static void method1() throws..
· Apache Kafka
[Kafka] Local에서 Kafka 명령어 날리기 [Kafka] EC2 생성 후 접속, Kafka 설치 및 설정 AWS EC2 생성 후 Inbound rule 추가 1. AWS Console 로그인 후 EC2에 접속 2. EC2 인스턴스 생성 3. 키 페어 생성 4. Inbound rule 추가 Inbound rule은 필요한대로.. devbksheen.tistory.com 앞서 Local에서 여러가지 Kafka 명령어를 날려보았다. 이제는 Spring Boot에 연동해 실제 프로젝트에 적용해보자 Spring Boot에 Kafka를 연동 Java(11) Amazon Corretto JDK(11) Spring Boot(2.5.5) 1. Kafka 의존성 추가 dependencies { ... // re..
· Java
예외처리란? 정의 프로그램 실행 시 발생할 수 있는 예기치 못한 예외의 발생에 대한 코드를 작성하는 것 목적 예외처리의 목적은 예외 발생으로 인한 실행중이 프로그램의 갑작스런 비정상 종료를 막고, 정상적인 실행상태를 유지할 수 있도록 하는 것 프로그램 오류 컴파일 에러 컴파일 시 소스코드에 대한 오타나 잘못된 구문, 자료형 체크 등의 기본적인 문법 오류가 있을때 발생 런타임 에러 실행 시에 발생하는 에러 논리적 에러 실행은 되지만, 의도와 다르게 동작하는 것 자바에서는 실행 시 발생할 수 있는 프로그램 오류를 에러(error)와 예외(exception) 두 가지로 구분하였다. 에러(error) 프로그램 코드에 의해서 수습될 수 없는 심각한 오류 예외(exception) 프로그램 코드에 의해서 수습될 수 ..
· Java
인터페이스란? 인터페이스는 일종의 추상클래스(abstract class)이다. 추상클래스(abstract class)는 일반 메서드도 포함할 수 있지만 인터페이스는 오직 추상메서드와 상수만을 멤버로 가실 수 있다. 추상클래스(abstract class)는 부분적으로 완성된 미완성 설계도라고 한다면, 인터페이스는 밑그림만 그려져 있는 기본 설계도라고 생각하면 된다. 인터페이스 자체만으로 사용되기 보다는 다른 클래스를 작성하는데 도움을 줄 목적으로 작성된다. 인터페이스 제약사항 모든 멤버변수는 public static final 이어야 하며, 이를 생략할 수 있다. 모든 메서드는 public abstract 이어야 하며, 이를 생략 할 수 있다. 단, static 메서드와 디폴트 메서드는 예외 (JDK1.8..
· Java
추상클래스란? 클래스를 설계도에 비유한다면, 추상클래스는 미완성 설계도에 비유할 수 있다. 미완성이라는 것은 멤버의 개수에 관계된 것이 아니라 미완성 메서드(추상 메서드)를 포함하고 있다는 의미다. 추상클래스는 상속을 통해 자손클래스에 의해서만 완성할 수 있다. 추상클래스는 추상메서드를 포함하고 있다는 것을 제외하고는 일반클래스와 다르지 않다. 추상클래스를 상속받은 자손클래스에서는 추상클래스에서 선언된 추상메서드를 모두 구현해야 한다. 만약 하나라도 구현하지 않았을 경우 자손클래스도 동일한 추상클래스로 선언되어야 한다. abstract class Car { // 추상 클래스 boolean enginePower; String engineMode; abstract void engineOnOff(); abst..
· Java
다형성이란? 여러 가지 형태를 가질 수 있는 능력을 의미하며, 자바에서는 한 타입의 참조변수로 여러 타입의 객체를 참조할 수 있도록 함으로써 다형성을 프로그램적으로 구현 조상클래스 타입의 참조변수로 자손클래스의 인스턴스를 참조할 수 있다. 참조변수가 사용할 수 있는 멤버의 개수는 인스턴스의 멤버 개수보다 같거나 적어야 한다. class Car { String brand; String engine; int door; ... } class SportCar extends Car { SportCar(String brand, int door) { super(brand, "sport", door); } } Car car = new SportCar("Kia", 4); // 조상클래스 타입의 참조변수로 자손클래스 인스..
· Java
static - 클래스의, 공통적인 인스턴스변수는 하나의 클래스로부터 생성되었더라도 각기 다른 값을 유지하지만, 클래스변수(static멤버변수)는 모든 인스턴스가 공유하기 때문에 같은 값을 갖는다. static은 붙은 멤버변수와 메서드, 초기화 블럭은 인스턴스가 아닌 클래스에 관계된 것이기 때문에 인스턴스를 생성하지 않고도 사용할 수 있다. 인스턴스 메서드와 static 메서드의 근본적인 차이는 메서드 내에서 인스턴스 멤버를 사용하는가의 여부에 있다. 사용될 수 있는곳 : 메서드, 멤버변수, 초기화 블럭 final - 마지막의, 변경될 수 없는 변수에 사용되면 값을 변경할 수 없는 상수가 되며, 메서드에 사용되면 오버라이딩(overriding)을 할 수 없게 되고, 클래스에 사용되면 자신을 확장하는 자손..
beekei
'자바' 태그의 글 목록 (2 Page)