JavaRush /Java Blog /Random-KO /2022년 Java 동향: JDK 18 및 19, Project Loom 및 데이터 메시

2022년 Java 동향: JDK 18 및 19, Project Loom 및 데이터 메시

Random-KO 그룹에 게시되었습니다
자, 2022년이 시작되었습니다. 대부분의 사람들은 여전히 ​​샴페인과 올리비에와 함께 새해 연휴를 보내고 있지만 우리는 Java 세계의 트렌드에 대해 이야기하겠습니다. 아마도 이는 귀하의 경력을 분석하고, 새로운 기술을 배우거나, 내년의 개발 계획을 세우는 데 도움이 될 것입니다. 2022년 Java 트렌드: JDK 18 및 19, Project Loom 및 데이터 메시 - 1Java 언어 전문가이자 강사인 Andrey Rodionov, EPAM의 솔루션 설계자이자 Devoxx 우크라이나 프로그램 위원회 책임자인 Oleg Tsal-Tsalko는 2022년과 가까운 미래에 Java를 기다리고 있는 상황에 대해 이야기했습니다.

2022년 Java의 전망은 어떻습니까?

2022년 Java 트렌드: JDK 18 및 19, Project Loom 및 데이터 메시 - 2올해 우리는 JDK 18(3월)과 JDK 19(9월)의 다음 두 버전이 출시될 것으로 예상합니다. JDK 18의 대부분의 Java 개발자에게 잠재적으로 흥미로운 점은 다음과 같습니다.
  • Python, Ruby, PHP의 유사한 미니 웹 서버와 유사하게 신속한 프로토타이핑 및 테스트에 사용할 수 있는 서블릿 컨테이너를 지원하지 않는 내장형 단순 웹 서버입니다.
  • 패턴 매칭은 계속해서 개선되고 있습니다.
JDK 19의 경우 이미 Early-Access 빌드가 있지만 여기에 포함될 예정인 공식 목록은 아직 없습니다. 저는 JDK 19가 적어도 최근에 초안 사양이 공개되고 최신 빌드가 JDK 19를 기반으로 하는 Project Loom의 첫 번째 안정적인 프로토타입을 포함할 것이라고 믿고 싶습니다. 아래에서 Project Loom에 대해 더 자세히 설명하겠습니다.

Java가 유일한 솔루션으로 남아 있는 영역은 무엇이며, Java가 선호되는 영역은 어디입니까?

안드레이 로디오노프:

다행히 어떤 영역에서도 Java의 대안이 없다고 말할 수는 없지만 Java를 엔터프라이즈 애플리케이션, 백엔드 및 마이크로서비스 개발을 위한 일종의 황금 수단으로 말할 수 있습니다. 또한 Amazon, Microsoft, Alibaba, Red Hat, Bellsoft(상트페테르부르크의 Oracle Development Center 사람들이 설립한) 등 여러 공급업체(Oracle 제외)의 다양한 JDK 배포판 수가 증가하고 있다는 점도 주목할 가치가 있습니다. 전체 배포판 세트는 여기에서 확인할 수 있습니다 . 2022년 Java 트렌드: JDK 18 및 19, Project Loom 및 데이터 메시 - 3항상 대안이 있지만 Java는 엔터프라이즈 개발의 백엔드에서 가장 많이 사용됩니다. 대부분의 대기업은 크고 복잡한 시스템을 위해 Java를 선택합니다. 이유는 동일합니다. 시장의 개발자 수와 전문 지식, 거대한 생태계, 강력한 JVM 플랫폼입니다.

Java와 비교하여 다른 jvm 언어, 특히 Kotlin의 전망은 어떻습니까?

안드레이 로디오노프:

어떤 JVM 언어가 널리 사용되는지 이해하려면 Spring, Micronaut, Vert.x에 대한 문서를 열고 코드 예제가 어떤 언어로 제공되는지 확인하세요. Java와 Kotlin이 일반적입니다. 대규모 프로젝트 전환이 Kotlin으로 이루어졌다고 말할 수는 없지만 백엔드에 대한 인기가 계속 높아지고 있으며 많은 프레임워크에서 Kotlin을 생태계에 포함시키려고 노력하고 있습니다. Scala의 경우 새 버전이 출시되고 있으며 ML, 데이터 처리 및 함수형 프로그래밍 패러다임이 더 편리한 곳에 더욱 적극적으로 사용됩니다.

올렉 찰-찰코:

다른 JVM 언어도 상당히 매력적이며 요즘에는 프로젝트에서 여러 프로그래밍 언어를 사용하는 것이 매우 일반적입니다. 새로운 JVM 언어가 Java를 대체할 수 없는 이유는 다음과 같습니다.
  • 모두가 그냥 가져가서 바꿀 정도로 멋지지는 않습니다.
  • Java와 동일한 세그먼트에서 사용됩니다.
  • Java는 조금씩 다른 언어의 장점을 흡수하여 더 좋아집니다.

릴리스 간격이 짧아지면 Java 품질이 저하됩니까?

올렉 찰-찰코:

나는 아니라고 생각한다. 적어도 이제는 빈번한 릴리스에서 더 긍정적인 점을 확인할 수 있습니다. 새로운 멋진 기능이 훨씬 더 자주 나타나는 것을 볼 수 있습니다. 이제 새로운 것이 언어에 나타나기까지 5년을 기다릴 필요가 없습니다. 물론 이제 기능이 작은 반복으로 나타나기 때문에 Java 8과 같은 거창한 릴리스를 기 대해서는 안됩니다.

개발자에게 특히 중요한 새 버전의 Java 기능이 있습니까?

올렉 찰-찰코:

최신 버전의 Java에는 패턴 일치, 봉인된 클래스 및 레코드와 같은 몇 가지 흥미로운 기능이 도입되었습니다. 나는 그들의 능력을 살펴 보는 것이 좋습니다. 물론 가장 진지하고 기대되는 기능은 Project Loom과 Project Valhalla 내에 계획되어 있지만, 이 프로젝트 내의 기능도 점진적으로 출시될 것이라고 생각합니다.

Spring 프레임워크: 다양한 요구에 맞게 생태계를 계속 확장할 예정인가요?

안드레이 로디오노프:

Spring Framework의 경우 Spring Cloud의 다양한 기능을 지원하고 Spring Boot를 향후 Spring Core의 일부로 포함될 예정인 Spring Native 프로젝트인 네이티브 바이너리로 컴파일하는 기능을 지원하는 데 중점을 두고 개발되었습니다. 이런 점에서 Spring은 리플렉션 및 동적 코드 생성을 적극적으로 사용하기 때문에 Micronaut 및 Quarkus에 비해 뒤처졌습니다. Spring Framework 6에 관해서는 Spring 6 and Beyond 보고서 Spring Framework 6의 새로운 기능을 살펴보시기 바랍니다. 조커 컨퍼런스(Oleg Dokuka 및 Alexey Nesterov)에서. 핵심은 JDK 17로의 전환, XML 구성 포기, setter를 통한 Autowire 포기, Kotlin 지원 추가 개발 및 Spring Fu 프로젝트입니다.

올렉 찰-찰코:

요즘 가장 인기있는 Java FW인 Spring은 손바닥을 포기하고 싶지 않습니다. 개발팀은 Spring 개발에 최선을 다할 것이라고 확신합니다. 봄은 점점 더 많은 틈새 시장을 채웁니다. 예를 들어 Spring은 Project Reactor를 사용하여 Reactive Streams/Reactive 프로그래밍 영역에서 많은 작업을 수행했습니다. 이제 그들은 유망해 보이는 RSoket 프로토콜을 홍보하고 있습니다.

Loom 프로젝트에 대해 알려주십시오. 그것이 무엇을 위한 것이며, 어떤 문제를 해결합니까?

안드레이 로디오노프:

Project Loom은 아마도 가장 흥미로운 혁신일 것입니다. 이는 전체 JVM 플랫폼과 JVM 위의 모든 언어에 대한 새로운 구조적 변화가 될 수 있습니다. Project Loom은 일반 개발자에게는 그다지 영향을 미치지 않을 수 있지만 멀티스레딩을 사용하는 전체 생태계, 라이브러리, 프레임워크 및 기타 JVM 언어에는 확실히 영향을 미칠 것입니다. Project Loom은 새로운 스레드 추상화, 즉 가상 스레드(코루틴과 유사)를 도입합니다. 이전에 Java 스레드가 운영 체제(OS) 스레드에 직접 연결되어 있었고 Java에서 새 스레드를 생성하면 새 OS 스레드가 생성된 경우 가상 스레드를 사용하면 이러한 일대일 관계가 깨집니다. 새 가상 스레드를 생성할 때 새 OS 스레드는 생성되지 않으며 소위 캐리어 스레드(OS 스레드 풀과 유사한 일종의) 중 하나가 재사용되어 직접 계산을 수행합니다. 따라서 여러 가상 스레드가 하나의 OS 스레드 위에서 실행될 수 있습니다. 컴퓨팅 작업의 경우 이 가상 스레드 모델은 아무런 이점을 제공하지 않으며 오히려 계산 속도를 늦추지만, HTTP 요청 처리, 데이터베이스 또는 마이크로서비스의 응답 대기와 같은 작업 차단의 경우 이 모델은 중요한 이점. 사실 현재 스레딩 모델에서는 Java 스레드를 차단/대기하면 OS 스레드가 유휴 상태가 됩니다. 이는 리소스 낭비였으며 더 많은 OS 스레드를 생성해야 했습니다. 가상 스레드 모델에서 가상 스레드를 차단/대기하면 가상 스레드가 실행 중이던 캐리어 스레드가 해제되고 다른 가상 스레드가 해당 스레드에서 실행됩니다. 이렇게 하면 OS 스레드가 보다 최적으로 사용되며 유사한 작업을 수행하는 데 필요한 스레드 수가 줄어듭니다. 따라서 라이브러리, 프레임워크 및 JVM 언어 제조업체는 가상 스레드에 맞게 코드를 조정해야 합니다. 따라서 대규모 재작성이 예정되어 있습니다. :) 가상 스레드 모델 외에도 스레드 오케스트레이션을 단순화하기 위한 소위 구조적 동시성이라는 새로운 API도 도입할 계획입니다. 예를 들어, 이제 Kotlin 코루틴과 Scala ZIO에서는 구조화된 동시성이 적극적으로 사용됩니다. 불행하게도 JDK 버전과 Project Loom의 출시 연도조차 아직 알려지지 않았습니다. 출시일에 대한 질문에 Java 플랫폼의 수석 설계자인 Brian Goetz는 "준비되면 준비될 것입니다."라는 철학적인 문구로 대답합니다. 그러므로 우리는 기다리고 있으며 Project Loom의 실험적인 빌드를 시도해 볼 수 있습니다 .

올렉 찰-찰코:

Loom은 OpenJDK와 Oracle 팀이 Java 및 JVM의 동시성 혁신(가상 스레드, 파이버 및 연속)을 위해 작업하는 대규모 프로젝트입니다. 대부분의 경우 이러한 기능은 점진적으로 출시될 것입니다. 현재 가상 스레드 지원을 위한 Early Access 빌드만 있습니다. 특히 가상 스레드에 대해 말하자면, 주요 목표는 일반 플랫폼 스레드와 동일한 의미를 지닌 수백만 개의 경량 스레드를 사용하여 Java의 다중 스레드 개발 모델을 단순화하는 것입니다. 내부적으로 이러한 스레드는 ForkJoinPool 내부에서 관리되고 플랫폼 스레드에서 재사용됩니다.

마이크로서비스, 클라우드 아키텍처, 블록체인, AI 등 글로벌 트렌드의 세계에서 Java 개발에 대한 예측은 무엇입니까?

안드레이 로디오노프:

글로벌 트렌드에 대해 이야기하면 크게 변하지 않았습니다. 이전과 마찬가지로 주요 추세는 계속해서 Kubernetes와 서비스 메시 형태의 주변 인프라입니다 . 데이터 메시는 분산된 데이터 소스와 스토리지를 관리하기 위한 일종의 추상화로 도 인기를 얻고 있습니다 .
코멘트
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION