공부
-
자바 instanceof공부/자바 2023. 7. 29. 22:08
" data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 instanceof 연산자에 대한 패턴 매칭 기능으로 향상시킨다. 패턴 매칭은 프로그램에서 일반적으로 사용되는 로직인 객체로부터 조건부로 구성 요소를 추출하는 작업을 보다 간결하고 안전하게 표현할 수 있다. 동기 거의 모든 프로그램은 특정 유형 또는 구조를 가진 표현식을 테스트하고, 그 상태의 구성 요소를 조건부로 추출하여 추가 처리하는 로직을 포함한다. if (obj instanceof String) { String s = (String) obj; ... } 여기에서 3가지 작업이 진행되는데 테스트, 변환, 새로운 로컬 변수 선언이다. 이는 여러가지 이유로 최적화 되지 않아 오류가 발생 할 수 있다. 이러한 해결책을 찾는 ..
-
외부함수와 메모리 API공부/자바 2023. 7. 29. 19:54
" data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 자바 런타임 외부의 코드와 데이터를 자바 프로그램과 상호운용하기 위해 JDK 14와 JDK 15에서 도입된 인큐베이팅 API가 개선되었다. 해당 API는 외부 함수(즉 JVM 외부의 코드)를 효율적으로 호출하고 외부 메모리에 안전하게 접근하도록 한다. 이를 통해 자바 프로그램이 네이티브 라이브러리를 호출하거나 네이티브 데이터를 처리하는 과정에서 발생 가능한 JNI(Java Native Interface)의 불안정성과 복잡성을 방지한다. 이 API는 다른 언어로 작성된 코드와 자바 사이의 상호작용을 개선하는 프로젝트 파나마(Project Panama)에서 개발되고 있다. 목표 편의성: Java Native Interface를 ..
-
switch를 위한 패턴 매칭공부/자바 2023. 7. 29. 18:27
개별 작업이 할당된 다양한 패턴을 테스트하는 switch 구문을 허용한다. 목표 기존의 switch 표현식과 문장이 변경 없이 컴파일 되고 동일한 의미로 실행될 수 있도록 switch 표현식과 문장의 표현력과 적용 가능성을 확장하기 위해, case 라벨에 패턴을 사용할 수 있도록 한다. 또한, 필요한 경우 switch의 기존 null 방어성을 완화시킨다. 두 가지 새로운 패턴 유형을 도입한다: 먼저, guarded patterns로 임의의 부울 표현식을 사용하여 패턴 매칭 로직을 더 정교하게 할 수 있다. 또한 괄호로 둘러싼 패턴을 도입하여 몇 가지 구문 분석 모호성을 해결한다. 기존의 switch 표현식과 문장이 case 라벨이 패턴인 경우와 기존 상수인 경우에 대해 동일한 방식으로 동작하도록 보장한다..
-
17 preview version 안되는 오류공부/자바 2023. 7. 29. 15:09
JDK 다음 버전 미리보기에 있는 switch문을 실행하려 보니 A problem occurred evaluating root project 'JDK17'. > No such property: VERSION_17_PREVIEW for class: org.gradle.api.JavaVersion 위와 같은 에러가 발생을 한다. build.gradle에 있는 JavaVersion.VERSION_17_PREVIEW에서 에러가 발생하는 것이다. 아래와 같이 수정하면 에러가 사라진다.
-
JDK 내부의 강력한 캡슐화공부/자바 2023. 7. 27. 23:33
" data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 JDK 9~16까지 단일 커맨드 라인 입력을 통해 가능했던 내부 구성 요소의 강력한 캡슐화 해제가 차단된다. 커맨드 라인 매개변수나 JAR manifest 파일의 속성을 이용하여 강력한 캡슐화를 해제하고자 하는 패키지 목록을 지정해야 한다. 목표 JDK의 보안 및 유지보수성을 지속적으로 개선한다. 개발자가 내부 요소 사용에서 표준 API 사용으로 마이그레이션하도록 권장하여 개발자와 사용자 모두 번거로움 없이 향후 Java 릴리즈로 업그레이드 할 수 있다. 동기 수년 동안 개발자는 JDK 내부 요소를 보안과 유지 관리성을 모두 손상시키는 방식으로 사용했다. Java 9에서는 내부 요소에 대한 접근을 제한하는 강력한 캡슐화를 제..
-
스프링부트 웹레이어에서 테스트공부/자바 2023. 7. 27. 22:57
" data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 간단한 Spring 애플리케이션을 만들고 JUnit으로 테스트한다. Spring Test와 Spring Boot 기능을 사용하여 Spring과 코드 사이의 상호작용을 테스트한다. 먼저 애플리케이션 컨텍스트가 성공적으로 로드되는 간단한 테스트로 시작하고, 이어서 Spring의 MockMvc를 사용하여 웹 레이어만을 테스트한다. Spring Initializr로 시작하기 https://start.spring.io 로 이동한다. 이 서비스는 애플리케이션에 필요한 모든 종속성을 가져오고 대부분의 설정을 자동으로 해준다. Gradle 또는 Maven 중에서 선택하고 사용하려는 언어를 선택한다. Dependencies를 클릭하고 Spr..
-
스프링 부트 3.0 이후 gradle 에러공부/자바 2023. 7. 27. 22:16
" data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 다음과 같이 could not resolve all files for configuration:classpath. required by: project: > org.springframework.boot:org.springframework.boot.gradle.pulgin:3.1.2 에러가 발생하였다. 찾아보니 3.0 이후 JDK 17 이상을 지원하는데 JDK gradle 파일 기본 설정이 17 미만일 때 오류 발생한다. 다음과 같이 Settings -> Build -> Build Tools -> Gradle 에 들어가 Gradle JVM을 17 이상으로 바꾸어 줘야 한다. HTML 삽입 미리보기할 수 없는 소스
-
JDK17공부/자바 2023. 7. 27. 00:08
JDK 17 JDK17은 23년 9월 JDK 21을 발표하기 전까지 현재 존재하는 LTS 버전 중 제일 최신 버전이다. 최소 8년 즉 29년 8월까지 성능, 안정성 및 보안 업데이트가 예정되어 있다. 지난 LTS 버전인 11이후로 발표된 JDK 12 ~ 16에 포함된 60개의 JEP 기능들을 포함하고, 추가로 JDK 17만의 새로운 14개의 기능들을 탑재하고 있다. 스프링 부트 3.0으로 넘어가면서 17이전의 JDK 17 이전 버전들로 실행이 불가능하다. JDK 17 변경사항 자바 언어 개선 사항 sealed class and interface: 다른 클래스나 인터페이스에 대한 확장 및 구현을 제한한다. 라이브러리 업데이트 및 개선 사항 항상 엄격한 부동 소수점 문법 복원: 1.2에서 예외사항을 채택하였..