1P by neo 28일전 | favorite | 댓글 3개
  • Java를 위한 고성능 임베더블 Python 3 런타임
  • Java에서 직접 Python 패키지를 로드하고 사용할 수 있음
  • 최신 Python AI 및 데이터 과학 패키지와 호환 가능
  • Graal JIT 컴파일러를 통해 네이티브 코드 속도로 Python 실행 가능
  • Jython 사용자에게 업그레이드 경로 제공
  • Java에서 Python 스크립트를 사용하여 Java 클래스 및 프레임워크와 상호작용 가능
  • GraalVM Native Image를 사용하여 Python 애플리케이션을 단일 바이너리로 패키징 가능

GN⁺의 정리

  • GraalPy는 Java에서 Python을 고성능으로 실행할 수 있는 런타임을 제공함
  • Jython 사용자에게 현대적인 Python 기능을 사용할 수 있는 업그레이드 경로를 제공함
  • GraalVM의 폴리글랏 인터페이스를 통해 Python 데이터 과학 라이브러리를 Java 애플리케이션에 쉽게 통합할 수 있음
  • Python과 Java의 상호 운용성을 높여 개발자에게 유연성을 제공함
  • 비슷한 기능을 제공하는 프로젝트로는 Jython과 Py4J가 있음
Hacker News 의견
  • GraalPy와 JDK8을 비교한 벤치마크 결과를 공유함

    • JDK8이 GraalPython EE 22.3 Hotspot보다 약 2.4배 빠름
    • JDK8이 CPython 3.11보다 41배 빠름
    • GraalPython이 CPython보다 약 17배 빠르고, PyPy보다 약 2배 빠름
    • Graal Enterprise Edition (EE)이 Community Edition (CE)보다 약 1.31배 빠름
  • GraalVM을 사용해 큰 프로젝트를 실행하려 했으나 몇 가지 문제 발생

    • Maturin이 Graal 인터프리터를 지원하지 않아 Py03 패키지 사용 불가
    • uv가 실행되지 않으며, os 패키지에서 forkexecve가 누락됨
    • Graal이 인기 있는 라이브러리에 많은 패치를 적용해야 함
    • 큰 프로젝트에 Graal을 사용하는 것은 높은 위험성 때문에 어려움
  • GraalVM이 Java (또는 Scala) 함수를 브리지 없이 직접 호출할 수 있다면, Spark를 사용하는 프로그램에 유용할 것이라는 의견

  • Python의 흥미로운 점은 ML 툴체인, CUDA, Metal/MLX, pytorch, tensorflow, LLM 인코더/디코더 등과의 통합임

    • GraalVM이 이러한 코드들을 의미 있게 실행할 수 있는지 의문
  • Clojure에서 Java/Python 통합을 이미 구현한 사례가 있음

    • Chris Neurnberger와 libpython-clj 덕분에 가능
  • DuckDB는 현재 지원되지 않지만, Pandas와 matplotlib은 지원됨

    • DuckDB와 Polars가 지원된다면 많은 데이터 작업에 도움이 될 것이라는 의견
  • GraalPy가 Python 3.11을 타겟으로 한다는 것을 발견

    • GIL에 대한 언급은 없었음
    • Python 사용자라면 빠른 시작 링크를 클릭하지 말라는 경고
  • GraalPy의 사용 사례에 대한 의문 제기

    • 왜 GraalPy를 사용해야 하는지 이해하지 못하겠다는 의견
  • GraalPy가 GraalVM에서만 실행되어야 하는지, 다른 JVM 구현에서도 가능한지에 대한 질문

지금 하고 있는 프로젝트가 python numpy, pandas 로 구현한 것을 java 에서 해 달라는 넋 나간 프로젝트 입니다. 지금 처음부터 다 만들고 있죠. 말도 안되는 . GraalPy에서 pandas, numpy가 제대로 지원된다면 이 뻘짓을 안 할수 도 있겠네요. 그런데 window 환경에서는 visual studio 종속성이 있네요. c++컴파일 환경을 위해서요. 그리고 참 아이디어 좋고 유용한데 너무나 방대한 에코시스템을 어떻게 실패없이 완성할수 있을까. 좀 걱정도 되고 . 과연 안정적으로 믿고 사용할수 있게 될까 의심도 되고 그렇네요. 그렇게만 된다면 좋겠군요.

좀 더 살펴보니 제가 잘못 이해한 부분이 있었네요. gcc 나 vs 의 종속성은 native image 를 사용하는 경우에만 필요하네요.