kenu
53k
2021-03-18 09:33:32
2
1926

자바 플랫폼의 현재


2002년 이렇게 복잡하게 짰던 기억이 났습니다.

이랬던 자바가 2021년 현재 어떤 상태인지 잘 얘기하는 글입니다. xguru님의 요약도 아래 퍼왔습니다.


The Modern Java Platform - 2021 Edition

https://jamesward.com/2021/03/16/the-modern-java-platform-2021-edition/


요약: by xguru https://news.hada.io/topic?id=3907

자바 플랫폼의 현재

- 3개의 Top-20 프로그래밍 언어 : Java, Scala, Kotlin

- 전문적이고 성숙한 개발도구 : IntelliJ IDEA/VS Code, Gradle/Maven/sbt

- 생산적인 프레임워크 : Spring Boot, Micronaut, Quarkus, Play, ZIO

- Reactive Request : R2DBC, sttp, Quill

- Reactive Event-Driven / Streaming : Akka, ZIO streams/Flink//ksqlDB/Spark

ㅤCommand Query Responsibility Segregation (CQRS), Event Sourcing (ES), Conflict-free Replicated Data Types (CRDTs)

- Containers : Dockerfile/Jib/Buildpacks, OpenJDK 기반 이미지들(AdoptOpenJDK), Distroless Java image

ㅤSpring Boot Containerization, Micronaut Containerization (Gradle | Maven), Quarkus Containerization

- Serverless 와 JVM 오버헤드 피하기 : GraalVM Native Image

- Fear, Uncertainty, Doubt, and Governance : OpenJDK는 멀티벤더/분산형 거버넌스 구조를 가진 정규 오픈소스 프로젝트임(대부분의 경우 다른 오픈소스 프로그래밍 환경들과 비슷)

- The Future : Java 에코시스템은 여러방향으로 혁신을 계속 하는 중. 언어측면에서 Java, Kotlin, Scala가 다른 방향으로 나아가고 있지만 효과는 어느정도 공유됨

ㅤ예를 들어

ㅤㅤ→ Scala의 패턴 매칭은 프로그래밍 언어들중 최고라서 이게 Kotlin 과 Java에 더 좋은 패턴 매칭을 유도하는데 도움이 되었음

ㅤㅤ→ JVM은 가비지 컬렉션 및 성능관련해서 엄청난 혁신을 보였고

ㅤㅤ→ Project Loom(JVM위에서 fiber 와 continuation)이 더 성숙해지면 Reactive Programming이 더 쉬워질 것

ㅤㅤ→ GraalVM은 놀라운 기술이고

ㅤㅤ→ Netty 는 이미 io_uring(완전 비동기식 Linux 시스템 호출) 지원 작업을 시작했음

ㅤㅤ→ CRDT 와 CQRS를 통한 분산 데이터가 Cloudstate 같은 프로젝트에서 모멘텀을 얻기 시작



0
  • 댓글 2

  • fender
    21k
    2021-03-18 10:44:14 작성 2021-03-18 10:48:53 수정됨

    제 생각에도 기술면에서만 놓고 보면 자바는 그 어느 때보다 지금이 괜찮은 상황인 것 같습니다. 그래서 자바가 다시 활력을 찾으려면 해답은 결국 기술 외적인 면에서 찾아야 하지 않나 싶습니다.

    본문에서 OpenJDK가 오픈소스로 개발된다는 사실이 "Fear, Uncertainty, Doubt, and Governance"를 해소하기에 충분한 것 처럼 언급되어 있지만 전 이 부분은 좀 다르게 생각합니다.

    같은 오픈소스라도 닷넷 계열 프로젝트들이 깃헙에서 얼마나 활발하게 개발되는지와 비교하면 그 차이를 알 수 있습니다.

    오라클이 적어도 마이크로소프트 만큼 오픈소스에 친화적인 태도를 보이고 오픈JDK 프로젝트도 닷넷처럼 깃헙에서 일반 개발자가 활발하게 토론과 패치에 참여할 수 있도록 바뀌지 않는한 자바를 둘러싼 FUD는 해소되지 않을 것이라고 봅니다.

    현 시점에서 자바의 문제는 한 마디로 말해서 "오픈소스에 적대적인 기업이 틀어쥐고 있는 별 쓸모없는 구닥다리 언어"란 (해외 기준) 일반의 인식을 뒤집어야 한다는 것입니다.

    이 중에서 '구닥다리 언어'라는 건 분명 오해가 맞고 본문에서 언급한 여러 기술 발전으로 해소될 수 있는 부분이겠습니다만, 나머지 두 가지는 그 보단 좀 더 구체적인 실체가 있는 내용입니다.

    무엇보다 자바를 일순위로 선택할 수 있는 분야가 극도로 줄어든 문제를 해소해야 합니다. 특히 데스크탑이나 게임, 인공지능 등의 분야에서 선듯 자바를 택하기 힘든 상황에 서버에서까지 지금 같은 도전이 계속된다면 자바의 미래가 밝다고 말하기 어려울 것입니다.

    그리고 오라클이 마이크로소프트 처럼 친오픈소스 기업으로 탈바꿈하거나, 아니면 자바/JVM이 오라클의 입김에서 벗어나서 순수하게 깃헙 등을 중심으로 한 오픈소스 커뮤니티의 힘 만으로 계속 발전할 수 있음을 증명해야 합니다.

    예를들어 파이썬의 경우 누가 새로운 구현체를 만든다고 해서 소송이 걸리거나 어느 날 갑자기 특정 버전의 구현체가 유료로 바뀌는 것을 걱정하지 않아도 됩니다.

    그리고 파이썬은 자바처럼 오라클이 광고를 해주지 않아도 파이썬 언어를 열정적으로 좋아하는 - 솔직히 파이썬을 싫어하는 입장에서 잘 이해는 안 갑니다만 - 수 많은 개발자들의 입소문을 통해 빠르게 확산되었지만, 자바의 경우 외국 커뮤니티를 돌아보면 열정적으로 혐오하는 사람은 꽤 있어도 반대의 경우는 정말 찾아보기 어렵습니다.

    물론 과거에도 자바는 엔터프라이즈 시장을 중심으로 발전하긴 했습니다만, 지금은 점점 '엔터프라이즈에서 강한 언어'가 아니라 '엔터프라이즈가 아니면 쓸모가 없는 언어'가 되어가는 것이 문제입니다. 그리고 이런 저런 기술환경의 변화로 인해 그 엔터프라이즈 시장조차 더 이상 자바나 닷넷이 독점할 수 없는 분위기로 변하고 있기도 합니다.

    한 마디로, 자바가 다시 활력을 찾으려면 사람들이 부담없이 배워서 간단한 데스크탑 어플이나 게임 등을 포함해서 원하는 걸 쉽게 만들 수 있는 환경을 만들어야 한다고 봅니다.

    또한 개발자들이 자바를 오라클의 제품이 아닌 자바 커뮤니티가 주도하는 오픈소스 프로젝트라고 인식할 수 있게 만들어야 자바의 하락세를 되돌리는 것이 가능성할 것이라고 생각합니다.

  • 별별별별별볇
    44
    2021-03-18 12:40:29 작성 2021-03-18 12:50:35 수정됨

    저 블로그가 뭔 말하려는지 정리가 잘 안되는데, 간단하게 요약하면,


    원래 위의 시퀀스다이어그램처럼 과거 2002년에 J2EE 전자 상거래 시스템에선  " 디커플링을 말도 안도 안되는 수준"까지 하면서 개발했는데, 현재는 Java 플랫폼에서 마이크로 서비스, 데이터 파이프 라인등의 여러가지 feature를 추가함으로써 요즘 트렌드에 맞게 편리하게 개발할 수 있다. 

     
    그래서 더 높은 수준의 granularity 레벨에서 개발하는 것이 가능하다. 그래서 생산성이 더 높고 편리하다. 이말하고 싶은건가. 뭔가가 조금 그렇네




  • 로그인을 하시면 댓글을 등록할 수 있습니다.